2017-05-05 1 views
1

J'apprends les fonctions de Python 2.7.x et l'une des suggestions du livre que j'utilise est de solliciter l'entrée d'un utilisateur pour obtenir des valeurs pour le scénario. Les conseils sur la façon d'utiliser raw_input dans une fonction est la suivante:Utilisation de int() pour convertir l'entrée d'un utilisateur à partir de raw_input()

You need to use int() to convert what you get from raw_input()

Je ne sais pas comment utiliser encore int(). Voilà ce que je l'ai essayé jusqu'à présent:

def cheeses_and_crackers(cheeses, crackers): 
    print "You have %d types of cheeses." % cheeses 
    print "You have %d types of crackers." % crackers 
    print "That is a lot of cheese and crackers!\n" 

print "How many cheeses do you have?" 
cheeses1 = raw_input("> ") 
int(cheeses1) 

print "How many types of crackers do you have?" 
crackers1 = raw_input("> ") 
int(crackers1) 

cheeses_and_crackers(cheeses1, crackers1) 

L'erreur que je reçois lorsque je tente exécuter c'est comme suit:

TypeError: %d format: a number is required, not str

Je devine comment utiliser int() donc je vous en serais reconnaissant certains aider avec la syntaxe de base aussi.

+1

'cheeses1 = int (raw_input (">"))' –

+0

Vous devez stocker après l'appel 'int()'. Comme 'fromages1 = int (fromages1)' – kuro

+0

Vous pouvez utiliser 'int (raw_input ("> "))' de cette façon votre imput est converti en int immédiatement. Vous devez également penser à l'utilisateur ne donnant pas un bon fromat, c'est-à-dire une chaîne au lieu d'un int alors utilisez un try/catch – Ludisposed

Répondre

0

int ne mute pas l'entrée de l'utilisateur (une chaîne, qui est en fait immuable), mais construit un entier, puis le renvoie.

Puisque vous n'attribuez aucun nom à la valeur de retour, il est perdu.

Démo:

>>> user_input = raw_input('input integer > ') 
input integer > 5 
>>> type(user_input) 
<type 'str'> 
>>> input_as_int = int(user_input) 
>>> input_as_int 
5 
>>> type(input_as_int) 
<type 'int'> 
>>> type(user_input) # no change here 
<type 'str'>