有没有办法将三元运算符与输入结合使用,可以一次性为变量赋值?
更冗长的方式:
# assume this happened a while back.
myVariable = "user: "
# I'd like to get these two lines down to one.
myInputResult = input('Enter something, or just hit Enter for the default: ')
myVariable += "the user typed: " + myInputResult if myInputResult != '' else 'the user did not type anything'
我需要做的是在没有先将其分配给变量的情况下引用input()
函数中的值。
我已经在其他语言中看到了一种技术,但看起来Python并不支持在将赋值视为变量时返回指定的值:
myVariable += "the user typed " + x if (x = input("Enter something or nothing: ")) != '' else "the user did not type anything"
不起作用。
请注意,即使input
可以返回默认值,但这还不够,因为当用户输入任何内容时,静态文本会有所不同。
变量方法很好,但我只是在寻找一种更简洁的方法来编写代码(如果可能的话)。
Python 3,顺便说一句。
答案 0 :(得分:0)
Python没有内联赋值。您可以编写一个函数,将变换应用于truthy值,并保留虚拟值,如空字符串不变(这是Optional.map
- 类型函数的“精简”版本):
def map_true(fn, value):
return value and fn(value)
并按如下方式使用:
myVariable += (
map_true("the user typed {}".format, input("Enter something or nothing: ")) or
"the user did not type anything")
但这不是一个巨大的进步。