我正在使用python 3.6。我想输入一个字符串或其他东西,然后用if语句在一行中判断它。 这可能是一个简单的问题,但我无法解决这个问题。我知道怎么做没有一行:
words = input()
if words == 'a':
print(words)
else:
print('Not a')
然而,我无法将其排成一行。我想做的是这样的:
print(input() if input() == 'a' else 'Not a')
它不起作用。第一个输入和第二个输入是不同的。是否可以保留第一次输入的结果并在一行中检查其状况? 谢谢!
答案 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