Я пытался создать основанный на Python калькулятор достоверности ISBN13, который должен работать в соответствии со следующим фрагментом кода.Он принимает аргумент типа string и печатает результат.
Я не понимаю, в чем здесь я ошибся. В этой программе здравый смысл подсказывает, что 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
Как вы обходите это?Кроме того, чтобы не расширять цикл?