作为'效率'的挑战(相反,代码的紧凑性,当然不是代码的pythonicness)我的任务是在一行上编写代码,这将返回序列的有效公式,给定输入将是由“,”分隔的有效整数序列。这就是我所拥有的:
for b in input(">>> ").split(", "): print("(((((",b,"-n)/(",b,"-n))+1)%2)*",b,")+",sep="",end="")
然而,这有问题。我唯一关心的问题是如何不在列表的最后一项打印“+”(因为它不会被添加到任何东西)。我希望有一种列表理解的方法,但我想不出一个。这可能吗?如果是这样,我是否可以添加错误处理,忽略输入列表中无效的整数项? (顺便说一下,数学运算出来了。我想。)
答案 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)'