2017-03-07 8 views
-1

「効率」(むしろコードのコンパクトさ、ひいてはコードの非平凡性)の課題として、私は単一のコード入力が "、"で区切られた有効な整数シーケンスであれば、シーケンスの有効な式を返す。これは私が持っているものです:ループを使って文字列を定義する方法(または印刷する)

for b in input(">>> ").split(", "): print("(((((",b,"-n)/(",b,"-n))+1)%2)*",b,")+",sep="",end="") 

しかし、これには問題があります。私が懸念している唯一の本当の問題は、リストの最後の項目に "+"を印字しないようにすることです(何にも追加されないので)。私はリストの理解の方法があると思っていたが、私は考えることができない。これは可能ですか?もしそうなら、私はエラー処理で追加することもできますが、入力リストの有効な整数でない項目は無視されますか? (ちなみに、数学がうまくいくと思う。。)

答えて

0

あなたは

"+".join("((((({}-n)/({}-n))+1)%2)*{})".format(*([item]*3)) for item in input(">>> ").split(", ")) 

一緒にアイテムを連絡するために参加する例を使用することができます

"+".join("((((({}-n)/({}-n))+1)%2)*{})".format(*([item]*3)) for item in [1,2,3,4]) 
'(((((1-n)/(1-n))+1)%2)*1)+(((((2-n)/(2-n))+1)%2)*2)+(((((3-n)/(3-n))+1)%2)*3)+(((((4-n)/(4-n))+1)%2)*4)' 
関連する問題