Ошибка - ввод ожидается не более 1 аргумента, получил 3 - PullRequest
3 голосов
/ 02 апреля 2012

Я настроил следующее для цикла, чтобы принять 5 результатов теста.Я хочу, чтобы цикл подсказывал пользователю ввести 5 разных оценок.Теперь я мог бы сделать это, написав ввод «Пожалуйста, введите ваш следующий тестовый балл», но я бы предпочел, чтобы каждый введенный балл подсчитывал для соответствующего номера.

Итак, для первого ввода мне бы хотелось, чтобы на нем отображалось «Пожалуйста, введите ваш счет для теста 1», а затем для второго балла - «Пожалуйста, введите ваш счет для теста 2».Когда я пытаюсь запустить этот цикл, я получаю следующую ошибку:

Traceback (most recent call last):
  File "C:/Python32/Assignment 7.2", line 35, in <module>
    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

Вот код

def input_scores():
    scores = []
    y = 1
    for num in range(5):
        score = int(input('Please enter your score for test', y, ': '))

        while score < 0 or 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

Ответы [ 2 ]

6 голосов
/ 02 апреля 2012

Простой (и правильный!) Способ написать, что вы хотите:

score = int(input('Please enter your score for test ' + str(y) + ': '))
2 голосов
/ 02 апреля 2012

Поскольку input хочет только один аргумент, а вы предоставляете три, ожидая, что он волшебным образом объединит их вместе: -)

Что вам нужно сделать, это встроить вашу трехчастную строку в один аргумент, например:

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

Вот как Python строит строки типа sprintf. Например,

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

- это способ взять эти три выражения и превратить их в одну строку "42 / 7 = 6".

См. здесь для описания того, как это работает. Вы также можете использовать более гибкий метод, показанный здесь , который можно использовать следующим образом:

input("Please enter your score for test {0}: ".format(y))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...