2010-02-10 4 views
6

Actuellement, je suis en train de faire ceComment entrer un nombre entier de l'utilisateur?

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

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

mais source et tuples de chaîne deviennent cibles dans ce cas avec un \ n à la fin

Répondre

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

Comment l'utilisateur donne maintenant entrée. J'ai essayé ... ça ne 4,0 fonctionne pas – Bruce

+0

je reçois le output- Entrez la source 0,4 Entrez cible 3,2 ('0', '4') ('3', '2') – Bruce

+0

Ah, j'ai légèrement modifié ma réponse après. Comparez ce que vous avez avec ce que j'ai écrit. –

1

Si vous voulez que l'utilisateur soit invité deux fois, 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)]) 

Ceci est probablement moins pythonique, mais plus didactique ...

+0

la source et la cible sont elles-mêmes des tuples. Nous pouvons utiliser int() sur les tuples. – Bruce

+0

Désolé, la sortie souhaitée n'est pas claire. Quoi qu'il en soit, string.strip() et int() devraient vous permettre d'obtenir exactement ce dont vous avez besoin, qu'il s'agisse de deux tuples d'un seul entier, ou d'un seul tuple avec les valeurs source et cible. – mjv

5

avère que int fait un très bon travail de décapage des espaces, donc il n'y a pas besoin d'utiliser strip

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

Par exemple:

>>> tuple(map(int,"3,4".split(','))) 
(3, 4) 
>>> tuple(map(int," 1 , 2 ".split(','))) 
(1, 2) 
Questions connexes