如何拆分一个数字,然后将每个数字提高为幂

时间:2019-05-21 18:32:34

标签: python-3.x

我想知道如何设置循环以执行以下操作

我有一个要分割的8位整数,然后将每个数字提升为幂,(幂需要从8开始,然后开始递减),然后将所有内容相加以获得总和,然后对模取11 对于前

int:30048117
sum=(3*8)+(0*7)+(0*6)+(4*5)+(8*4)+(1*3)+(1*2)+(7*1)
result=sum%11

如果我正确,答案应该是0

Python 3

number = input("enter number :")

for i in range(len(number)):
      for b in range(8,0,-1):
           sum += number[i]**b
           result = sum*(11/100)
 return result

我被困在这只是代码的一部分,但是我不确定如何拆分并提升到幂降序

2 个答案:

答案 0 :(得分:0)

您不需要外部的for循环,可以在计算总和时迭代数字字符串

number = input("enter number :")

num_sum = 0

#Iterate over number string and calculate sum
for b in range(8,0,-1):
    num_sum += int(number[len(number)-7])**b

#Take modulus 11
result = num_sum%11

print(result)

结果将为0

答案 1 :(得分:0)

num = input('enter number:')

# using slicing and enumearte()
print(sum(int(n) ** i for i, n in enumerate(num[::-1], 1)) % 11)

#using zip() and range()
print(sum(int(n) ** i for n, i in zip(num, range(8, 0, -1))) % 11)

注意:计算校验位时,您需要将数字乘以位置索引,而不是加幂。您需要检查此要求。在这种情况下,请使用*而不是**