J'ai un fichier avec des données sur des étudiants tels que leur nom, son adresse, leur nom, etc. J'ai créé une fonction qui supprimerait une ligne complète à partir d'un fichier texte basé sur le prénom et le nom de famille d'un élève. Cette fonction a fonctionné correctement. Cependant, après, j'ai décidé de le mettre à jour de sorte que si l'utilisateur entrait un nom qui n'était pas dans le fichier, elle imprimerait: l'étudiant introuvable. Cependant, maintenant, même si l'utilisateur Type d'un nom dans le fichier, il imprime toujours: l'étudiant non trouvé ...
Voici mon code: p>
def delete_a_record(filename): x=input("Remove First Name:") y=input("Remove Last Name:") with open(filename, "r") as f: lines = f.readlines() with open(filename, "w") as f: for i in lines: t=i.split() if t[0]!=x and t[1]!=y: f.write(i) elif x or y not in t: print("Student Not Found") f.close() delete_a_record("mytextfile.txt")
3 Réponses :
Probablement parce que vous êtes une ligne itération par ligne, alors même si le nom est dans le fichier .txt chaque fois que le nom ne correspond pas à la ligne actuelle, il imprimera "Étudiant introuvable". Vous devez vous réécrire de la fonction de sorte que l'instruction d'impression ne soit effectuée que lorsque les lignes ont été épuisées et que le nom n'a pas été trouvé. P>
Pour ce que j'ai signalé (corrigez-moi si je me trompe), je suppose qu'il y a deux problèmes dans votre logique.
la façon dont il est maintenant, si elif x ou ... code> Renvoie toujours vrai parce que
Si vous souhaitez utiliser votre fonction et recherchez dans ce type (vous ne souhaitez pas modifier votre fonction), vous pouvez mettre vos données dans une liste et rechercher dans cette liste comme le code ci-dessous:
list=['f_Name = Lorem','l_Name = Ipsum'] if "f_Name = "+x in list or "l_Name = "+y in list: print("True") else: print("Student Not Found")
``! = `vérifie si c'est différent. Vous voulez utiliser '=='
Utilisez
si non (t [0] == x et t [1] == y): code> ou
si T [0]! = X ou t [1]! = Y: < / code>