mainmenu = input("Welcome to my ISBN calculator, please select an option\n\
1. Load ISBN Calculator\n\
2. Exit Program\n\
")
(mainmenu)
if mainmenu == ("2"):
print ("The ISBN Calculator will now close, thank you for using!")
time.sleep(1.5)
exit()
elif mainmenu == ("1"):
ISBN = input(" Please enter the 10 digit number exactly\n\
")
Digit1 = int(ISBN[0])*11
Digit2 = int(ISBN[1])*10
Digit3 = int(ISBN[2])*9
Digit4 = int(ISBN[3])*8
Digit5 = int(ISBN[4])*7
Digit6 = int(ISBN[5])*6
Digit7 = int(ISBN[6])*5
Digit8 = int(ISBN[7])*4
Digit9 = int(ISBN[8])*3
Digit10 = int(ISBN[9])*2
sum=(Digit1+Digit2+Digit3+Digit4+Digit5+Digit6+Digit7+Digit8+Digit9+Digit10)
num=sum%11
Digit11=11-num
if Digit11==10:
Digit11='X'
ISBNNumber=str(ISBN)+str(Digit11)
print('The ISBN number is --> ' + ISBNNumber)
这是我的代码,当我尝试输入我的10位数字时,它总是会出现数字1的错误,没有任何帮助吗?
答案 0 :(得分:1)
为什么行:
(mainmenu)
在你的if语句中删除():
if mainmenu == "1":
...
elif mainmenu == "2":
...
else:
print("Invalid menu option")
exit()
答案 1 :(得分:0)
使用Python 2执行该代码时会出现问题。请改用Python 3。
在Python 2中,input
评估您提供的输入,因此如果您输入1
,则mainmenu
为1
(数字) )而不是"1"
(字符串),因此您的if
- 检查都失败,您的代码到达sum=...
部分而没有输入任何ISBN号。
答案 2 :(得分:0)
这将是有效的。缩进很重要。
mainmenu = input("Welcome to my ISBN calculator, please select an option\n\
1. Load ISBN Calculator\n\
2. Exit Program\n\
")
if mainmenu == "2":
print ("The ISBN Calculator will now close, thank you for using!")
time.sleep(1.5)
exit()
elif mainmenu == "1":
ISBN = input(" Please enter the 10 digit number exactly\n")
Digit1 = int(ISBN[0])*11
Digit2 = int(ISBN[1])*10
Digit3 = int(ISBN[2])*9
Digit4 = int(ISBN[3])*8
Digit5 = int(ISBN[4])*7
Digit6 = int(ISBN[5])*6
Digit7 = int(ISBN[6])*5
Digit8 = int(ISBN[7])*4
Digit9 = int(ISBN[8])*3
Digit10 = int(ISBN[9])*2
sum=(Digit1+Digit2+Digit3+Digit4+Digit5+Digit6+Digit7+Digit8+Digit9+Digit10)
num=sum%11
Digit11=11-num
if Digit11==10:
Digit11='X'
ISBNNumber=str(ISBN)+str(Digit11)
print('The ISBN number is --> ' + ISBNNumber)
请注意。这段代码只是工作代码,不是一个好的实现。
答案 3 :(得分:0)
如上所述,您的" ISBN"与标准有很大不同,标准有10或13位数,包括校验位。
ISBN-10计算的干净实施将是:
from string import digits
checkTemplate = digits + "X"
def isbn(isbnBody):
"""append check digit to a isbn given as string without check digit"""
assert len(isbnBody) == 9
s = sum([int(isbnChar)*multiplier for isbnChar, multiplier in zip(isbnBody, range(1,10))])
checkDigit = checkTemplate[s % 11]
return isbnBody + checkDigit