我正在尝试编写一个实现以下功能的python脚本:
最后,再次提示用户输入用户名,或按Enter键退出。
import re, sys
username = ""
username = input('Enter Username (Press ENTER to exit): ')
while username != "":
quantity = input('Enter Quantity: ')
if re.match("[a-zA-Z]{5,10}$", username) and re.match("[0-9]{1,2}$", quantity) and type(quantity) is int and quantity > 0:
print('Username: ', username, "\n" 'Quantity: ', quantity)
else:
print('Error: Enter a username consisting of 5-10 alphabetical letters and a valid integer between 1 and 100')
username = input('Enter Username (Press ENTER to exit): ')
我如何达到这些要求?当我运行我的程序时,我总是打印错误信息,无法正确打印用户名和数量。 感谢您抽出宝贵时间,我感谢您提供的任何帮助。
答案 0 :(得分:0)
如果您无法理解复杂情况,请单独测试每个组件。在您的情况下,type(quantity)
不会是int
str
,这也意味着quantity > 0
会引发TypeError
(您没有到达那里,因为type
测试使条件短路。
稍微好一点的条件是:
if re.match("[a-zA-Z]{5,10}$", username) and re.match("[0-9]{1,2}$", quantity) and int(quantity) > 0
这不是pythonic,但它将完成工作。