我试图定义一个函数,该函数询问用户一周中的哪几天是可用的。我需要将他们的输入保存到一个列表中以备将来使用。我想确保他们正确地输入了星期几,并且格式正确。我试了各种方法,但似乎不能使它正常工作。
到目前为止我写的是:
daysWeek = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
def daysInput(message):
print(daysWeek)
z = False
while z == False:
i = list(input(message).strip().title().replace(",", " ").split(" "))
print(i)
varify = 0
for day in i:
for dow in daysWeek:
if day == dow:
varify += 1
else:
varify = 0
if varify == 0:
print("Invalid entry")
else:
z = True
return i
当执行varify += 1
时,执行下一个迭代,即使输入的日期与前一个迭代中的正确日期匹配,varify
也被设置为0。这意味着,除非您只输入最后天(Sun
),否则输入将被拒绝。
其次,如果找到了一天,并且检查了输入中的第二天,您将通过再次清除varify
来销毁之前的结果,即使在下一次迭代中会找到匹配。
您需要实现这样的逻辑:对于所有输入,一周中的某些天应该与之匹配。使用all
函数和in
操作符可以更轻松地完成此操作:
daysWeek = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
def daysInput(message):
print(daysWeek)
while True:
inp = list(input(message).strip().title().replace(",", " ").split(" "))
print(inp)
if all(day in daysWeek for day in inp):
return inp
print("Invalid entry")
daysInput("Enter some days of the week: ")