-4

我正在制作一个 ISBN 程序来解决校验位,我想这样做,以便当程序为您找到校验位时,它会打开一个新字符串,上面写着“您是否要关闭程序”,我已经这样做了。

如果他们说'n'表示不它会返回到开头,如果那个人说'y'程序关闭我被卡住并开始搜索互联网我的代码在下面有人可以帮助调整它谢谢你。

这是我的代码:

ISBN=input("Please enter a 10 digit number for the ISBN check digit:  ")

while len(ISBN)!= 10:

    print("Please try again and make sure you entered 10 digits.")
    ISBN=int(input("Please enter the 10 digit number again: "))
    continue

else:
    D1 =int(ISBN[0])*11

    D2 =int(ISBN[1])*10
    D3 =int(ISBN[2])*9
    D4 =int(ISBN[3])*8
    D5 =int(ISBN[4])*7
    D6 =int(ISBN[5])*6
    D7 =int(ISBN[6])*5
    D8 =int(ISBN[7])*4
    D9 =int(ISBN[8])*3
    D10=int(ISBN[9])*2
    Sum=(D1+D2+D3+D4+D5+D6+D7+D8+D9+D10)
    Mod=Sum%11
    D11=11-Mod
    if D11==10:
        D11='X'
    ISBNNumber=str(ISBN)+str(D11)
    print("Your 11 digit ISBN Number is *" + ISBNNumber + "*")

def close():
    close=input ("would you like to close the program or try again 'y' for Yes and 'n' for No:")

    while len(close)==1:
        if input == "n":s
            return (ISBN)
        elif input == "y":
            exit()
close()#
4

2 回答 2

1

最简单的方法是将所有内容包装在一个while循环中:

while True:
    # ... put all your code here
    close = input("Would you like to try again? Enter 'y' for Yes and 'n' for No: ")
    if close.lower() in ("n", "no"):
        print("Exiting")
        break

这将每次循环,除非用户输入'n'(或类似的)。笔记:

  1. 更清晰的问题,有明确的是或否答案;和
  2. 使用lowerin允许可能的有效输入范围。

更广泛地说,我认为你的算法有问题;ISBN-10 号码的第 10 个字符(校验位)是根据前 9 个字符计算的:http ://en.wikipedia.org/wiki/Check_digit#ISBN_10 。

于 2014-01-23T13:29:31.140 回答
1

这会在您的代码中添加一个 for 循环

别的:

Sum = 0
for i in range(len(isbn)):
    sum= int(isbn[i])
mod=sum%11
digit11=11-mod
if digit11==10:
   digit11='X'
iSBNNumber=str(isbn)+str(digit11)
print('Your 11 digit ISBN Number is ' + iSBNNumber)
于 2014-01-29T16:05:21.830 回答