Je tente de compléter une tâche de veiller à ce que tous les caractères d'une chaîne répondent aux conditions suivantes:
pour la plupart des chaînes, la fonction fonctionne; Cependant, je retourne un faux Le problème est localisé à la boucle pour la boucle ( impression (valide_product_code ("0O3LG6educt_code (" 0O3LG6ewn7AAA1NI596LCVBRZ ")) P> La sortie du code est la suivante: P> false code> quand un 0 est présenté. P> pour le caractère dans la chaîne: code>) comme indiqué par la sortie. p> String is divisible by 4
A1 is contained within string
0
Character is a Lowercase
False
3 Réponses :
Vous devez utiliser si caractère.Islower (): code> pas Si le caractère == caractère.Lower (): code> parce que '0'.Lower () == '0' code> de sorte que si l'instruction ( si le caractère == caractère.Lower (): code>) retournera toujours true code> si votre chaîne contient un chiffre < / p>
La réponse courte est Dans ce cas, être un bon caractère, signifie simplement P> '0'.Lower () ==' 0 ' code>. Au lieu de vérifier les mauvais caractères (tels que des lettres minuscules ou une ponctuation), vous devez décrire en python ce que cela signifie être un bon caractère. 'A' <= character <= 'Z' or '0' <= character <= '9'
Il n'est pas nécessaire d'utiliser ord code> et plage code>. Les caractères comparent par leurs numéros UNICODE / ASCII. 'a' <= n <= 'z' code> vérifie les lettres majuscules, '0' <= n <= '9' code> pour les chiffres.
Édité ma réponse. Merci pour la prise!
... alors que diriez-vous de caractère dans string.ascii_uppercase + string.digits code>
Ce que vous faites est non pythonique. Au lieu d'utiliser si le caractère == caractère.Lower (): code>, utilisez .Islower () code>. P>
.Illower () code> retourne true code> quand il n'y a pas de lettres majuscules dans la chaîne et il y a au moins une lettre minuscule. Ce n'est pas la même chose que tous les caractères étant des lettres. P>
Ce n'est pas un-pythonique. C'est juste une utilisation incorrecte d'une méthode.
"La chaîne ne contient que des majuscules et des chiffres" que vous recherchez uniquement les majuscules et non pour les chiffres. Pourquoi supposeriez-vous que le code accepte des chiffres?
Votre boucle retournera
true code> dès qu'un personnage Single i> passe les tests. Êtes-vous sûr que c'est correct?@Mistermiyagi je vérifie la majuscule que vous êtes correct; Toutefois, si un numéro est présenté, il devrait être traité par le "autre" pour retourner vrai. Ma question est la raison pour laquelle le personnage.Lower () est vrai (donc retourner faux) lorsqu'il est présenté avec un numéro.
@Glennchamberlain Si votre question est "Pourquoi
'0'.LOWER () ==' 0 ' CODE>?", Vous devriez Modifier la question pour faire cela clair. La question a actuellement beaucoup d'interprétations, de "pourquoi ne fonctionne-t-elle pas?" à "Comment devrait-il être écrit à la place?". Testez cette ligne
si caractère == ("!" Ou "." Ou "ou", "ou": "): "): "> avec différentes valeurs pourcaractère code>; Vous serez surpris par les résultats. Une ligne de remplacement fonctionnant (!) Seraitsi le caractère dans ("!", ".", ",", ",": "): Code>