我在单独的文本文件中有两个列表,"消息"和"代码"。我的程序将打开它们并阅读它们。我的程序是一个代码兑换器,它将获取代码并将其兑换为消息。
lstCodes = open("codes.txt").readlines()
lstMessages = open("messages.txt").readlines()
我将用户输入作为具有以下类的代码。
class DateCheck:
def __init__(self, date1):
self.date1 = date1
if date1 == datetime.date(xxxx,x,xx):
print('Correct! \n')
checkx = input('Are you ready to type in your final secret code? YES = 1, NO = 0: \n')
dcodex = input("Enter Code: \n")
#progressB=progress(50,.04)
LoopCheck(checkx, dcodex)
else:
print('Wrong code')
一旦要求用户输入代码,它就会将其传递给另一个类,该类将在文本文件中查找该代码,如果找到则返回messages.txt中的消息。
class LoopCheck:
def __init__(self, check, code):
self.check = check
self.code = code
if code in lstCodes:
print(lstMessages[lstCodes.index(code)])
else:
print("Wrong Code")
继续这个问题,它只适用于code.txt中的第一个代码和message.txt中的第一个消息。当我输入正确的代码2时,它返回"错误"。我试过看我如何阅读这些名单,但我无法弄清楚我做错了什么。我确定这是一个小错误,但我还没能弄清楚。
#messages.txt
message1
message2
#codes.txt
xxxx
xxxx
答案 0 :(得分:0)
最好是使用字典:
codes = {}
with open("codes.txt") as cod_fobj, open("messages.txt") as mess_fobj:
for code, mess in zip(cod_fobj, mess_fobj):
codes[code.strip()] = mess.strip()
现在:
>>>> codes['code1']
'message1'
支票可能如下所示:
if code in codes:
print(codes[code])
else:
print("Wrong Code")
或者:
try:
print(codes[code])
except KeyError:
print("Wrong Code")
答案 1 :(得分:0)
我想我弄清楚出了什么问题。我将created_at = Column(TIMESTAMP, default=datetime.utcnow, server_onupdate=text(''), nullable=False)
上的格式更改为:
codes.txt
我还将#codes.txt
xxxx, xxxx, xxxx
更改为lstCodes = open("codes.txt").readlines()
所以现在当我在lstCodes = open("codes.txt").read().split(',')
中查找代码时,它会返回其索引,然后我在code.txt
上查找索引号并且返回与之关联的消息。