Je suis un débutant total et j'ai regardé http://en.wikibooks.org/wiki/Python_Programming/Conditional_Statements mais je ne peux pas comprendre le problème ici. C'est assez simple, si l'utilisateur entre y il devrait imprimer cela fera le calcul bien que j'obtienne une erreur de syntaxe sur IF answer == "y"
answer = str(input("Is the information correct? Enter Y for yes or N for no"))
proceed="y" or "Y"
If answer==proceed:
print("this will do the calculation"):
else:
exit()
Même une fois que vous avez corrigé le if
mal placé et l'indentation incorrecte dans votre code, cela ne fonctionnerait pas comme vous vous y attendiez probablement. Pour vérifier une chaîne par rapport à un ensemble de chaînes, utilisez in
. Voici comment procéder (et notez que if
est entièrement en minuscules et que le code dans le bloc if
est en retrait d'un niveau).
Une approche:
if answer in ['y', 'Y', 'yes', 'Yes', 'YES']:
print("this will do the calculation")
Un autre:
if answer.lower() in ['y', 'yes']:
print("this will do the calculation")
If
doit être if
. Votre programme devrait ressembler à ceci:
answer = raw_input("Is the information correct? Enter Y for yes or N for no")
if answer.upper() == 'Y':
print("this will do the calculation")
else:
exit()
Notez également que l'indentation est importante, car elle marque un bloc en Python.
Tu veux:
answer = str(raw_input("Is the information correct? Enter Y for yes or N for no"))
if answer == "y" or answer == "Y":
print("this will do the calculation")
else:
exit()
Ou
answer = str(raw_input("Is the information correct? Enter Y for yes or N for no"))
if answer in ["y","Y"]:
print("this will do the calculation")
else:
exit()
Remarque:
input
évalue l'entrée."a" or "b"
correspond à "a"
, tandis que 0 or "b"
correspond à "b"
. Voir La nature particulière de et et o .Python est un langage sensible à la casse. Tous les mots-clés Python sont en minuscules. Utilisez if
, pas If
.
De même, ne mettez pas de deux-points après l'appel à print()
. Indenter également les appels print()
et exit()
, car Python utilise l'indentation plutôt que des crochets pour représenter les blocs de code.
Et aussi, proceed = "y" or "Y"
Ne fera pas ce que vous voulez. Utilisez proceed = "y"
Et if answer.lower() == proceed:
, ou quelque chose de similaire.
Il y a aussi le fait que votre programme se fermera tant que la valeur d'entrée n'est pas le caractère unique "y" ou "Y", ce qui contredit l'invite de "N" pour la casse alternative. Au lieu de votre clause else
, utilisez Elif answer.lower() == info_incorrect:
, avec info_incorrect = "n"
Quelque part au préalable. Ensuite, reproposez simplement la réponse ou quelque chose si la valeur d'entrée était autre chose.
Je recommanderais de suivre le tutoriel dans la documentation Python si vous rencontrez autant de problèmes dans la façon dont vous apprenez maintenant. http://docs.python.org /tutorial/index.html
proceed = "y", "Y"
if answer in proceed:
De plus, vous ne voulez pas
answer = str(input("Is the information correct? Enter Y for yes or N for no"))
Tu veux
answer = raw_input("Is the information correct? Enter Y for yes or N for no")
input()
évalue tout ce qui est entré comme une expression Python expression, raw_input()
renvoie une chaîne.
Edit: Cela n'est vrai que sur Python 2. Sur Python 3, input
est très bien, bien que str()
wrapping est toujours redondant.