Skip to main content
 首页 » 编程设计

python之许多数字的力量

2025年05月04日13jackei

我有一个程序必须像这样计算许多数字的幂:

条目:

3 
2 3 6 

因此,程序必须计算:

2**(3**6) 

我编写了一个只能计算 3 个数字的幂的程序。但是,如果我尝试计算 4 个或更多数字的幂,程序将输出不正确的值:

nb = int(input()) 
numbers = list(map(int,input().split())) 
lenth = len(numbers)-2 
rez = 0 
n = 1 
for i in range(lenth): 
    rez += numbers[n]**numbers[n+1] 
    n+=1 
tot = numbers[0] ** rez 
print(tot) 

请您参考如下方法:

您可以使用 functools.reduce 和内置函数 pow(如果您使用的是 python 2,reduce 也是一个内置函数)

>>> from functools import reduce 
>>> reduce(pow, [2, 3, 6]) 
262144 

编辑:

正如评论中指出的,这实际上会计算 ((((a**b)**c)**d)**e)。要获得 a**(b**(c**(d**e)))) 的结果,您仍然可以使用 reduce,但您必须反转输入参数列表和创建一个翻转的 pow 函数:lambda a, b: b**a

>>> reduce(lambda a, b: b**a, reversed([2, 3, 6])) 

作为函数:

def super_pow(*args): 
    return reduce(lambda a, b: b**a, reversed(args)) 

请注意,这很容易产生无法计算或无法容纳在系统内存中的大量数字,从而导致您的计算机死机。