Donc j'essaye d'écrire un petit script en python qui va différencier les entrées, et quand l'entrée appropriée est donnée, un int
, il donnera la réponse corrélative. Je sais qu'il y a un certain nombre de messages sur ce sujet qui sont similaires mais j'avais du mal à trouver ma réponse. Voici ce que j'ai.Nameerror: nom 'h' n'est pas défini
oktas = input("Oktas: ")
def sky_condition(oktas):
if isinstance(oktas, int) == True:
if oktas == 0:
print ("CLR")
elif oktas == 1 or oktas == 2:
print ("FEW")
elif oktas == 3 or oktas == 4:
print ("SCT")
elif oktas >= 5 and oktas <= 7:
print ("BKN")
elif oktas == 8:
print ("OVC")
elif oktas < 0 or oktas > 8:
raise ValueError("Oktas provided are above or below the allowed limits.")
elif isinstance(oktas, int) == False:
raise NameError("You suck at following instructions.")
skycondition(oktas)
Lorsque vous mettez dans un int
ou un str
(comme quelque chose dans « guillemets »), il traite tout comme il se doit. Toutefois, si je mets juste une lettre ou un mot sans guillemets, par exemple h, il déclenche l'erreur
NameError: name 'h' is not defined
Il produit l'erreur que je veux, mais pas comment je le voulais. Comment puis-je le coder afin qu'il soulève l'erreur comment je le veux?
Est-ce Python 2? Si c'est le cas, vous devriez utiliser 'raw_input' au lieu de' input', puis essayer de convertir en entier en utilisant int (oktas) '. (aussi, ajoutez la balise 'python-2.x' car il s'agit d'une zone où le comportement est différent de celui de Python 3) – Aurora0001
' isinstance' renvoie déjà une valeur booléenne; il n'est pas nécessaire de vérifier si elle est égale à une autre valeur booléenne pour générer une * troisième * valeur booléenne. – chepner
Voir les nuances de 'input' (qui semble être votre problème) dans cet autre [stackoverflow réponse] (http: // stackoverflow.com/a/15129556/5847976) – jadsq