我正在学习使用LPTHW的python,我正在尝试将自己的游戏构建为练习36.我希望用户从10个学科的集合中输入特定的字符串。我可以将输入与已定义的列表进行比较,但我不能将用户限制为仅5个项目。相反,我可以将用户限制为仅五个输入,但不能同时执行这两个操作。
我创建了一系列学科(最初是字符串名称
discipline_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
然后我创建了一个空列表
your_disciplines = []
这是用于将用户输入与discip_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循环来限制用户条目,但我不能将它与比较结合起来。我的所有尝试都跑了五次以上。
for d in range(0, 5):
任何帮助将不胜感激。
答案 0 :(得分:0)
如果您想使用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
答案 1 :(得分:0)
要结合这两个条件,请将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")