0
votes

CodingBat> Warmup-1> parrot_trouble

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.


0 commentaires

3 Réponses :


0
votes

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.


0 commentaires

0
votes
def parrot_trouble(talking, hour):
        if talking == True and (hour<7 or hour>20):
            return True
        else:
            return False

1 commentaires

Veuillez expliquer pourquoi c'est la solution



0
votes

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)


0 commentaires