我有一个非常简单的问题,我似乎找不到答案,并且对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)
答案 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的答案,如果用户输入“ ^&”,它仍然被接受为正确答案,事实并非如此。所以以上只是很小的修正。