如何检查用户输入是否有这些行?

时间:2012-11-29 10:24:52

标签: python easygui

这是我在Python中的第二个程序。我似乎对自己的进步感到满意。问题是我想做的是:

choice=eg.ynbox(msg='wat to do')
for["true","1"] in choice:
        print("yes")
for["false","0"] in choice:
        print("no")

问题是这种状况不起作用。我在查找上一个问题的答案时看到了这样的代码,但我忘记了。我尝试使用谷歌搜索,但我不知道如何用文字说明..一点点语法帮助是必要的 BTW:它是一个带有easygui 0.96的gui程序。

3 个答案:

答案 0 :(得分:1)

choice = eg.ynbox(msg='wat to do')
if any(word in choice for word in ["true","1"]):
    print('yes')
elif any(word in choice for word in ["false","0"]):
    print('no')
else:
    print('invalid input')

或者,如果清单很短:

choice = eg.ynbox(msg='wat to do')
if 'true' in choice or '1' in choice::
    print('yes')
if 'false' in choice or '0' in choice::
    print('no')
else:
    print('invalid input')

答案 1 :(得分:0)

我假设您eg.ynbox(msg='wat to do')表示您正在创建是/否对话框。这意味着choice中存储的值为Integer,其中 1 表示 True 0 表示即可。只要在Python 2.x中没有重新分配 True False ,这在Python 2.x和Python 3.x 中都是正确的 TrueFalse是Python 3.x中的保留关键字,因此保证不会更改。因此,您只需使用if语句即可使用此值:

if choice:
    print 'Yes'
else:
    print 'No'

您不需要在10上匹配,因为它们代表TrueFalse

答案 2 :(得分:0)

您可以尝试使用以下代码代替您的代码:

def is_accept(word):
    return word.lower() in {'true', '1', 'yes', 'accept'}

def is_cancel(word):
    return word.lower() in {'false', '0', 'no', 'cancel'}

def get_choice(prompt=''):
    while True:
        choice = eg.ynbox(msg=prompt)
        if is_accept(choice):
            print('Yes')
            return True
        if is_cancel(choice):
            print('No')
            return False
        print('I did not understand your choice.')