我想知道如何设置循环以执行以下操作
我有一个要分割的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
我被困在这只是代码的一部分,但是我不确定如何拆分并提升到幂降序
答案 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)
注意:计算校验位时,您需要将数字乘以位置索引,而不是加幂。您需要检查此要求。在这种情况下,请使用*而不是**