循环条件输入验证(Python)

2024-04-19 00:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个python脚本,实现以下功能:

  1. 首先,提示用户输入用户名或按enter键退出
  2. 提示用户输入数量
  3. 接下来,使用正则表达式确保用户名由5到10个字母字符组成
  4. 使用正则表达式确保数量仅由数值组成,并且输入的数量介于0和100之间
  5. 如果用户名和数量都有效,则打印用户名和数量。否则打印错误消息
  6. 最后,再次提示用户输入用户名或按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): ')
    

    我如何达到这些要求?当我运行我的程序,我总是打印错误信息,不能正确打印用户名和数量。 谢谢你抽出时间,我很感激你能给我的任何帮助


Tags: andto用户reinput数量exitusername
1条回答
网友
1楼 · 发布于 2024-04-19 00:51:39

如果您在理解复杂情况时遇到困难,请分别测试每个组件。在您的例子中,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

这很难说是Python,但它能完成任务

相关问题 更多 >