3
votes

Python me dit 66 <= 17

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.


5 commentaires

Je ne sais pas à propos de la ligne 7, mais si num1 et num2 <= 17 sera toujours True à moins que num1 soit 0. Faites si 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.


3 Réponses :


9
votes

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é


0 commentaires

4
votes

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 ...)


0 commentaires

4
votes

Pour écrire num1 et num2 en Python, vous devez être explicite:

if max(num1, num2) <= 17:
    # do something

Sinon, à condition de num1! = 0 code>, la condition sera toujours Vrai.

Ou utilisez simplement le max des deux valeurs pour la logique équivalente:

XXX


0 commentaires