如何使用4位数字验证输入

时间:2016-02-18 17:48:47

标签: validation python-3.x input

我想编写一个只接受用户输入的4位数字的程序。 问题是我希望程序接受像0007这样的数字而不是a 数字如7(因为它不是4位数字)我该如何解决?

这是我到目前为止写的代码......

while True:
try:
    number = int(  input("type in a number with four digits: ")  )
except ValueError:
    print("sorry, i did not understand that! ")
if number > 9999:
    print("The number is to big")
elif number < 0:
    print("No negative numbers please!")
else:
    break

print("Good! The number you wrote was", number)

3 个答案:

答案 0 :(得分:2)

在将用户的输入转换为整数之前,您可以使用'len'函数检查其输入是否有4位数

len("1234") //returns 4

然而,当使用'int'函数时,python将“0007”变为简单7,为了解决这个问题,您可以将它们的编号存储在每个列表元素都是数字的列表中。

答案 1 :(得分:1)

如果只是格式print,请修改您的print声明:

print("Good! The number you wrote was {:04d}", number)

如果您确实要存储前导零,请将数字视为字符串。这可能不是最优雅的解决方案,但它应该指向正确的方向:

while True:
try: 
    number = int(input("Type in a number with four digits: "))
except ValueError:
    print("sorry, i did not understand that! ")
if number > 9999:
    print("The number is to big")
elif number < 0:
    print("No negative numbers please!")
else:
    break

# determine number of leading zeros
length = len(str(number))
zeros = 0
if length == 1:
    zeros = 3
elif length == 2:
    zeros = 2
elif length == 3:
    zeros = 1

# add leading zeros to final number
final_number = ""
for i in range(zeros):
    final_number += '0'

# add user-provided number to end of string
final_number += str(number)

print("Good! The number you wrote was", final_number)

答案 2 :(得分:-2)

pin = input("Please enter a 4 digit code!")
if pin.isdigit() and len(pin) == 4:
    print("You successfully logged in!")
else:
    print("Access denied! Please enter a 4 digit number!")