Problème d'espaces entre les mots

Résolu/Fermé
Vanatos - 25 janv. 2020 à 12:39
yg_be Messages postés 22779 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 mai 2024 - 26 janv. 2020 à 08:13
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
1
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 22779 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 mai 2024 1 481
Modifié le 25 janv. 2020 à 13:07
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
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 22779 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 mai 2024 1 481 > Vanatos
25 janv. 2020 à 13:10
j'avais laissé un print en trop, j'ai corrigé.
0
ça marche nickel ! Merci beaucoup
0
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 22779 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 mai 2024 1 481
25 janv. 2020 à 20:36
il faut utiliser les balises de code, sinon, le programme est illisible.
0
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
25 janv. 2020 à 21:52
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
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 22779 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 mai 2024 1 481 > Vanatos
26 janv. 2020 à 08:13
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
Je suis moi même élève et ce sont des noms bidons sur une liste random
0