def user_input():
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
if x in "char":
user_choice = "Charizard"
elif x in "blast":
user_choice = "Blastoise"
elif x in "ven":
user_choice = "Venusaur"
return user_choice
user_input()
print(user_choice)
erorr = NameError: name 'user_choice' is not definedI want to use user_choice later on.
6 Réponses :
Vous l'avez essentiellement à l'envers, vous voudriez vérifier si ces caractères sont dans la chaîne par opposition à l'inverse. Voir ci-dessous:
def main():
return 'Hello World'
Mais je vous suggère de rendre votre code un peu plus robuste en présentant peut-être les choix sous forme de nombre et ils saisissent un nombre dans une liste. Vous pouvez également ajouter une validation pour vous assurer qu'ils n'entrent que l'un de ces trois noms afin que vous n'obteniez jamais cette erreur indéfinie.
MODIFIER
Aussi, comme un autre a souligné que vous n'enregistrez pas la sortie de votre déclaration. Par exemple, chaque fois que vous avez une fonction, disons:
def user_input():
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
if "Char" in x:
user_choice = "Charizard"
elif "Blast" in x:
user_choice = "Blastoise"
elif "Ven" in x:
user_choice = "Venusaur"
return user_choice
print(user_input())
si vous appelez x = main () alors x = 'Hello World' dans votre exemple, vous essayez d'accéder à cette variable en dehors de la portée et de ne pas enregistrer le retour de la fonction n'importe où. Jetez un œil au code que j'ai et il devrait fonctionner comme vous le souhaitez.
Je l'ai souligné en bas. N'avez-vous pas lu la réponse complète?
Le problème est que user_choice est une variable locale dans la fonction et que vous ne passez pas la variable en dehors de la fonction. Par conséquent, user_choice vaut None lorsque vous l'imprimez.
Il y a aussi plusieurs erreurs comme si x dans "char" ne fonctionnera pas. Veuillez publier toute la réponse de travail
parce que vous n'enregistrez pas ce que vous renvoyez de la méthode
def user_input():
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
if x == "char":
user_choice = "Charizard"
elif == in "blast":
user_choice = "Blastoise"
elif == in "ven":
user_choice = "Venusaur"
return user_choice
user_choice = user_input()
print(user_choice)
Cela fonctionnera de cette façon
Modifier
if x in "char" signifie que if xa substing of "char" return true. d'après ce que je comprends, vous voulez dire que si x est exactement égal à "char", alors user_choice = "Charizard" donc le code sera comme ceci:
user_choice = user_input() print(user_choice)
Il y a aussi plusieurs erreurs comme si x dans "char" ne fonctionnera pas Veuillez poster la réponse complète
Il y a encore beaucoup d'erreurs x == "char"? est-ce que ça marchera? Essayez d'abord d'exécuter le code, puis publiez une réponse. Les mauvaises réponses ont un impact sur la communauté.
Le code demande de Choisir: Charizard, Blastoise ou Venusaur mais vous tapez char . Les deux sont des choses différentes.
vérifiez ma solution ci-dessous. C'est ce que j'essaye de dire.
Je suivais le code de la question d'origine. Je pense qu'il est évident de remplacer char par Charizard si vous voulez ce comportement. Je pense que la réponse explique ce qui ne va pas et comment y remédier. Je ne peux pas prédire ce que vous pensez pour le coder pour vous :)
Ouais! Assez juste :)
Il y a plusieurs erreurs dans votre code
La première est la meilleure solution, mais en dessous se trouvent des solutions si vous voulez l'écrire en fonction de votre code
C'est votre choix, vous pouvez utiliser n'importe quel une des solutions, mais je suggérerais la première.
def user_input():
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
user_choice = str()
if "Char" in x:
user_choice = "Charizard"
elif "Blast" in x:
user_choice = "Blastoise"
elif "Ven" in x:
user_choice = "Venusaur"
return user_choice
user_choice = user_input()
print(user_choice)
def user_input():
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
if "Char" in x:
user_choice = "Charizard"
elif "Blast" in x:
user_choice = "Blastoise"
elif "Ven" in x:
user_choice = "Venusaur"
else:
user_choice = str()
return user_choice
user_choice = user_input()
print(user_choice)
def user_input():
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
if x in ['Charizard', 'Blastoise', 'Venusaur']:
return x
return str()
user_choice = user_input()
print(user_choice)
Essayez pour le comprendre et me faire savoir s'il a besoin d'être expliqué :)
Si vous demandez pourquoi user_choice n'a pas simplement donné la valeur de None , c'est parce que vous n'avez jamais défini user_choice si aucun de ceux-ci si les déclarations ne sont pas vraies.
Vous voulez que votre code ressemble plus à ça. Il y a plusieurs erreurs dans votre code, je les ai toutes corrigées.
def user_input():
user_choice = "" # Defined user_choice before taking the input
x = input("Choose :Charizard, Blastoise, or Venusaur: ")
if "char" in x:
user_choice = "Charizard"
elif "blast" in x:
user_choice = "Blastoise"
elif "ven" in x:
user_choice = "Venusaur"
return user_choice
print(user_input()) # This prints the value of the object returned by the function
Il y a aussi plusieurs erreurs "char" dans x id types d'utilisateur charizard alors seulement cela fonctionnera. pas avec Charizard.
Inutile d'être trop verbeux pour dire que user_input est hors de portée là où se trouve print . Astuce: Connaissez-vous le spécificateur de portée en Python? (Chut! Tais-toi! Espaces)