如何在一行上定义(或打印)带有循环的字符串

时间:2017-03-07 16:40:56

标签: python

作为'效率'的挑战(相反,代码的紧凑性,当然不是代码的pythonicness)我的任务是在一行上编写代码,这将返回序列的有效公式,给定输入将是由“,”分隔的有效整数序列。这就是我所拥有的:

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

然而,这有问题。我唯一关心的问题是如何不在列表的最后一项打印“+”(因为它不会被添加到任何东西)。我希望有一种列表理解的方法,但我想不出一个。这可能吗?如果是这样,我是否可以添加错误处理,忽略输入列表中无效的整数项? (顺便说一下,数学运算出来了。我想。)

1 个答案:

答案 0 :(得分: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)'