python的用户输入验证

时间:2018-10-04 03:05:34

标签: python validation logic

我有一个非常简单的问题,我似乎找不到答案,并且对python来说是一个新手。我需要检查用户输入,以查看用户是否输入了四个操作之一。退出操作为“ ^”,“&”,“ |”和“ q”。如果用户没有输入有效的操作,将再次提示用户,因此需要while循环,有没有办法在一行中测试所有操作?这是我到目前为止的代码

    operation = input("enter an operation to be used\n")
    print('operation chosen:', operation)
    error = ("please enter |, &, ^, or q" )
    while operation != '&' 
    print(error)

4 个答案:

答案 0 :(得分:0)

此设置将仅接受(^&|q)中的输入,循环将循环进行,直到用户选择了这些选项为止,开始将operation初始化为值{strong> not 列表开始循环。

operation = 'x'
while operation not in ('^&|q'):
    operation = input('Enter operation from "^%|q": ')
print('Operation chosen: {}'.format(operation))
Enter operation from "^%|q": a
Enter operation from "^%|q": s
Enter operation from "^%|q": d
Enter operation from "^%|q": ^
Operation chosen: ^

此路由将执行相同操作,并向用户显示 Invalid 消息,尽管此路由在循环初始化operation

之前需要输入
operation = input('Enter operation from "^&|q": ')
while operation not in ('^&|q'):
    operation = input('Invalid entry. Please choose from "^%|q": ')
print('Operation chosen: {}'.format(operation))

答案 1 :(得分:0)

您可以将所有有效操作存储在一个数组中,并对照该数组检查输入;正确的输入会中断循环,错误的输入会引发错误并再次循环。

下面的示例代码

allowd_operations= ['|','&','^', 'q' ]
operation = ''

while True:
    operation = input("enter an operation to be used\n")
    if operation in allowd_operations:
        # correct input
        break

    print('operation chosen:', operation)
    error = ("please enter |, &, ^, or q" )
    print(error)

答案 2 :(得分:0)

欢迎您使用Python。这是一种通过递归和功能测试用户输入的方法,这对大型项目以及其中某些变量可能会发生变化的项目很有帮助:

def checkinput(userinput):
    if userinput in ('|^&q'):
        return userinput
    else:
        loopinputline = input("please enter |, &, ^, or q\n" )
        return checkinput(loopinputline)


operation = str(input("enter an operation to be used\n"))
finalinput = checkinput(operation)
print('operation chosen:', finalinput)

答案 3 :(得分:0)

<record model="ir.ui.view" id="score_card_form_view">
    <field name="name">Score Card</field>
    <field name="model">golf_online_ph.score_card</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group string="Score Card">
                    <field name="round_id" />
                    <field name="player_id" />
                    <field name="round_holes">
                        <tree editable="top" >
                            <field name="hole_number" readonly="1"/>
                            <field name="score_value"/>
                        </tree>
                    </field>
                </group>
            </sheet>
        </form>
    </field>
</record>

根据询问的问题,用户只需输入一个选项。对于@cash_the Stampede的答案,如果用户输入“ ^&”,它仍然被接受为正确答案,事实并非如此。所以以上只是很小的修正。