Je suis novice en python et j'essaie de créer un programme qui évalue si un partenaire potentiel est trop jeune pour quelqu'un utilisant la règle / 2 + 7.
malgré l'utilisation de variables de test bien au-dessus de 18, le programme exécute la ligne 7 quoi que je fasse. J'ai utilisé 88/77, 77/66, 19/19, il exécute toujours la ligne 7.
num1 = float(input("What is the higher age number? "))
num2 = float(input("What is the lower age number? "))
output = num1 / 2 + 7
if num1 <= 17 and num2 <= 17:
print("You're both underage")
elif num2 <= 17:
print("You're going to jail bud")
elif output <= num2:
print("That's OK")
else:
print("They are slightly too young for you")
EDIT:
J'ai fait le correctif autant suggéré, mais maintenant le programme ne fonctionne toujours pas comme prévu et j'ai trouvé une autre faille.
num1 = float(input("What is the higher age number? "))
num2 = float(input("What is the lower age number? "))
output = num1 / 2 + 7
if num1 and num2 <= 17:
print("You're both underage")
elif num2 <= 17:
print("You're going to jail bud")
elif output <= num2:
print("That's OK")
else:
print("They are slightly too young for you")
quand num1 = 19 et num2 = 16, le programme affiche la ligne 5 quand je veux la sortie vers la ligne 7. Elle affiche également toujours la ligne 7 lorsque num1 et num2 sont tous les deux définis sur une valeur supérieure à 17.
3 Réponses :
L'expression:
if num1 <= 17 and num2 <= 17:
est comme:
if num1 == True and num2 <= 17:
Avec num1 = 66 , num1 est similaire à True et num2 est évalué
Pour corriger votre programme, vous devez écrire:
if num1 and num2 <= 17:
À partir de la documentation Python: Test de la valeur de vérité
Le problème concerne cette ligne de code:
if all(i <= 17 for i in [num1,num2])
Python lit ceci comme suit:
si num1 est TRUE (ce qu'il est) et num2 est inférieur ou égal à 17, alors exécuter ...
Vous cherchiez
if num1 <= 17 and num2 <= 17
Ou même:
if num1 and num2 <= 17:
au cas où vous voudriez vérifier plus de deux partenaires éventuellement (c'est-à-dire que vous détenez une liste de num1, num2, num3 ...)
Pour écrire Sinon, à condition de Ou utilisez simplement le num1 et num2 en Python, vous devez être explicite: if max(num1, num2) <= 17:
# do something
num1! = 0 code>, la condition sera toujours Vrai. max des deux valeurs pour la logique équivalente:
Je ne sais pas à propos de la ligne 7, mais
si num1 et num2 <= 17sera toujoursTrueà moins quenum1soit 0. Faitessi num1 <= 17 et num2 <= 17à la place.Avez-vous toujours ce problème @Brandon? Parce que le code fonctionne pour tous les cas de test que vous avez imprimés, je viens de le tester.
Je suis un idiot, j'exécutais le mauvais fichier .py dans le terminal -_-
Haha, cela m'est arrivé d'innombrables fois ...
@Brandon, si une solution ci-dessous a résolu votre problème, veuillez l'accepter (cochez à gauche). Vous pouvez également voter pour toute autre solution que vous avez trouvée utile.