首页 > 解决方案 > Python:使用输入和while循环输入4位数字

问题描述

要求用户使用 input 和 while 循环输入 4 位数字。循环应该一直运行,直到用户输入 q。如果发生错误,请确保用户永远不会看到 Traceback。这是一个示例输出:

Please enter four digits. Enter 'q' to quit.
Enter four digits: 3210
Enter four digits: 3333
Enter four digits: 332
Sorry, you inputted 3 digit(s).
Enter four digits: 32AB
Please input only numerical values.
Enter four digits: q  <- This quits the program.

我的代码如下:

while True:
try: 
    number = int(input("Please enter four digits: "))
except ValueError: 
    print("Please input only numerical values ")
if number > 9999:
    print("Please enter four digits")
elif number <1000:
    print("Sorry, you inputted 3 digit(s) ")
elif number < 0:
    print("Please enter four digits:")
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(final_number)

但我的循环似乎有点问题,因为 3digits 只能使用 number<1000?当用户输入一些像 32AB 这样的数字时,如何调整它?任何人都可以检查我的代码并更正它吗?太感谢了。

标签: pythonloops

解决方案


尝试更多类似的东西。在这里,我们使用 len 来查找数字的位数。但首先我们必须将用户输入转换为字符串。

while True:
    try: 
        number = str(input("Please enter four digits: "))
        int(number)
        if len(number) > 4:
            print("Incorrect")
        elif len(number) < 4:
            print("Incorrect")
        else:
            break
    except ValueError: 
        print("Please input only numerical values ")

推荐阅读