我想编写一个只接受用户输入的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)
答案 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!")