Пользовательский список ввода, затем добавление чисел для вычисления контрольной цифры ISBN - PullRequest
0 голосов
/ 14 октября 2018
print("""Hi, and welcome to \"GENERATE A CHECK DIGIT \" """)

num1 =input("Enter a 12 digit ISBN number and I will output your check digit:  ")
oddTotal=int(num1[0])+int(num1[2])+int(num1[4])+int(num1[6])+int(num1[8])+int(num1[10])
evenTotal=int(num1[1])+int(num1[3])+int(num1[5])+int(num1[7])+int(num1[9])+int(num1[11])
Total=oddTotal+(evenTotal*3)
checkDigit=10-(Total%10)

print("For the given ISBN: "  + str(num1)+ " The Check digit should be: " + str(checkDigit))
print("Complete ISBN 13 CODE = " +str(num1)+str(checkDigit))

Мой вопрос: я добавил «int» перед каждым элементом списка, но посчитал это утомительным.Я попытался поместить его в начале перед основным брекетом, но это не сработало.

Есть ли способ улучшить этот код.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Вы можете использовать понимание списка, чтобы преобразовать все элементы вашей строки num1 в целые числа, а затем использовать нарезку списка для вычисления обеих сумм:

num1 = input("Enter a 12 digit ISBN number and I will output your check digit:  ")
nums = [int(num) for num in num1]
oddTotal = sum(nums[::2])
evenTotal= sum(nums[1::2])
0 голосов
/ 14 октября 2018

Вы можете использовать sum с map и нарезкой строк:

num1 = input("Enter a 12 digit ISBN number and I will output your check digit:  ")
oddTotal = sum(map(int, num1[::2]))
evenTotal = sum(map(int, num1[1::2]))

Синтаксис для нарезки строк похож на нарезку списка, то есть формат start:end:step.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...