所以我尝试让我的字符串在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 ")
检查4位代码中的每个数字是否在这两个值之间。但每个数字都在0-9之间,因此这不是真的。好吧,不是在这两个值之间的persay你的第一个if条件
if x > max
是简单检查数字是否大于9999
,然后返回True。您需要使用and/or>;运算符将条件嵌套在一起,以检查此范围之间的数字。你知道吗您不应该将这两个变量命名为
min
和max
,因为它们内置在python中,您正在重写功能。你也可以结合你的情况。如果您不希望接受值的范围是包含的,只需在下面的条件中使用<=
中的=
来排除9999
和1000
您可以在原始if条件中去掉多余的
is True
,因为只要执行if (expression)
就可以评估它的真值或“真实性”。你知道吗我添加了一个while循环,它会不断提示用户输入4位代码,直到它们的长度确实是4位有效数字,以防止其他函数出错并验证输入。你知道吗
实际上,您甚至不需要
else: return False
,因为不返回任何内容将返回None
,并且在if条件下被评估为不为真,但我将此保留为使其接近原始值。您可以将min和max声明为全局(或main()中的local)函数,任意一个,如果希望简洁,只需使用if _min <= int(digitCode) <= _max
。你知道吗在if语句中直接这样做可能更容易:
编辑:我确保digitCode、max和min都是整数,因为您提到在代码的其他地方使用它们作为字符串。你知道吗
编辑2:同时,仔细检查函数中的语句;如果x在max和min之间,会发生什么情况(当前只有当x>;max时才会返回True)。你知道吗
相关问题 更多 >
编程相关推荐