我正在做一个学校项目,我必须建立一个使用投票代码的投票系统。我需要帮助打开2个文件的代码,检查代码是否在那里,如果是,则给出值错误。
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 :(得分:1)
以下是一些修复程序的指示:
while
部分似乎通过raise
或break
离开open
圈。执行open
的代码永远不会执行。
你也多次拨打with open(...)
。这将成为问题,因为leaking file descriptors is a problem。请使用close
语句。这样,您不能意外地打开文件。您的if ... else
语句是在另一个{{1}}构造的后面,它将在每种情况下都离开循环。
你的变量名有点不透明,也许你想发明一些更有说服力的名字。
为什么有两个文件?不应该只有一个包含所有使用代码的文件吗?
答案 1 :(得分: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()