2017-05-13 21 views
1

3値演算子を入力と組み合わせて使用​​して、あるショット内の変数に何かを割り当てる方法はありますか?入力と条件付きの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、btw。

+2

...しかし、なぜキーストロークを保存しようとしていますか? – tiwo

答えて

0

Pythonにインライン割り当てがありません。あなたはtruthy値に変換を適用する関数を記述し、そのまま空の文字列のようなfalsy値のまま(これは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") 

しかし、これは大きな改善ではありません。

関連する問題