Comprobador de números de números ISBN, comentarios de usuarios

Estoy creando un progtwig ISBN para resolver el dígito de control y quiero hacerlo para que cuando el progtwig encuentre el dígito de control para usted abra una nueva cadena que diga “¿Desea cerrar el progtwig o no?”, Que ya tengo hecho.

Si la persona dice “n”, no, vuelve al principio y si la persona dice “y”, el progtwig se cierra. Me quedé atascado y empecé a buscar en internet. Mi código está abajo.

HERES MI CÓDIGO:

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()# 

La forma más fácil es envolver todo en un bucle 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 

Esto se repetirá cada vez, a menos que el usuario ingrese 'n' (o similar). Nota:

  1. Pregunta más clara, con una respuesta explícita de sí o no; y
  2. Uso de lower y in para permitir rango de posibles entradas válidas.

En términos más generales, creo que tienes problemas con tu algoritmo; el décimo carácter (dígito de control) para un número ISBN-10 se calcula en base a los primeros nueve: http://en.wikipedia.org/wiki/Check_digit#ISBN_10 .

Esto agrega un bucle for en su código

más:

 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)