2016-12-07 27 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() 
相关问题