2017-01-07 2 views
0

ich einen Code haben, um zu versuchen und ein bestimmtes Element in einer Liste in eine Textdatei zu ändern. Die Textdatei enthält E-Mail, Passwort in jeder Zeile wie ein Login-System. Der Code fragt nach einer Benutzereingabe für eine E-Mail, dann sucht binary nach diesem Benutzer in der Liste in der Textdatei. Wenn der Benutzer anwesend ist, möchte ich das Passwort für diesen Benutzer ändern, indem Sie das Element [1] an die Liste anhängen. Hier ist mein Code, um das Passwort so weitÄndern eines bestimmten Artikel in einer Textdatei Liste

def ChangePassword(): 

    while True: 
     email=input("Enter the email you want to change the password for") 
     res=BinarySearch(logindata,email) 
     if res: 
      break 

zum Ändern Ich weiß, es ist nicht viel, aber ich havent Ahnung, wie dies zu tun, wie würde ich diesen Ansatz?
Hier ist mein Code für die Binärsuche selbst, falls erforderlich.

def BubbleSort(logindata): 
    NoSwaps = 1 
    N = len(logindata) 
    logindata = list(logindata) 
    while NoSwaps == 1: 
     Count = 1 
     NoSwaps = 0 
     for Count in range(N-1): 
      if logindata[Count] > logindata[Count+1]: 
       temp = logindata[Count] 
       logindata[Count] = logindata[Count+1] 
       logindata[Count+1]=temp 
       NoSwaps=1 
    return tuple(logindata) 

def BinarySearch(logindata,email): 
    First=0 
    Last=len(logindata)-1 
    while First <= Last: 
     Midpoint = (First + Last) // 2 
     if logindata[Midpoint][0] == email: 
      print("Email Found") 
      return True 
     elif logindata[Midpoint][0] > email: 
      Last = Midpoint - 1 
     else: 
      First = Midpoint + 1 
    print("Not found") 
    return False 
+0

Sind Sie absolut sicher, dass die Datei sortiert ist? Python-Einbauten sind jedenfalls (zumindest) so schnell wie Ihre Implementierung. Warum implementieren Sie die Suche erneut? – kabanus

+0

Weil ich eine binäre Suche verwenden haben, der Punkt ist, ich weiß es ärgert, auch wenn es so effizient ist nicht, und über die Datei es sein sollte sortiert werden als die Blase sortieren sie alphabetisch sortiert? @ kabanus –

+0

Also um klar zu sein, lesen Sie eine Datei, Blase sortieren, binäre Look für E-Mails und ändern Sie ein Element, dann schreiben Sie das Ergebnis (in eine neue Datei oder die ursprüngliche)? ja – kabanus

Antwort

0

Angenommen, Sie Ihre Sortierung implementiert und auf der Suche Code richtig (das ist bis zu Ihnen), und vorausgesetzt, Ihre Datei ist ein Bündel von Zeilen der Form „E-Mail-Passwort“, möchten Sie einfach:

def ChangePassword(loginfile): 
    with open(loginfile) as desc: 
     logindata = BubbleSort([line.split() for line in desc.readlines()]) 

    while True: 
     email=input("Enter the email you want to change the password for") 
     res=BinarySearch(logindata,email) 
     if res < 0: 
      break 
     else: print "Not found!" 

    pass = input("Enter new password: ") 
    while pass != input("Please verify: "): 
     pass = input('Mismatch! enter again: ') 

    logindata[1] = pass 
    with open(loginfile,'w') as desc: 
     desc.write("\n".join(" ".join(x) for x in logindata)) 

Hinweis I BinarySearch zurückzukehren, um den Index der entsprechenden Zeile, das Passwort nicht erwarten. -1 falls nicht gefunden. Dies ist eine sehr einfache Skizze einer Lösung, obwohl sie funktioniert, überlegen Sie, wie Sie dies schneller machen können!

Verwandte Themen