输入错误:不支持的操作数

时间:2018-05-04 13:45:32

标签: python-3.x

我试图编写一个代码,该代码接收一个数字并返回所提升的数字之和到其相应位置的幂。 示例:>>> 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))

1 个答案:

答案 0 :(得分:0)

它的效率稍微低一点,但我认为将输入数字视为一个字符串,然后迭代它更容易理解,然后以数学方式分隔数字。

def dig_pow(n):
    return sum(int(digit)**position for position, digit in enumerate(str(n), start=1))

dig_pow(534)
# 78