Skip to main content
 首页 » 编程设计

python之交替倒数两个数字

2025年05月04日17davidwang456

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