2015-12-01 1 views
0

J'ai regardé sur stackoverflow pour résoudre mon problème mais de toutes les explications sur les boucles et les contrôles, je ne comprends pas pourquoi mon code ne fonctionne pas. Donc je veux construire un dictionnaire (totalement nouveau pour Python btw) et j'ai lu que je peux aussi vérifier si l'entrée est dans le module dicitonary mais ce n'est en fait pas ce que je veux faire ici. Je veux juste voir si raw_input contient au moins un nombre dans la chaîne (pas si la chaîne contient seulement des nombres) et si la longueur de la chaîne d'entrée est au moins 2. Si l'entrée réussit ces contrôles, elle devrait continuer (le reste de ce dictionnaire viendra plus tard, pour l'instant je veux seulement comprendre ce que j'ai mal fait avec mon chèque) Voici mon code, l'aide serait très appréciée!Check raw_input pour le dictionnaire

def check(): 
    if any(char.isdigit() for char in original): 
     print ("Please avoid entering numbers. Try a word!") 
     enter_word() 
    elif len(original)<1: 
     print ("Oops, you didn't enter anything. Try again!") 
     enter_word() 

    else: 
     print ("Alright, trying to translate:") 
     print ("%s") %(original) 

def enter_word(): 
    original = raw_input("Enter a word:").lower() 
    check() 

enter_word() 

Edit: Fonctionne maintenant parfaitement avec le code suivant:

def check(original): 
    if any(char.isdigit() for char in original): 
     print "Please avoid entering numbers. Try a word!" 
     enter_word() 
    elif len(original) < 1: 
     print "Oops, you didn't enter anything. Try again!" 
     enter_word() 
    else: 
     print "Alright, trying to translate:" 
     print "{}".format(original) 

def enter_word(): 
    original = raw_input("Enter a word:").lower() 
    check(original) 

enter_word() 

Répondre

0

Vous devez passer l'entrée original à votre fonction check():

def check(original): 
    if any(char.isdigit() for char in original): 
     print("Please avoid entering numbers. Try a word!") 
     enter_word() 
    elif len(original) < 1: 
     print("Oops, you didn't enter anything. Try again!") 
     enter_word() 
    else: 
     print("Alright, trying to translate:") 
     print("{}".format(original)) 

def enter_word(): 
    original = input("Enter a word:").lower() 
    check(original) 

enter_word() 

En plus de cela, vous aviez quelques erreurs de syntaxe dans votre code. Puisque vous avez utilisé print() au lieu de print, je suppose que vous utilisez Python3. Cependant, pour lire l'entrée de l'utilisateur, vous avez utilisé raw_input(), ce qui était la manière de faire dans Python2 et est devenu input() dans Python3. J'ai réparé ceci. Une autre chose que j'ai corrigé était le formatage des chaînes de l'instruction print() dans la branche else. Vous pourriez jeter un oeil à la string format mini-language.

+0

Merci beaucoup! J'utilise en fait Python 2.7 donc j'ai révisé un peu votre code. Cependant, la condition 'elif' ne fonctionne pas! – RipFive