Je veux que le programme change les caractères d'un objet chaîne de bas en majuscule et vice versa.

De sorte que si j'entre jOHN, il renvoie John.

Ici je vous laisse le code:

nombre=input('Write the wrong name here: ')

nuevonombre=''
contador=0
while contador <= len(nombre):
    if nombre[contador].isUpperCase == true:
        nombre[contador].lower()
    else:
        nombre[contador].upper()
    nuevonombre = nuevonombre + nombre[contador]
    contador+=1
print(nuevonombre)

Mais lorsque j'exécute le programme, le terminal donne l'erreur suivante:

if nombre[contador].isUpperCase == true:
AttributeError: 'str' object has no attribute 'isUpperCase'

Peut-être que je ne devrais pas utiliser .isUpperCase, si ce n'est pas ça, que dois-je faire? Merci.

0
cristiano ronaldo 18 avril 2020 à 15:31

3 réponses

Meilleure réponse

Vous devez utiliser la méthode isupper().

if nombre[contador].isupper():
1
SMortezaSA 18 avril 2020 à 12:36

Il n'y a pas de fonction isUpperCase en python, elle s'appelle 'john'.isupper().

Votre problème peut être résolu beaucoup plus simplement en utilisant la syntaxe de découpage des pythons et des fonctions de chaîne simples:

def fix_str(s: str) -> str:
    return s[0].upper() + s[0:].lower()

>>> fix_str('jOhN')
'John'
1
Telcrome 18 avril 2020 à 12:39

Solution un peu plus courte utilisant la compréhension de liste:

input_name = input('Write the wrong name here: ')
res = "".join([x.lower() if x.isupper() else x.upper() for x in list(input_name)])
print(res)

list convertit votre entrée en liste de caractères et join la reconvertit en chaîne.

0
Gabip 18 avril 2020 à 12:48