Python liste

Ismouf Messages postés 4 Date d'inscription lundi 25 mai 2020 Statut Membre Dernière intervention 27 mai 2020 - 25 mai 2020 à 21:52
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 - 26 mai 2020 à 17:45
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

lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
26 mai 2020 à 11:22
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)

1
Ismouf Messages postés 4 Date d'inscription lundi 25 mai 2020 Statut Membre Dernière intervention 27 mai 2020
26 mai 2020 à 13:02
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.]
0
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
26 mai 2020 à 16:19
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)

1
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
26 mai 2020 à 17:45
Il suffit de convertir en Integer au moment de l'insertion dans la liste:
liste.append(int(temp))

1
Ismouf Messages postés 4 Date d'inscription lundi 25 mai 2020 Statut Membre Dernière intervention 27 mai 2020
26 mai 2020 à 16:57
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 ?
0
Rejoignez-nous