字符串中介于最大值和最小值之间的数字

2024-09-29 19:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试让我的字符串在1000到9999之间被验证,当我尝试运行这个时,它返回说它是未验证的。好奇如何解决这个问题,使它可以真正读取4位数字,用户输入的字符串。我把它作为一个字符串是有原因的,它可以很好地用于我代码的其他部分。只是这个让我很难受。你知道吗

def choiceTwo(digitCode):

    max = 9999
    min = 1000

    digitCode = [int(num) for num in digitCode]
    for x in digitCode:

        if x > max:
            return True

        if x < min:
            return False

def main():

    digitCode = str(input("Please enter a 4 digit code: "))

    if choiceTwo(digitCode) is True:
            print("Number is verified!")

    else:
            print("ERROR not a valid ")

Tags: 字符串intrueforreturnifisdef
2条回答

检查4位代码中的每个数字是否在这两个值之间。但每个数字都在0-9之间,因此这不是真的。好吧,不是在这两个值之间的persay你的第一个if条件if x > max是简单检查数字是否大于9999,然后返回True。您需要使用and/or>;运算符将条件嵌套在一起,以检查此范围之间的数字。你知道吗

您不应该将这两个变量命名为minmax,因为它们内置在python中,您正在重写功能。你也可以结合你的情况。如果您不希望接受值的范围是包含的,只需在下面的条件中使用<=中的=来排除99991000

您可以在原始if条件中去掉多余的is True,因为只要执行if (expression)就可以评估它的真值或“真实性”。你知道吗

我添加了一个while循环,它会不断提示用户输入4位代码,直到它们的长度确实是4位有效数字,以防止其他函数出错并验证输入。你知道吗

实际上,您甚至不需要else: return False,因为不返回任何内容将返回None,并且在if条件下被评估为为真,但我将此保留为使其接近原始值。您可以将min和max声明为全局(或main()中的local)函数,任意一个,如果希望简洁,只需使用if _min <= int(digitCode) <= _max。你知道吗

def choiceTwo(digitCode):

    _max = 9999
    _min = 1000

    if _min <= digitCode <= _max:
        return True
    else:
        return False

def main():

    digitCode = input("Please enter a 4 digit code: ")
    while not (digitCode.isdigit() and len(digitCode) == 4):
        digitCode = input("Please enter a 4 digit code: ")

    if choiceTwo(int(digitCode)):
        print("Number is verified!")

    else:
        print("ERROR not a valid ")
main()

在if语句中直接这样做可能更容易:

if int(digitCode) < int(max) and int(digitCode) > int(min):
    print("Number is verified!")
else:
    print("ERROR not a valid ")

编辑:我确保digitCode、max和min都是整数,因为您提到在代码的其他地方使用它们作为字符串。你知道吗

编辑2:同时,仔细检查函数中的语句;如果x在max和min之间,会发生什么情况(当前只有当x>;max时才会返回True)。你知道吗

相关问题 更多 >

    热门问题