python - 交替倒数两个数字

标签 python

我正在学习 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/

相关文章:

Cloud DataFlow 中的 Python 依赖项,requirements.txt 在本地工作,但在工作线程上不起作用

python - 屈服于...

python - 如何确保 update() 添加到字典末尾

python - Bokeh Geoviews 使用 Lat/Long 还是 UTM?

Python 创建范围 000 到 999

python - 得到包含的 URLconf 似乎没有任何模式

python - SciPy 抛物柱 D 和复数参数

python - 在 Django : How to serialize dict object to json?

python - 使用列表中的值更新字典值

Python - 将列表范围设置为特定值