要求用户在Python中输入正确的响应?

时间:2015-01-28 22:49:49

标签: python python-3.x

我是一名新手程序员,我正在尝试编写一个程序,我要求用户提供像奥巴马,克林顿或布什这样的特定输入,并在他们给出正确答案时向他们表示祝贺,或在他们给出错误答案时通知他们。

我很确定我犯了一个非常简单和愚蠢的错误,所以如果有人能帮助我,我会很感激。

def main ():

    pres = input ('Please enter the surname of a recent President of the United States: ')
    if pres == 'Bush' or 'Obama' or 'Clinton':
        print('Great job! You know your stuff!')
    else:
        print('Sorry, that was incorrect.')

main()

谢谢!

3 个答案:

答案 0 :(得分:5)

你有:

if pres == 'Bush' or 'Obama' or 'Clinton':

虽然这对人类有意义,但Python认为你的意思是:

if (pres == 'Bush') or ('Obama') or ('Clinton'):

'Obama''Clinton'是非空字符串,因此它们始终为true,因此整个表达式始终为true,并且输入的内容没有任何区别。

你需要明确你的意思:

if pres == 'Bush' or pres == 'Obama' or pres == 'Clinton':

但那是满口的,所以你也可以这样做,这将检查pres是否在正确的答案中:

if pres in {'Bush', 'Obama', 'Clinton'}:

答案 1 :(得分:2)

支票会员资格的最佳选择是使用set O(1),因此您可以使用以下内容代替if声明:

if pres in {'Bush','Obama','Clinton'}

来自python wiki:

  

sets模块提供构造和的类   操纵无序的独特元素集合。常见用途   包括成员资格测试,从序列中删除重复项,   并计算交集等集合上的标准数学运算   联合,差异和对称差异。

答案 2 :(得分:1)

你应该这样做:

if pres == 'Bush' or pres == 'Obama' or pres == 'Clinton':