Python instructions conditionnelles
def Fitness(a, b, c):
if ((a&b&c) >= 4) & ((a+b+c) >= 13):
return('Gold')
if ((a&b&c) >= 3) & ((a+b+c) >= 10):
return('Silver')
if ((a&b&c) >= 2) & ((a+b+c) >= 07):
return('Pass')
else:
return('Fail')
maintenant, le Problème, c'est quand Fitness(2,2,5)
, les sauts à défaut d'ie. "Échouer".
Où est la sortie réelle est 'Pass'. ?
- Pourriez-vous expliquer la logique que vous êtes en essayant de le mettre en œuvre?
Vous devez vous connecter pour publier un commentaire.
Noter que
est différente de
Je pense que tu veux dire la seconde, c'est à dire toutes les valeurs sont plus que deux. (Le premier d'une binaire et avec tous vos valeurs et la compare à la valeur de deux.)
&
.Utilisation
and
au lieu de&
(et binaires). Et ne pas écrire07
- les numéros commençant par0
peut être interprétée comme octal, selon votre version de Python.Avec Howard, qui est source d'inspiration, je te suggère ceci:
Aussi, c'est triste que vous n'êtes pas à l'attribution d'une médaille de bronze...
True
est 1 etFalse
est 0, doncTrue & True
devrait encore donnerTrue
,True & False
devrait encore donnerFalse
, etc.2&2&5
en Python shell et de voir par vous-même.0b010
binaire et0b101
est0
. Ne pas confondre logiqueand
binaire&
!Non, il n'est pas. 2 (0b010) & 2 & 5 (0b101) est 0, de sorte que les expressions seront vouées à l'échec, même si vous changez la
&
séparant les deux termes deand
. Peut-être que vous vouliez utiliser un de complètement différent de l'expression?J'avais poste comme un commentaire de Tim Pietzcker de répondre, puisque c'est juste une amélioration, mais le champ de commentaire serait gâcher la mise en forme, donc je fais une réponse distincte.
D'abord les choses importantes:
return('Gold')
n'est pas mauvais en soi, mais de dérouter le lecteur;return
est un état, pas une fonction. Il fonctionne néanmoins parce que les parenthèses sont en effet silencieusement ignoré. Si ce que vous voulais, c'était en fait pour revenir un tuple avec un seul élément de chaîne, nereturn ('Gold',)
.if
blocs, comme indiqué ci-dessus.Puisque les arguments sont tous traités de manière égale et, ensemble, de les rassembler dans un
*args
tuple. Cela permettra également de généraliser la fonction de travailler avec un nombre quelconque d'arguments. Si cela ne devrait pas être permis, ajouter ceci au début de la fonction:Enfin je vais juste mentionner que les fonctions doivent avoir
lower_case_names
selon la python guide de style. En suivant le guide de style est bien sûr pas obligatoire, mais recommandé. 🙂