Python liste

Signaler
Messages postés
4
Date d'inscription
lundi 25 mai 2020
Statut
Membre
Dernière intervention
27 mai 2020
-
Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
-
Bonjour,
J'ai un projet python à réaliser et je bloque pour une question je ne sais pas comment partir, si quelqu'un sait comment je peux faire?
La question étant : Enregistrer dans une nouvelle liste G les nombres formés par tous les groupes de 4 chiffres écrits côte à côte dans la liste L.
Exemple si L=[1,2,3,4,5,6,7,8,9,1,2,3] nous aurions G= [1234, 2345, 3456,...., 9123.]

Merci d'avance, je vous met ci-dessous mon début de code.

#Q1/ On demande à l'utilisateur d'entrer un nombre entier d'au moins 10 chiffres
print("Entrez un nombre entier d'au moins 10 chiffres")
n=int(input())
while n < 10**9:        #On met en place une boucle si tant que le nombre ne correspond pas
    print("Entrez un nombre entier d'au moins 10 chiffres")
    n=int(input())

#Q2/ On enregistre ce nombre dans une liste L, à raison d'un chiffre par élément de la liste
L=[]
nombre=n
while nombre != 0:
    L.append(nombre % 10)
    nombre= nombre // 10
L.reverse()

#Q3/ Parcourir la liste pour afficher les chiffres pairs et impaires d'une couleur différente
for x in L:
    if x % 2 == 0:
        print('\033[35m',x,end=" "'\033[0m')
    else:
        print('\033[32m',x,end=" "'\033[0m')
print()

#Q4/ On enregistre dans une liste G les nombres de la liste L par groupe de 4 

4 réponses

Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
59
Bonjour,
Voici une piste:

#Transformation de la liste L en une chaine de caractères
chaine = "".join(map(str, L))
print(type(chaine),chaine)

#Extraction de la chaine par ensemble de 4 caractères
z = 0 #Indice ==> 0 position de départ
liste = []

while z < len(chaine):
    temp = chaine[z:z+4]
    liste.append(temp)
    z = z + 4

print(liste)

Messages postés
4
Date d'inscription
lundi 25 mai 2020
Statut
Membre
Dernière intervention
27 mai 2020

Bonjour,
Tout d'abord merci pour votre aide, mais ce n'est pas ce qui est vraiment demandé dans la question, il faut que la liste G contienne tout les groupes de 4 chiffres cote à cote de la liste L.
Exemple si L=[1,2,3,4,5,6,7,8,9,1,2,3] nous aurions G= [1234, 2345, 3456, 4567, 5678, 6789, 7891, 8912, 9123.]
Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
59
Il suffit de modifier la variation de l'indice:
#Transformation de la liste L en une chaine de caractères
chaine = "".join(map(str, L))
print(type(chaine),chaine)

#Extraction de la chaine par ensemble de 4 caractères
z = 0 #Indice ==> 0 position de départ
liste = []

while z < len(chaine):
    temp = chaine[z:z+4]
    if len(temp) < 4:
        break
    liste.append(temp)
    z = z + 1

print(liste)

Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
59
Il suffit de convertir en Integer au moment de l'insertion dans la liste:
liste.append(int(temp))

Messages postés
4
Date d'inscription
lundi 25 mai 2020
Statut
Membre
Dernière intervention
27 mai 2020

Super merci beaucoup !
Et dernière petite question, est-ce possible de reconvertir la liste G en une liste d'entier pour retirer les guillemet dans l'affichage de la liste ?