En essayant de construire un convertisseur de chaînes majuscules en minuscules en Python 3.7, voici mon code:
Enter string - HELlo
Traceback (most recent call last):
File "loweralph.py", line 11, in <module>
string = toLowerCase(result)
File "loweralph.py", line 6, in toLowerCase
result = result + convertChar(char)
TypeError: can only concatenate str (not "NoneType") to str
Et voici ma sortie:
def convertChar(char):
if char >= 'A' and char <= 'Z':
return chr(ord(char) + 32)
def toLowerCase(string):
for char in string:
string = string + convertChar(char)
return string
string = input("Enter string - ")
result = toLowerCase(string)
print(result)
Je suis vraiment nouveau dans Python et j'ai vu des réponses pour les TypeErrors 'list to list' et une autre réponse pour str à str, mais je ne pouvais pas la relier à mon code. Si quelqu'un pouvait expliquer ce que je fais mal, ce serait génial!
3 Réponses :
Comme coldspeed l'a commenté, lorsque vous passez une lettre minuscule à convertChar, la fonction ne renvoie pas un caractère approprié. D'où l'erreur.
De plus, avec 'string = string + convertChar (char)', vous ajoutez à la même chaîne d'entrée. C'est faux. Vous devez utiliser une nouvelle chaîne vide pour cela.
Vous devez ajouter des cas d'exception à votre code. Premièrement, que se passe-t-il si le caractère saisi est déjà en minuscule?
Vous pouvez faire quelque chose de ce genre:
def toLowerCase(string):
newString = []
for char in string:
newString.append(convertChar(char))
return ''.join(newString)
Ce n'est peut-être pas la solution la plus idéale, mais ce s'occupe de la plupart des choses. Autrement dit, uniquement si le caractère saisi est en majuscule, il est converti en minuscules. Pour tous les autres cas (qu'il s'agisse d'un caractère minuscule, d'un nombre et cetra), le caractère est retourné tel quel.
Deuxièmement, si vous faites un convertisseur majuscules en minuscules, la sortie de HElLo doit être bonjour , pas HElLohello.
Pour cela, vous devez modifier votre deuxième fonction comme suit:
def convertChar(char):
if char >= 'A' and char <= 'Z':
return chr(ord(char) + 32)
return char
Enfin, vous voudrez peut-être envisager d'utiliser la fonction intégrée .upper () .
Exemple d'utilisation:
'HeLlo'.upper ()
Je ne connais pas la raison de la construction de votre propre méthode, mais vous pouvez utiliser la méthode intégrée lower () à la place. Par exemple:
my_string = input("Enter string - ")
result = my_string.lower()
print(result)
string = string + convertChar (char)C'est faux. La définition deconvertCharest également incomplète (indice: que se passe-t-il si l'instructionifn'est pas exécutée?)Dans la fonction
covertCharvous effectuez une vérificationif char> = 'A' et char <= 'Z':si c'est True, une opération est effectuée et a renvoyé le résultat. Mais que faire si c'est faux.? Python renvoieAucunpar défaut si aucune valeur de retour n'est rencontrée