1

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

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

问题是这个 for 条件不起作用。我在查找上一个问题的答案时看到了这样的代码,但我忘记了。我试过谷歌搜索,但我不知道如何用语言表达。顺便说一句,需要一点语法帮助:它是一个带有 easygui 0.96 的 gui 程序。

4

3 回答 3

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')
于 2012-11-29T10:30:27.070 回答
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.')
于 2012-11-29T14:54:55.717 回答
0

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

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

您不需要匹配1and0因为它们同时代表Trueand False

于 2012-11-29T10:30:29.213 回答