繁体   English   中英

如何在python中验证用户输入的随机大小范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM