Problème d'espaces entre les mots [Résolu]

Signaler
-
Messages postés
12699
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2020
-
Bonjour,
J'ai fini un programme en python ayant pour but de trier une liste d'élève. Dans les actions que proposes mon programme on peut créer un nouveau fichier dans lequel seront écrit le nom, classe, prénom, spé1 et spé 2 de l'élève. Jusque là tout va bien. Problème je n'arrive pas à mettre des espaces entre le nom, prénom, classe etc... (oui c'est débile) si quelqu'un peut m'aider c'est cool !

Voici le code:


futur_tuple=[ ]
donne = "T4"
file_name = "eleves"
file_name = file_name+donne+".txt"
element = ""



with open('elevesT.txt', 'r') as file:
for ligne in file:
ligne=ligne.replace("\n", " ")
tab = ligne.split(" ")
tab = tuple(tab)
futur_tuple.append(tab)

for element in futur_tuple:
for finder in element:
if donne == finder:
element = ''.join(element)
print(element)



et la console sort (donc sans espaces)

RoustaingMaximeT4NSISVT
LavernLouisT4NSIMaths
VaysierPaulT4MathsNSI
RoustaingMaximeT4NSISVT
AlougesRonanT4MathsNSI

5 réponses

Bonjour,
votre fichier est soumis au RGPD.
Pas sûr que publier les noms et prénoms de vos élèves sur un forum soit très légal.

https://www.cnil.fr/fr/reglement-europeen-protection-donnees
en revanche je suis touché que certaines personnes se souci de cela. Merci mais dans ce cas présent j'ai 16 ans donc bon
Messages postés
12699
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2020
704
bonjour, peut-être ainsi:
futur_tuple=[ ]
donne = "T4"
file_name = "eleves"
file_name = file_name+donne+".txt"

with open('elevesT.txt', 'r') as file:
 for ligne in file:
  ligne=ligne.replace("\n", "")
  tab = ligne.split(" ")
  tab = tuple(tab)
  futur_tuple.append(tab)

for element in futur_tuple:
  if donne in element:
   ligne=""
   for mot in element:
       if ligne != "":
           ligne=ligne+" "
       ligne = ligne + mot 
   print(ligne)

merci mais ça marche uniquement pour le dernier de la liste et les autres reste des tuples:

('Roustaing', 'Maxime', 'T4', 'NSI', 'SVT')
Roustaing Maxime T4 NSI SVT
('Lavern', 'Louis', 'T4', 'NSI', 'Maths')
Lavern Louis T4 NSI Maths
('Vaysier', 'Paul', 'T4', 'Maths', 'NSI')
Vaysier Paul T4 Maths NSI
('Roustaing', 'Maxime', 'T4', 'NSI', 'SVT')
Roustaing Maxime T4 NSI SVT
('Alouges', 'Ronan', 'T4', 'Maths', 'NSI')

Alouges Ronan T4 Maths NSI
Messages postés
12699
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2020
704 > Vanatos
j'avais laissé un print en trop, j'ai corrigé.
ça marche nickel ! Merci beaucoup
re Bonjour, quand je met ce programme dans le programme principal, ça ne marche plus, pouvez vous m'aider ?
Voici le code:
Ca concerne uniquement la partie if menu == 3, ça n'écrit rien de le fichier



menu = 4
element = ""

while menu != 0:
menu = int(input("""Entrez un chiffre :\n
0: Quitter\n
1: Inscrire un nouvel élèves\n
2: Rechercher un élève\n
3: Créer une sous liste d'élèves à partir de critères\n"""))

if menu == 1:
info = ""

nom = input("Entrez un nom \n")
info = info + nom + " "
prenom = input("Entrez un prénom \n")
info = info + prenom + " "
classe = input("Entrez une classe \n")
info = info + classe + " "
spe1 = input("Entrez une 1er spécialité \n")
info = info + spe1 + " "
spe2 = input("Entrez une 2e spécialité \n")
info = info + spe2 + "\n"

with open("elevesT.txt",'a') as file:
file.write(info)

if menu == 2:

futur_tuple=[]

with open('elevesT.txt', 'r') as file:
for ligne in file:
ligne=ligne.replace("\n", "")
tab=ligne.split(" ")
tab=tuple(tab)
futur_tuple.append(tab)


donne = input("chercher un élève : ")

for element in futur_tuple:
for finder in element:
if donne == finder:
print(element)

if menu == 3:
#Partie à problèmes


futur_tuple=[ ]
donne = input("Entrez une donné")
file_name = "eleves"
file_name = file_name+donne+".txt"

with open('elevesT.txt', 'r') as file:
for ligne in file:
ligne=ligne.replace("\n", "")
tab = ligne.split(" ")
tab = tuple(tab)
futur_tuple.append(tab)

for element in futur_tuple:
if donne in element:
ligne=""
for mot in element:
if ligne != "":
ligne=ligne+" "
ligne = ligne + mot
print(ligne)
with open(file_name, "a") as file:
file.write(element)

if menu == 0:
while menu == 0:
break
Messages postés
12699
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2020
704
il faut utiliser les balises de code, sinon, le programme est illisible.
menu = 4
element = ""

while menu != 0:
menu = int(input("""Entrez un chiffre :\n
0: Quitter\n
1: Inscrire un nouvel élèves\n
2: Rechercher un élève\n
3: Créer une sous liste d'élèves à partir de critères\n"""))

if menu == 1:
info = ""

nom = input("Entrez un nom \n")
info = info + nom + " "
prenom = input("Entrez un prénom \n")
info = info + prenom + " "
classe = input("Entrez une classe \n")
info = info + classe + " "
spe1 = input("Entrez une 1er spécialité \n")
info = info + spe1 + " "
spe2 = input("Entrez une 2e spécialité \n")
info = info + spe2 + "\n"

with open("elevesT.txt",'a') as file:
file.write(info)

if menu == 2:

futur_tuple=[]

with open('elevesT.txt', 'r') as file:
for ligne in file:
ligne=ligne.replace("\n", "")
tab=ligne.split(" ")
tab=tuple(tab)
futur_tuple.append(tab)


donne = input("chercher un élève : ")

for element in futur_tuple:
for finder in element:
if donne == finder:
print(element)

if menu == 3:
#Partie à problèmes


futur_tuple=[ ]
donne = input("Entrez une donné")
file_name = "eleves"
file_name = file_name+donne+".txt"

with open('elevesT.txt', 'r') as file:
for ligne in file:
ligne=ligne.replace("\n", "")
tab = ligne.split(" ")
tab = tuple(tab)
futur_tuple.append(tab)

for element in futur_tuple:
if donne in element:
ligne=""
for mot in element:
if ligne != "":
ligne=ligne+" "
ligne = ligne + mot
print(ligne)
with open(file_name, "a") as file:
file.write(element)

if menu == 0:
while menu == 0:
break
> Vanatos
Bonsoir,

Tu ne vois pas que ton code n'est pas correctement indenté.

Qu'est censé faire ton code situé dans ta condition où menu vaut 3 ?
Je n'y pige rien :-/

Et aussi, les conditions c'est aussi utiliser elif et else.

if menu == 0:
    while menu == 0:
        break


Elle sert à quoi cette boucle ?
Si on rentre 0, le système s'arrête et sinon mon code est bien indenté mais c'est en le copiant que ça a fait ça
Messages postés
12699
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2020
704 > Vanatos
je suis surpris que tu n'aies pas de message d'erreur à la ligne 72.
difficile de t'aider si tu ne nous montres pas l'indentation.
Je suis moi même élève et ce sont des noms bidons sur une liste random