[英]How to verify the user input for a random sized range in python
更新:我如何检查“upperInteger”确实高于“lowerInteger”?
我希望从用户输入创建一个范围,并让它不仅验证输入是否正确,而且在收到可接受的输入之前不允许用户向前移动。 我相信应该使用 while 循环,但我不确定如何实现具有不确定范围大小的循环。
该代码只是将范围内的质数附加到一个列表中,然后将其打印出来。
prime_range = []
try:
lowerInteger = int(input("Enter lower range limit: "))
upperInteger = int(input("Enter upper range limit: "))
except:
print("Invalid input. Please input an integer and try again.")
else:
for i in range(lowerInteger, (upperInteger + 1)):
##Test if i is a prime number
primeflag = True
for j in range (2,i):
if(i % j == 0):
primeflag = False
break
if (primeflag == True):
prime_range.append(i)
print(prime_range)
您可以使用布尔变量来了解用户何时插入可接受的值:
prime_range = []
correct = False
while not correct:
try:
lowerInteger = int(input("Enter lower range limit: "))
upperInteger = int(input("Enter upper range limit: "))
correct = True
except:
print("Invalid input. Please input an integer and try again.")
else:
for i in range(lowerInteger, (upperInteger + 1)):
##Test if i is a prime number
primeflag = True
for j in range(2, i):
if i % j == 0:
primeflag = False
break
if primeflag == True:
prime_range.append(i)
print(prime_range)
你在正确的轨道上有一个 while 循环。
为了让事情更容易,我会将输入提取作为它自己的功能。 在此功能中,您可以验证输入的所有规则。
def parse_inputs():
while True:
lower = input("Enter lower range limit: ")
if not lower.isnumeric():
print("lower range must be an integer. Please try again.")
continue
lower = int(lower)
upper = input("Enter upper range limit: ")
if not upper.isnumeric():
print("upper range must be an integer. Please try again.")
continue
upper = int(upper)
if upper < lower:
print("lower range must be less than upper range. Please try again.")
continue
return lower, upper
现在您可以在循环中使用它:
lower, upper = parse_inputs()
for i in range(lower, upper + 1):
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.