Python输入和条件的单线程?

时间:2017-05-13 18:14:51

标签: python

有没有办法将三元运算符与输入结合使用,可以一次性为变量赋值?

更冗长的方式:

# 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,顺便说一句。

1 个答案:

答案 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")

但这不是一个巨大的进步。