python - 将用户输入与列表进行比较并附加到新列表中限制条目项

时间:2016-12-28 19:33:56

标签: python python-2.7 list for-loop compare

我正在学习使用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):

任何帮助将不胜感激。

2 个答案:

答案 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")