将用户输入与列表进行比较,然后附加到新列表限制条目项目



我正在与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

相关内容

  • 没有找到相关文章

最新更新