2014-09-16 9 views
0

J'expérimente avec raw_input et cela fonctionne correctement sauf pour ma première instruction if et mon instruction else. Chaque fois que j'exécute le code et réponds à la 2ème question avec un raw_input listé après 'League' dans la première instruction if, il renvoie à la fois l'impression du 1er if et celle de l'autre quand il ne doit imprimer que le if. Une idée de ce qui ne va pas?Instructions conditionnelles avec plusieurs instructions if (implicite raw_input)

name = raw_input('What is your name?\n') 
game = raw_input('\nWhat MOBA do you play/have played? \n(The answer ' \ 
    'must be case sensitive i.e. LoL for League and DoTA for y\'know the whole darn thing '\ 
    'is too '\ 
    'darn long to say even though I typed a lot more than the name)\n') 

if game in ('League' , 'League of Legends' , 'LoL'): 
    print '\nYou go girl! ' 
if game in ('DoTA' , 'DoTA 2' , 'DoTA2'): 
    print '\nThat\'s cool and all but........ Go play League you dang noob. ' 
else: 
    print '\nAre you kidding me? You play %s? I\'m severely disappointed in you %s. You ' \ 
     'should at least be playing ' \ 
     'one of these popular games. \nShame, shame, shame. Go install one. ' % (game, name) 
+0

Au lieu du second 'if', utilisez' elif' – Kamehameha

Répondre

0

vous pouvez toujours utiliser if pour la première condition, elif pour un certain nombre d'autres conditionals (si l'entrée est dans la deuxième liste dans votre instance) et else si l'entrée est pas dans l'une de ces listes, votre retrait est aussi un peu foiré, imbriquer si les déclarations les unes dans les autres exécutera uniquement le conditionnel imbriqué si la première déclaration est vraie, je vous recommande également d'utiliser la méthode string.lower() sur votre entrée d'utilisateurs afin de ne pas avoir à demander à l'utilisateur de Type d'entrée sensible à la casse et les variables utiliser pour stocker ces listes afin que vous puissiez les réutiliser ailleurs dans votre code..something comme ceci:

name = raw_input('What is your name?\n') 
game = (raw_input('\nWhat MOBA do you play/have played?')).lower() 

awesomeGames=['league' , 'league of legends' , 'lol'] 
coolGames=['dota' , 'dota 2' , 'dota2'] 
if game in awesomeGames: 
    print '\nYou go girl! ' 
elif game in coolGames: 
    print '\nThat\'s cool and all but........ Go play League you dang noob. ' 
else: 
    print '\nAre you kidding me? You play %s? I\'m severely disappointed in you %s. You ' \ 
    'should at least be playing ' \ 
    'one of these popular games. \nShame, shame, shame. Go install one. ' % (game, name) 
+0

Merci pour l'explication. Il est plus logique de ne pas tenir compte de la casse et le code fonctionne mieux avec elif. Je suis toujours confus avec if. Merci pour l'entrée –

0

Le niveau d'indentation est incorrect. Passez un espace supplémentaire pour la seconde instruction if. ou 1 espace de moins et elif au lieu de la seconde si.

0

Remplacez la deuxième condition if par elif. elif peut être utilisé autant de fois que vous le souhaitez jusqu'à ce que la condition corresponde à else (ce qui est comme l'instruction par défaut lorsque les autres conditions ont échoué)

Questions connexes