我试图编写一个代码,该代码接收一个数字并返回所提升的数字之和到其相应位置的幂。 示例:>>> 534返回5 ^ 1 + 3 ^ 2 + 4 ^ 3。
7
我的代码适用于100以下的数字范围。对于带有错误消息的3位数字失败:TypeError:+:' int'不支持的操作数类型和' NoneType'
我的代码吼叫。我提前为结构不良的代码道歉。我只是一个初学者。谢谢。
def sum_dig_pow(a, b):
dict1 = {}
for k in range(a,b+1):
if k < 10:
dict1[k] = k**1
else:
num_len = int(len(str(k))) + 1
def dig_pow(k):
nonlocal num_len
num_len -= 1
if k < 10:
return k
else:
var = (k%10)**num_len + dig_pow(k//10)
dict1[k] = var
dig_pow(k)
return dict1
print(sum_dig_pow(98, 100))
答案 0 :(得分:0)
它的效率稍微低一点,但我认为将输入数字视为一个字符串,然后迭代它更容易理解,然后以数学方式分隔数字。
def dig_pow(n):
return sum(int(digit)**position for position, digit in enumerate(str(n), start=1))
dig_pow(534)
# 78