2016-12-07 12 views
-1

我正在做一個學校項目,我必須使投票系統,使用投票代碼。我需要打開2個文件的代碼的幫助,檢查代碼是否在那裏,如果是的話會給出錯誤值。我如何檢查,看是否已經寫入一個TXT,並給出一個錯誤,如果是這樣的python

while True: 
     Code = input("Enter your 6 digit code: ")  
     try: 
      Code = int(Code) 
      if "0" in str(Code): break 
      if len(str(Code)) != 6 : raise ValueError 
      else: break 
      readt = open("Trump.txt" , "r") 
      readh = open("Clinton.txt" , "r") 
      readhh = readh.read() 
      readtt = readt.read() 
      if Code in str(readtt) or Code in str(readhh): raise ValueError 
      else: break 
      readt.close() 
      readh.close() 
     except ValueError: 
      print("Invalid") 
+0

「,而真: 代碼=輸入(‘請輸入您的6位代碼’) 嘗試: 代碼= int(代碼) 如果str(代碼)中的「0」:break if len(str(Code))!= 6:raise ValueError else:break readt = open(「Trump.txt」,「r 「) readh = open(」Clinton.txt「,」r「) readhh = readh.read() readtt.read() 如果str(readtt)中的代碼或str(readhh)中的代碼:raise ValueError else:break except ValueError: print(「Invalid」)' – Crazedslaw

+0

您能否將您的代碼放入[code]標籤? – ingframin

回答

1

這裏有幾個指針來修改你的程序:

if len ... else部分看起來或者是通過raisebreak離開while循環。不會執行open的代碼。您可以撥打open很多次。這將成爲問題,因爲leaking file descriptors is a problem。爲此,請使用with open(...)聲明。這樣,你不能意外地打開文件。您的close聲明落後於另一個if ... else構造,它將在每種情況下都離開循環。

你的變量名稱有點不透明,也許你想發明一些更有說服力的名稱。

爲什麼有兩個文件?不應該只有一個文件包含所有使用的代碼嗎?

0

假設您提供的所有信息在你的問題,這是你的問題的解決方案:

def code_checker(): 
    codes = [] 
    with open('Trump.txt', 'r') as f1: 
     for line in f1: 
      codes.append(line.rstrip()) 
    with open('Clinton.txt', 'r') as f2: 
     for line in f2: 
      codes.append(line.rstrip()) 
    code = input('Enter your 6 digit code:\n') 
    while True: 
     if '0' in code or len(code) != 6: 
      print('Invalid code\n') 
      code = input() 
      continue 
     elif code in codes: 
      raise ValueError 

code_checker() 
相關問題