代码之家  ›  专栏  ›  技术社区  ›  Victor Cano

字符串中的数字介于max和min之间

  •  0
  • Victor Cano  · 技术社区  · 8 年前

    所以我尝试让我的字符串在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 ")
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Pythonista    8 年前

    检查4位代码中的每个数字是否在这两个值之间。但每个数字都在0-9的范围内,因此这不是真的。好吧,这两个值之间不是第一个条件 if x > max 简单地检查数字是否大于 9999 然后返回True。您需要使用和/或>运算符检查此范围内的数字。

    你不应该给你的两个变量命名 min max 因为它们内置于python中,您正在覆盖功能。你也可以结合你的情况。如果你不想让你接受的价值观范围包含在内,那么就把 = 在里面 <= 在以下条件下排除 9999 1000

    你可以放下多余的 is True 在你最初的if条件下 if (expression) 将评估它的真实价值或“真实性”。

    我添加了一个while循环,它将持续提示用户输入4位代码,直到它们的长度确实为4位有效数字,以防止其他函数出错并验证输入。

    你甚至不需要 else: return False 因为返回什么都不会返回 None 并被评估为 在你的if条件下是真的,但我留下这个是为了让它接近原版。您可以将min和max声明为全局(或main()中的局部)函数,可以是其中之一,只需使用 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()
    
        2
  •  0
  •   Ari Cooper-Davis mikemaccana    8 年前

    在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)。