我发现我的编程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中的重复数量,然后删除列表中的两个数字?
答案 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)