Problème d'espaces entre les mots

Résolu
Vanatos -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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

baladin
 
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
1
Vanatos
 
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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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)

0
Vanatos
 
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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Vanatos
 
j'avais laissé un print en trop, j'ai corrigé.
0
Vanatos
 
ça marche nickel ! Merci beaucoup
0
Vanatos
 
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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
il faut utiliser les balises de code, sinon, le programme est illisible.
0
Vanatos
 
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
0
trifou > 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 ?
0
Vanatos > trifou
 
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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > 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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vanatos
 
Je suis moi même élève et ce sont des noms bidons sur une liste random
0