Ceci est ma première question en tant que programmeur, je m'apprends Python et j'espère que vous pourrez m'aider à comprendre pourquoi ma réponse à ce problème est fausse.
Je comprends que la solution est plus simple et probablement plus correcte du point de vue syntaxique mais je me demande pourquoi mon code n'a pas fonctionné du tout.
Le problème sur lequel je travaille:
Lien: https://codingbat.com/prob/p166884
Problème collé ici: Nous avons un perroquet qui parle fort. Le paramètre "heure" est l'heure actuelle dans la plage 0..23. Nous sommes en difficulté si le perroquet parle et que l'heure est avant 7 ou après 20. Renvoyez True si nous sommes en difficulté.
parrot_trouble (Vrai, 6) â † 'Vrai parrot_trouble (Vrai, 7) â †' Faux parrot_trouble (Faux, 6) â † 'Faux
Ma réponse:
def parrot_trouble(talking, hour): if talking == True and (hour < 7 == True or hour > 20 == True): return(True)
Résultat:
def parrot_trouble(talking, hour): return (talking and (hour < 7 or hour > 20)) Need extra parenthesis around the or clause since and binds more tightly than or. and is like arithmetic *, or is like arithmetic +
La solution:
Expected Run parrot_trouble(True, 6) â True None X parrot_trouble(True, 7) â False None X parrot_trouble(False, 6) â False None X parrot_trouble(True, 21) â True None X parrot_trouble(False, 21) â False None X parrot_trouble(False, 20) â False None X parrot_trouble(True, 23) â True None X parrot_trouble(False, 23) â False None X parrot_trouble(True, 20) â False None X parrot_trouble(False, 12) â False None X
J'ai essayé les parenthèses autour des expressions booléennes de l'heure mais cela n'a pas fonctionné non plus:
def parrot_trouble(talking, hour): if talking == True and hour < 7 == True or hour > 20 == True: return(True)
Je ne sais pas où ma pensée a mal tourné. J'apprécie ton aide.
3 Réponses :
return
est un mot-clé, pas une fonction. Essayez de return True
au lieu de return(True)
.
En effet, les parenthèses symbolisent l'exécution d'une fonction, cela signifierait donc que vous appelez une fonction.
def parrot_trouble(talking, hour): if talking == True and (hour<7 or hour>20): return True else: return False
Veuillez expliquer pourquoi c'est la solution
Le problème ici est votre syntaxe avec cette déclaration
(hour < 7 or hour > 20)
Vous n'avez pas besoin de mettre le '== true' lorsque vous avez déjà fait la déclaration heure <7.
changez-le simplement en
(hour < 7 == True or hour > 20 == True)