python - 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 这样的数字时,如何调整它?任何人都可以检查我的代码并更正它吗?太感谢了。
解决方案
尝试更多类似的东西。在这里,我们使用 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 ")
推荐阅读
- node.js - 从 React js 应用程序读取快速会话 cookie
- amazon-s3 - 从 Apex 调用 S3 时 AWS 访问密钥无效
- octave - 放大 Octave rlocus 上的标记
- amazon-web-services - 我如何(可以)配置 AWS SNS HTTP 请求超时?
- postgresql - 在 spring boot 中使用 flywaydb 和 google cloud sql 的问题
- oracle-apex-5 - 在 oracle apex 中运行的情况
- c - scanf 在我按两次 Enter 之前不接受输入
- html - 网页抓取网页的特定部分
- c# - 使用多种方法创建一个简单的计算器
- r - 跨面板叠加文本