我正在学习 python,我正在做 these exercises , 具体来说 this one在回文产品上。
我有两个数字,我想以交替的方式减少 1:
999, 999
998, 999
998, 998
997, 998
997, 997
...
我已经用 4 个 if 语句解决了它,但我认为这有点草率。有没有更好的办法?下面是代码:
palN1 = 999
palN2 = 999
def palin(palN1, palN2):
pal = palN1 * palN2
while str(pal)[::-1] != str(pal):
if palN1%2 == 0 and palN2%2 == 0:
palN1 += -1
pal = palN1 * palN2
elif palN1%2 != 0 and palN2%2 == 0:
palN2 += -1
pal = palN1 * palN2
elif palN1%2 != 0 and palN2%2 != 0:
palN1 += -1
pal = palN1 * palN2
elif palN1%2 == 0 and palN2%2 != 0:
palN2 += -1
pal = palN1 * palN2
print [palN1, palN2]
print str(pal)
if __name__=="__main__":
palin(palN1, palN2)
顺便说一句,我得到的练习结果是 [836,836],它的产品是 698896。 这是我的第一篇文章,如果我做错了什么,请见谅。
最佳答案
您可以使用 itertools.cycle
:
def solve(*args):
args = list(args)
le = len(args)
c = cycle(range(le))
print ("{} "*le).format(*args)
for _ in xrange( le*args[0] ):
i = next(c)
args[i] -= 1;
print ("{} "*le).format(*args)
...
>>> solve(999,999)
999 999
998 999
998 998
997 998
997 997
996 997
...
...
>>> solve(999,999,999)
999 999 999
998 999 999
998 998 999
998 998 998
997 998 998
997 997 998
...
...
关于python - 交替倒数两个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070982/