|
发表于 2022-3-2 13:53:02
|
显示全部楼层
本楼为最佳答案
本帖最后由 isdkz 于 2022-3-2 14:25 编辑
那是因为你的第61到63行代码(行数根据你的图片),每个 x 都乘以 2 到 11 然后加了一遍,
因为 y 的取值在内循环里面,你可以用enumerate函数,
它可以根据你给定的起始值,来对你的每个数迭代出相应的索引,故对你的代码修改如下:
- def ISBN(n):
- copy = str(n)
- c = [int(i) for i in str(n)]
- c = c[::-1]
- sum1 = 0
- for i,x in enumerate(c, start=2): # 注意这里
- sum1 = i*x+sum1
- for h in [0,1,2,3,4,5,6,7,8,9,10]:
- sum2 = sum1+h
- if sum2%11 == 0:
- if sum2%11 == 0:
- if h == 10:
- trueISBN = copy+'x'
- else:
- trueISBN = copy+str(h)
- else:
- continue
- return (trueISBN)
- for num in [201314525, 488888913, 977889994, 753231846, 701134069]:
- trueISBN = ISBN(num)
- print(trueISBN)
复制代码
|
|