为什么if-else不循环

时间:2017-10-31 13:45:53

标签: python if-statement duplicates remove-if

我发现我的编程if-else没有循环,为什么会发生这种情况?如何修复它以进行检查?

我的编程假设存储用户的输入必须在10到100之间,然后删除重复的输入。 示例:num=[11,11,22,33,44,55,66,77,88,99] 结果:`[22,33,44,55,66,77,88,99]

inList=[]    
for x in range(1,11):
    num = int(input("Please enter number "+str(x)+" [10 - 100]: "))

    if num >= 10 and num <= 100:
        inList.append(num)
    else:
        num = int(input("Please enter a valid number: "))

print(inList)

我发现if-else只做了一次,所以当我第二次输入无效num时,prog仍然会带我进入下一个输入程序。会发生什么事?

Please enter number 1 [10 - 100]: 1
Please enter a valid number: 1
Please enter number 2 [10 - 100]:

此外,请问如何检查inList中的重复数量,然后删除列表中的两个数字?

2 个答案:

答案 0 :(得分:2)

我还建议使用while循环。但是,只有在第一个提示是错误的时候才应输入while循环:

考虑这个例子:

inList = []

for x in range(1,11):
    num = int(input("Please enter number "+str(x)+" [10 - 100]: "))

    while not (num >= 10 and num <= 100):
        num = int(input("Please enter a valid number [10 - 100]: "))

    inList.append(num)

print(inList)

但是,我可以提出别的建议:

此代码创建一个有效输入列表[“10”,“11”....“100”],如果默认情况下输入的字符串不在该列表中,我们会要求新输入。最后,我们返回该字符串的int。这样我们确保输入“ashashah”不会抛出错误。试试吧:

inList = []

valid = list(map(str,range(10,101)))

for x in range(1,11):

    num = input("Please enter number {} [10 - 100]: ".format(x))

    while num not in valid:
        num = input("Please enter a valid number [10 - 100]: ")

    inList.append(int(num))

print(inList)

答案 1 :(得分:1)

我没有python专家,我没有环境设置来测试这个,但我可以看到你的问题来自哪里。

基本上,在你的for循环中你说的是

if num is valid then
    add to array
else
    prompt user for num

end loop

第二个提示没有发生任何事情,只是提示&gt;结束循环。你需要在for循环中使用另一个循环来获取num并确保它有效。以下代码是应该工作的内容,但如上所述,不是专家,也不是测试环境,因此可能存在语法错误。

for x in range(1,11):
    i = int(0)
    num = int(0)

    while num < 10 or num > 100:
        if i == 0:
            num = int(input("Please enter number "+str(x)+" [10 - 100]: "))
        else:
            num = int(input("Please enter a valid number: "))

        i += 1

    inList.append(num)

print(inList)