J'essaie de définir 2 fonctions, mais seulement J'essaie ce code dans Jupyter Notebook: p> et ce code: p> has_33 code> fonctionne et myfunction code> ne fonctionne pas. def has_33(nums):
for i in range(0, len(nums)-1):
if nums[i:i+2] == [3,3]:
return True
return False
3 Réponses :
Salut, il y a une différence de tige dans le code: Dans la première fonction, le second retour est à l'intérieur de la boucle où, comme dans la deuxième fonction, il est hors de la boucle:
donc dans la première fonction lorsque si la condition est fausse et que cela se passe au deuxième retour et renvoie false pour la première valeur 0 p>
dans la deuxième fonction Si l'évaluation conserve False jusqu'à ce que je soit 3 et pour la boucle n'exécute pas le retour. Une fois que si l'évaluation est devenue truelle sur i = 0, il exécute le retour de si et le retour de VRAI de sorte que le contrôle sort de la fonction et un deuxième retour de pour ne pas être exécuté: p>
première fonction corrigée: P>
Erreur d'indentation! Juste besoin d'effacer une empiète de la dernière ligne de votre premier code. La boucle pour retournera faux maintenant. Essayez comme ceci:
Poster mon commentaire comme une réponse suggérée par @quamrana.
Ce comportement est dû à l'indentation. Dans EG P> myfunction code>, si la condition nums [0: 2] == [3,3] code> n'est pas satisfait, la fonction renvoie immédiatement false code> . Tandis que dans has_33 code>, il iTère via une liste entière, puis retournera false code> s'il n'y a pas de consécutif [3,3] code>. P > nums = [1,2,3,3,5]
has_33(nums)
True
C'est à cause de l'indentation. Dans
MyFunction CODE>, si la conditionnum [0: 2] == [3,3] code> n'est pas satisfait, la fonction renvoie immédiatement False. Alors que danshas_33 code>, il iTère via une liste complète, puis ne reviendra que FALSE s'il n'y a pas deconsécutif [3,3] code>.@AneShPalsule: Vous pourriez peut-être écrire votre commentaire comme réponse.
@quamrana Le problème avec la rédaction de cela comme une réponse est que le problème d'indentation sous-jacent est dupliqué ad nauseam et est un peu plus qu'une faute de frappe (faite par une personne qui ne réalise pas la signification de ces fautes de frappe)
@Johncoleman: Oui, j'aimerais que quelque chose puisse être fait à propos de ce problème éternel. Mais dans le même temps, il y a un autre utilisateur qui a besoin d'encouragement.
@Quamrana Une partie du problème est que même si ce bogue apparaît tout le temps, il y a rarement une bonne cible en double (surtout celle que la personne demandant au problème pourrait être raisonnablement prévue de trouver). S'ils savaient chercher une indentation, ils seraient capables de résoudre leur propre problème sans demander.