gpt4 book ai didi

Python 程序没有按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:33 25 4
gpt4 key购买 nike

我尝试创建一个基于 python 的 ISBN13 有效性计算器,它应该根据以下代码片段工作。它接受一个字符串类型的参数并打印结果。

我不明白我哪里错了,在这个程序中,常识告诉我 num 会交替给出 3 或 1。

def isbncheck(isbn):
num = int(0)
for i in range(0,12):
if num % 2 is 1:
num = num + (int(isbn[i])*3)
print(isbn[i] + " * 3 + at i=" + str(i))
elif num % 2 is 0:
num = num + (int(isbn[i]))
print(isbn[i] + " * 1 + at i=" + str(i))
else:
print("Unhandled Exception.")

print("_"*7)
print(num)
num = num%10
print(num)
print(isbn[12])
print(int(isbn[12]))
if num != int(isbn[12]):
print("This is not valid")
else:
print("It is Valid.")

print(isbncheck("9788177000252"))

我期望输出为 1 和 3 的交替因子。相反,我得到了这个:

9 * 1 + at i=0
7 * 3 + at i=1
8 * 1 + at i=2
8 * 1 + at i=3
1 * 1 + at i=4
7 * 3 + at i=5
7 * 1 + at i=6
0 * 3 + at i=7
0 * 3 + at i=8
0 * 3 + at i=9
2 * 3 + at i=10
5 * 3 + at i=11
_______
96
6
2
2
This is not valid
None

你是如何解决这个问题的?除了不扩大循环?

最佳答案

你的问题在这里:

for i in range(0,12):
if num % 2 is 1:

num 是您的累计金额。您必须检查索引,而不是到目前为止的总和。

for i in range(len(isbn)):
digit = int(isbn[i])
if i % 2 == 1:
num += 3 * digit

还要注意一些小的改进:

  • 由于您必须两次引用该值,请将其转换为 int 并将其保存在一个临时的 digit 中。
  • 使用==进行数值比较; is 为您提供object 比较,这在一般情况下会失败。

关于Python 程序没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50747733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com