Python:是否可以使用if语句在一行中判断输入

时间:2018-01-17 14:55:03

标签: python python-3.x syntax

我正在使用python 3.6。我想输入一个字符串或其他东西,然后用if语句在一行中判断它。 这可能是一个简单的问题,但我无法解决这个问题。我知道怎么做没有一行:

words = input()
if words == 'a':
    print(words)
else:
    print('Not a')

然而,我无法将其排成一行。我想做的是这样的:

print(input() if input() == 'a' else 'Not a')

它不起作用。第一个输入和第二个输入是不同的。是否可以保留第一次输入的结果并在一行中检查其状况? 谢谢!

2 个答案:

答案 0 :(得分:5)

您可以使用单例生成器/列表技巧来避免调用函数两次,但仍然重用其结果:

print(next(x if x == 'a' else 'Not a' for x in [input()]))

当你了解它时,你也可以缩短三元x if y else z构造,使其变得更加神秘: - )

print(next(('Not a', x)[x == 'a'] for x in [input()]))

但是 更少的行本身就是一个目的。您拥有的五行完全有效且可读

答案 1 :(得分:0)

>>> words = input()
'a'
>>> print(words if words=='a' else 'not a')
a
>>> words = input()
'b'
>>> print(words if words=='a' else 'not a')
not a