Python - trouver des chiffres dans une chaîne de caractères
def get_digits(str1):
c = ""
for i in str1:
if i.isdigit():
c += i
return c
Ci-dessus est le code que j'ai utilisé et le problème c'est qu'il ne renvoie uniquement le premier chiffre de chaînes de caractères. Pour cela, je dois garder les deux pour la boucle et de l'instruction return. Quelqu'un sait comment résoudre ce problème?
Grâce.
Est-ce devoirs? Si oui, veuillez étiqueter comme tel.
J'ai ajouté un test sur ma réponse.
J'ai ajouté un test sur ma réponse.
OriginalL'auteur Kevvv | 2012-08-17
Vous devez vous connecter pour publier un commentaire.
Votre retrait est un peu complètement foireuse (indentation en Python est très important). Mieux:
Plus courte et la plus rapide solution à l'aide de générateur d'expressions:
oh, vous êtes 🙂
est-il un meilleur endroit que le PEP pour la documentation sur le générateur d'expressions?
J'ai édité votre réponse à la lien vers la partie du Tutoriel Python, il y a aussi le langue de référence.
génial, merci!
OriginalL'auteur Benjamin Wohlwend
Comme les autres ont dit, vous avez un problème sémantique sur votre indentation, mais vous n'avez pas à écrire une telle fonction pour le faire, plus pythonic façon de le faire est:
Sur l'interprète:
Quelques conseils
Toujours tester des choses en vous-même quand les gens s'affiche "plus vite" méthodes:
OriginalL'auteur Tarantula
c'est parce que votre
return
déclaration est à l'intérieur de la boucle for, on en revient donc après la première vraieif
condition et s'arrête.OriginalL'auteur Ashwini Chaudhary
Bien sûr, il ne retourne que le premier chiffre, vous indiquez explicitement Python de retour dès que vous avez un chiffre.
Modifier l'indentation de la
return
déclaration et cela devrait fonctionner:OriginalL'auteur Some programmer dude
il y a un problème d'indentation qui revient quand on trouve le premier chiffre, comme avec indentation courante, il est intepreted comme une déclaration à l'intérieur de
if
déclaration,il doit être parallèle à la
for
déclarationpour être considéré en dehors de
for
déclaration.Un des accolades équivalent de votre code incorrect est :
Et lorsque le code est corrigé pour déplacer l'instruction de retour dans l'alignement avec
for
, l'équivalent est :OriginalL'auteur DhruvPathak
Votre code était presque ok, sauf la
return
déclaration devait être déplacé vers le niveau de votrefor
en boucle.donc, maintenant:
rendements:
Explication:
Précédemment, votre fonction est de retour seulement le premier chiffre parce que quand il a trouvé l'une de l'
if
déclaration a été exécuté, comme ce fut lereturn
(vous causer de retour de la fonction qui veut dire que vous n'avez pas à continuer la recherche par le biais de la chaîne).Espaces/indentation vraiment questions en Python comme vous pouvez le voir (à la différence de beaucoup d'autres langues).
OriginalL'auteur Levon