Changement majuscule en minuscule avec Python
Lalali
-
critou -
critou -
Bonjour,
j'essaye de faire un algorithme qui change une lettre en majuscule en minuscule si son opposé dans le mot (qui a été changé en liste préalablement) est en minuscule.
for i in range(len(mot_liste)):
if mot_liste[len(mot_liste)-1-i].isupper()== 0:
if mot_liste[i].isupper()== 1:
mot_liste[len(mot_liste)-1-i] = mot_liste[len(mot_liste)-1-i].lower()
return mot_liste
(les indentations n'apparaissent pas)
quand j'essaye avec une liste constituée de lettres, ça ne change rien à la liste et je ne comprends pas pourquoi
merci de votre aide
j'essaye de faire un algorithme qui change une lettre en majuscule en minuscule si son opposé dans le mot (qui a été changé en liste préalablement) est en minuscule.
for i in range(len(mot_liste)):
if mot_liste[len(mot_liste)-1-i].isupper()== 0:
if mot_liste[i].isupper()== 1:
mot_liste[len(mot_liste)-1-i] = mot_liste[len(mot_liste)-1-i].lower()
return mot_liste
(les indentations n'apparaissent pas)
quand j'essaye avec une liste constituée de lettres, ça ne change rien à la liste et je ne comprends pas pourquoi
merci de votre aide
1 réponse
-
Bonjour.
L'opposé de l'index 0 dans un itérable indexable est -1, pour 1, -2, pour 2, -3, etc.
Sachant cela, tu peux bien comprendre qu'utiliser la longueur de la liste pour calculer l'index n'a pas d'intérêt.
De plus, si j'ai bien compris, tu veux transformer les 2 lettres opposées du mot, si une des deux est en minuscule, il suffit donc de parcourir la moitié du mot et de regarder si une des 2 lettres est en minuscule, et transformer les 2 en minuscules si cela est le cas.
mot = 'AbCdEFGH' mot_liste = list(mot) for i in range(int(len(mot)/2)): if mot[i].islower() or mot[-i-1].islower(): mot_liste[i] = mot[i].lower() mot_liste[-i-1] = mot[-i-1].lower() print(mot) print("".join(mot_liste))
Note que pour un mot de longueur impaire, cela n'a pas trop de sens, puisque la lettre opposée de la lettre centrale est elle-même.
ps: pour que ton code garde son indentation, il faut utiliser les balises codes du forum.-
Ok alors j'ai changé mon programme et en faite il faut que je mette en majuscule un lettre si son opposé dans la chaine est en majusucle et du coup passer l'opposé en minuscule
ex: ['C', 'O', 'u', 'C', 'o', 'u'] doit donner ['c', 'o', 'U', 'c', 'O', 'U']
for i in range(len(mot_liste)): if mot_liste[i].isupper()== 0: #le caractère i est une minuscule if mot_liste[-i-1].isupper()== 1: #le caractère opposé est en majuscule mot_liste[i] = mot_liste[i].upper() #on passe le caractère i en majuscule mot_liste [-i-1]=mot_liste[-i-1].lower() #on passe son opposé en minuscule else: #le caractère i,est une majuscule if mot_liste[-i-1].isupper()== 0: #le caractère opposé est une minuscule mot_liste[i]=mot_liste[i].lower() #on passe le caractère i en minuscule mot_liste[-i-1]=mot_liste[-i-1].upper() #on passe son opposé en majusucle
ça ne marche pas non plus.. -
Ok, tu veux donc échanger les casses de caractères entre les 2 côtés.
N'utilise pas ces affreux == dans tes conditions, cela ne sert à rien.
Sinon, ici c'est pareil, inutile de parcourir la liste en entier, il n'y a besoin que de regarder une des moitiés.
mot = 'COuCou' mot_liste = list(mot) for i in range(int(len(mot)/2)): minuscule_gauche = mot[i].islower() minuscule_droite = mot[-i-1].islower() # Casses différentes entre les 2 lettres if minuscule_gauche != minuscule_droite: # Si lettre de gauche est en minuscule if minuscule_gauche: mot_liste[i] = mot[i].upper() mot_liste[-i-1] = mot[-i-1].lower() # lettre de gauche est en majuscule else: mot_liste[i] = mot[i].lower() mot_liste[-i-1] = mot[-i-1].upper() print(mot) print("".join(mot_liste))
Simple non ?
-