2014-06-23 3 views
1

J'ai cette fonction:Appel Fonction suivante: Python

def abandoned_station(): 
print """ 
..... 
""" 

    next = raw_input(prompt) 

    if next == "store room" or "Store Room" or "Store room": 
     store_room() 
    elif next == "control room" or "Control Room" or "Control room": 
     control_room() 
    elif next == "Look" or "look": 
     abandoned_station 
    else: 
     print "Sorry, I do not understand that command." 

Mais quand je entrée « Control Room » à l'invite, il va à la fonction store_room. Si j'entre quelque chose d'autre, cela revient à la fonction d'origine de abandoned_station - il ne dit même pas qu'il ne comprend pas. Est-ce que j'ai créé une boucle ici que j'ai manquée?

Merci d'avance.

+0

ne pas utiliser 'next' comme nom de variable,' 'next' est un builtin_function 'en python. –

+0

Que devrais-je utiliser comme nom de variable? – JoelSolo

+0

tout ce qui ne fait pas l'ombre d'un python intégré ou tapez peut-être quelque chose comme 'user_input'. Vous pouvez utiliser 'if user_input.lower() ==" store room "' au lieu d'utiliser toutes les instructions 'or'. –

Répondre

0

Si vous faites vos comparaisons comme ça:

if next == "store room" or "Store Room" or "Store room": 

Qu'est-ce que cela signifie vraiment est

if (next == "store room") or ("Store Room") or ("Store room"): 

Cela signifie, nature Pythons dynamique évalue la valeur booléenne d'une chaîne, ce qui est vrai à moins qu'il est vide. Vous devez comparer chaque article avec la prochaine:

if (next == "store room") or (next == "Store Room") or (next == "Store room"): 

Pour citer la documentation Python:

Dans le cadre des opérations booléennes, et aussi quand les expressions sont utilisé par les instructions de contrôle de flux, les valeurs suivantes sont interprétés comme faux: Faux, Aucun, zéro numérique de tous les types, et les chaînes vides et les conteneurs (y compris les chaînes, tuples, listes, dictionnaires, ensembles et frozensets). Toutes les autres valeurs sont interprétées comme vraies. (Voir la non nulle() méthode spéciale pour un moyen de changer cela.)

Source: Python doc

+1

De plus, OP doit appeler * '' abandoned_station' pour la commande 'look'. – kindall

Questions connexes