2015-11-17 5 views
-4
def testNUM(a): 
    isNum == False 
    while (isNum == False): 
     try: 
      int(a) 
     except ValueError: 
      a = raw_input("try again>>") 
      isNum = False 
     except not ValueError: 
      isNum = True 

Je sais que except not ValuError: est incorrect. Ma question est comment faire une déclaration "si aucune erreur de valeur".
En d'autres termes, faites une boucle jusqu'à ce que raw_input soit égal à un nombre.Comment faire une boucle jusqu'à ce que l'entrée soit égale à un nombre?

+3

Qu'est-ce que le titre a à voir avec cette question? –

+2

Supprimez simplement la deuxième instruction 'except' et remplacez-la par une instruction' else': voir par ex. https://docs.python.org/2/tutorial/errors.html – DilithiumMatrix

Répondre

0

De toute évidence, nous n'avons qu'une partie de votre code. Ce que vous voulez vraiment utiliser est la syntaxe try:except:else:.

isNum = False # I'm assuming you have isNum for a reason that I can't see in your code 
while not isNum: # tests isNum; this loop won't run if isNum... isInt might be more accurate 
    a = raw_input("whatever") 
    try: # try something 
     int(a) 
    except: # if an exception is raised in "try" 
     pass 
    else: # if no exception is raised in "try" 
     isNum = True 
+0

S'il vous plaît envisager d'éditer votre message pour ajouter plus d'explications sur ce que fait votre code et pourquoi il va résoudre le problème. Une réponse qui contient pour la plupart du code (même si cela fonctionne) ne permet généralement pas au PO de comprendre son problème. Notez que c'est aussi une solution trop verbeuse, vous devriez jeter un oeil à la copie liée à ci-dessus. – SuperBiasedMan

0

try...except est pas comme if...then. Ecrire le code comme s'il n'y aura pas d'erreurs et d'ajouter except blocs pour traiter des erreurs qui se produisent:

def testNUM(a): 
     isNum == False 
     while (isNum == False): 
      try: 
       int(a) 
       isNum = True 
      except ValueError: 
       a = raw_input("try again>>")