【问题标题】:why the if-else does not loop为什么 if-else 不循环
【发布时间】:2017-10-31 13:45:52
【问题描述】:

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

我的 prog 假设存储用户的输入必须在 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 只做了一次,所以当我第二次输入 invalid num 时,prog 仍然把我带到下一个输入过程。会发生什么?

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

另外,请问如何检查 inList 是否有重复的 num,然后删除列表中的两个 num?

【问题讨论】:

  • 谢谢提醒,我已经编辑python了
  • 因为if 语句不是循环;这是一个分支。使用while 循环。
  • 是的,我之前已经在我的 prog for inList=[] 中定义了它,但我没有包含它

标签: python if-statement duplicates remove-if


【解决方案1】:

我还建议使用 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)

【讨论】:

  • 非常感谢!有用!我曾经认为我应该对所有输入使用 int(),但我现在明白我可以在列表中做到这一点
【解决方案2】:

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

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

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

end loop

第二个提示没有发生任何事情,它只是提示 > 结束循环。您需要在 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)

【讨论】:

  • 是的,这就是我想做的,非常感谢你帮助我......
猜你喜欢
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2011-12-25
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多