我正在与LPTHW一起学习python,并且我正在尝试以练习36进行构建游戏。我希望用户从10个学科的集合中输入特定的字符串。我可以将输入与已定义的列表进行比较,但是我不能将用户只限制为5个项目。相反,我可以将用户限制在五个输入中,但不能同时进行。
我创建了学科列表(最初是字符串名称
discipline_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
然后我创建了一个空列表
your_disciplines = []
这是用于将用户输入与discipline_list进行比较的代码,并将用户输入附加到新的空列表(来自其他答案的代码)。
while True:
d = raw_input("enter your choice of discipline >> ")
d = str(d)
found_d = False
for i in discipline_list:
if d == i:
found_d = True
if found_d:
your_disciplines.append(d)
else:
print("Incorrect entry")
我可以使用循环限制用户条目,但是我不能将其与比较结合使用。我所有的尝试都超过五次。
for d in range(0, 5):
任何帮助将不胜感激。
要结合两个条件,检查your_disciplines
的长度为while
环路条件,仅在有5时退出。
while len(your_disciplines) < 5:
d = raw_input("enter your choice of discipline >> ")
d = str(d)
if d not in your_disciplines:
your_disciplines.append(d)
else:
print("Incorrect entry")
如果要使用while
循环,则可以尝试:
num = input("Enter your disciplines number >> ") # This is not required if you want to fix num to 5
j = 0
while j < int(num):
d = raw_input("enter your choice of discipline >> ")
d = str(d)
found_d = False
for i in discipline_list:
if d == i:
found_d = True
if found_d:
your_disciplines.append(d)
else:
print("Incorrect entry")
j += 1
一些注释:
而不是:
for i in discipline_list:
if d == i:
found_d = True
您可以做:
if d in discipline_list:
found_d = True
另外,您不需要使用found_d
变量。
简化的代码可能是:
num = input("Enter your disciplines number >> ")
i = 0
while i < int(num):
d = raw_input("enter your choice of discipline >> ")
d = str(d)
if d in discipline_list:
your_disciplines.append(d)
else:
print("Incorrect entry")
i += 1