2010-02-10 12 views
6

Actualmente estoy haciendo esto¿Cómo ingresar una tupla de enteros del usuario?

print 'Enter source' 
source = tuple(sys.stdin.readline()) 

print 'Enter target' 
target = tuple(sys.stdin.readline()) 

pero de origen y destino convertido en tuplas de cadena en este caso con un \ n al final

Respuesta

11
tuple(int(x.strip()) for x in raw_input().split(',')) 
+0

¿Cómo debe dar al usuario la entrada ahora. me trataron 4,0 ... no funciona – Bruce

+0

consigo el output- Introduzca fuente 0,4 entrar valor 3,2 ('0', '4') ('3', '2') – Bruce

+0

Ah, modifiqué mi respuesta un poco después. Compara lo que tienes con lo que escribí. –

1

Si aún desea que el usuario solicitará dos veces, etc.

print 'Enter source' 
source = sys.stdin.readline().strip() #strip removes the \n 

print 'Enter target' 
target = sys.stdin.readline().strip() 

myTuple = tuple([int(source), int(target)]) 

Ésta es probablemente menos Pythonic, pero más didáctico ...

+0

origen y de destino son en sí mismas tuplas. Podemos usar int() en tuplas. – Bruce

+0

Lo sentimos, el resultado deseado no está claro. En cualquier caso, la string.strip() y el int() deben permitir obtener exactamente lo que necesita, ya sea dos tuplas de un único entero cada uno, o una tupla con los valores de origen y de destino. – mjv

5

Resulta que int hace un muy buen trabajo de despojar a los espacios en blanco, así que no hay necesidad de utilizar strip

tuple(map(int,raw_input().split(','))) 

Por ejemplo:

>>> tuple(map(int,"3,4".split(','))) 
(3, 4) 
>>> tuple(map(int," 1 , 2 ".split(','))) 
(1, 2) 
Cuestiones relacionadas