Error: entrada esperada como máximo 1 argumento, obtuve 3

He configurado lo siguiente para que el bucle acepte 5 puntajes de prueba. Quiero que el bucle indique al usuario que ingrese 5 puntajes diferentes. Ahora puedo hacer esto escribiendo la entrada “Ingrese su próxima calificación de prueba”, pero preferiría que ingresara el indicador de puntuación para su número asociado.

Entonces, para la primera entrada, me gustaría que muestre “Por favor ingrese su puntaje para la prueba 1”, y luego para la segunda calificación, muestre “Por favor ingrese su puntuación para la prueba 2”. Cuando bash ejecutar este bucle, aparece el siguiente error:

Rastreo (llamadas recientes más última):

File "C:/Python32/Assignment 7.2", line 35, in  main() File "C:/Python32/Assignment 7.2", line 30, in main scores = input_scores() File "C:/Python32/Assignment 7.2", line 5, in input_scores score = int(input('Please enter your score for test', y,' : ')) TypeError: input expected at most 1 arguments, got 3 

Aquí está el código

 def input_scores(): scores = [] y = 1 for num in range(5): score = int(input('Please enter your score for test', y,': ')) while score  100: print ('Error --- all test scores must be between 0 and 100 points') score = int(input('Please try again: ')) scores.append(score) y += 1 return scores 

Muchas gracias por la ayuda 🙂 ~ Dustin

Una forma simple (y correcta) de escribir lo que quieres:

 score = int(input('Please enter your score for test ' + str(y) + ': ')) 

Porque la input solo quiere un argumento y usted está proporcionando tres, esperando que se unan mágicamente 🙂

Lo que debe hacer es construir su cadena de tres partes en ese único argumento, como con:

 input("Please enter your score for test %d: " % y) 

Así es como Python realiza la construcción de cadenas de tipo sprintf . A modo de ejemplo,

 "%d / %d = %d" % (42, 7, 42/7) 

es una forma de tomar esas tres expresiones y convertirlas en la única cadena "42 / 7 = 6" .

Vea aquí para una descripción de cómo funciona esto. También puede usar el método más flexible que se muestra aquí , que se podría usar de la siguiente manera:

 input("Please enter your score for test {0}: ".format(y))