Python obteniendo errores de entrada del usuario

Tengo un progtwig simple que le pide al usuario que ingrese el número entre 1-9 y si el número se ingresó anteriormente, le pedirá al usuario que ingrese otro número. El usuario tiene 10 bashs o bashs.

Esto es solo una parte de lo que quería hacer, pero tengo problemas para pasar el parámetro del método getNum al método que lo llama. Si ingreso el número entre 1-9, no tiene ningún problema. El problema comienza cuando ingresé el número ingresado anteriormente y las indicaciones solicitan otro número.

def getNum(numList): num = input("Pick your number: ") if num 9: print 'Invalid number. Please try again.' getNum() if num in numList: print 'Number taken. Please try again.' getNum() else: return num inputList = [] endGame = True choice = 0 attempts = 0 while endGame == False or attempts < 10: userNum = getNum(inputList) print 'Number entered:', userNum inputList.append(userNum) print inputList attempts += 1 

¿Alguien puede hacerme saber lo que hice mal aquí?

Necesitas usar

 return getNum(numList) 

en lugar de

 getNum(numList) 

en la función getNum . El motivo es que llama a la función getNum recursiva, por lo que debe devolver el valor aceptado a través de todas las recursiones realizadas. Además, debe pasar los argumentos a cada llamada.

la forma en que llama a getNum () en “si las condiciones” es incorrecta, debería ser: –

 if num <= 0 or num >9: print 'Invalid number. Please try again.' getNum(numList) if num in numList: print 'Number taken. Please try again.' getNum(numList) 

Una solución completa sin los peligros de input , manejo de errores y ningún problema con un límite de recursión.

 def get_num(num_list): while True: try: num = int(raw_input('Pick your number: ')) except ValueError: print('Not a number') else: if 0 < num <= 9: if not num in num_list: return num else: print('Number taken.') else: print('Invalid number.') number_list = [] for _ in range(5): number = get_num(number_list) print('Number entered: {}'.format(number)) number_list.append(number)