Python防止用户生成整数列表中的重复项、使用while循环和try-except

1 投票
2 回答
1622 浏览
提问于 2025-04-18 04:25

我想让用户输入10个不重复的整数,这些整数的范围是1到100。以下是我目前的代码:

user_list = []
print "\nChoose any 10 discrete integers in the set [1, 100]. Do not choose duplicates."

i = 1

while i < 11:
    try:
        number_choice = int(raw_input("\nNumber %d?\n> " % i))

        if (0 <= number_choice <= 100) and isinstance(number_choice, int):
            i += 1
            user_list.append(number_choice)
            print "Your list so far: %r" % user_list
        elif (number_choice < 0) or (number_choice > 100):
            print "'I said to keep it in the set [1, 100].'"
            pass
        else:
            pass

    except ValueError:
        print "'That isn't a discrete integer, is it?'"

print sorted(user_list)

为了防止输入重复的数字,我想把第一个if语句改成这样:

if (0 <= number_choice <= 100) and (isinstance(number_choice, int)) and (number_choice not in user_list):

这样做是可以的,但如果用户输入了重复的数字,它会直接重复"Number %d?" % i的提示。请问我该如何修改这段代码,让它先显示一个提示'我说过不可以重复.',然后再继续循环呢?

2 个回答

0

首先在if语句中检查是否有重复的内容,然后再检查这个数字是否有效(也就是它是否是一个整数),最后如果都符合条件,就把它加到列表里,在“if else”部分处理。

4

i += 1 这一行之前:

if number_choice in user_list:
    print 'No duplicates!'
    continue

撰写回答