答案 0 :(得分:0)
从查看代码看起来您正在将decrypt_id与文件中包含的信息进行比较,其中不仅包含decrypt_id数据。因此,if语句永远不会被执行,因为数据不一样。
答案 1 :(得分:0)
当您使用file.read()时,您将阅读该文件的全部内容,您之前使用str(encdata)
,decrpyt_id
和str(encdata_2)
撰写了该文件。为了便于解释,我们假设encdata
为1,decrypt_id
为2,而encdata_2
为3. verify_vote
将是一个包含“123”的字符串 - 因为那是什么你写了 - 而decrypt_id
将是一个包含“2”的字符串。 if语句将评估为true的唯一情况是encdata
和encdata_2
都是空字符串。
编辑:再看一下这段代码,看起来if语句的目的是阻止用户多次投票。您可能要考虑做的是创建一个decrypt_ids
列表,您每次验证选民的ID时都会添加该列表,然后创建if语句if decrypt_id not in verified_list:
因此,if块将成为
if decrypt_id not in verified_list:
print '\n'
print 'Your voter id is verified!'
print '\n'
Vote = raw_input('Please place your vote: ')
file = open('ctf.txt', 'a') #open cla file (as a server)
file.write(str(publickey)) #writes publickey to cla file
file.write('\n')
file.write(Vote)
verified_list.append(decrypt_id)
else:
print '\n'
print 'You have already voted! Thank you!;
print '\n'
另外需要注意的是,您打开cla.txt进行阅读但从未关闭它。您应该在file.close()
之后放置verify_vote = file.read()
。