Я не знаю, как справиться с этой ошибкой python TypeError: объект 'tuple' не вызывается - PullRequest
1 голос
/ 18 июня 2020
• 1000 t работает ... Я очень новичок в python, поэтому я, возможно, не знаком с используемой сложной терминологией i python
grades = [('A', 90), ('B', 70), ('C', 50), ('D', 30), ('F', 0)]
while True:
    score = int(input('Enter grade: '))
    for counter in grades:
        if score >= counter(2):
            fingrade = (counter(1))
            break
    print('This student got an ' + fingrade)

это ошибка

if score >= counter(2):
TypeError: 'tuple' object is not callable

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

Вам нужно получить доступ к элементам, используя квадратные скобки, как это counter[2]

Когда вы пишете counter(2) python думает, что вы хотите вызвать counter как функцию, отсюда и ошибка.

Также кортежи имеют нулевой индекс, поэтому первый элемент на самом деле counter[0], а второй - counter[1].

0 голосов
/ 18 июня 2020

Вы неправильно обращаетесь к элементам в кортеже. Используйте квадратные скобки вместо круглых, поскольку круглые скобки подразумевают вызов функции. Написав counter(2) Python, вы думаете, что вы пытаетесь вызвать функцию counter с 2 в качестве аргумента. Однако counter представляет кортеж, который не вызывается.

Кроме того, после исправления этой ошибки вы заметите, что ваши индексы отключены на 1, поскольку индексы кортежей начинаются с 0.

Следующий код должен исправить проблемы.

grades = [('A', 90), ('B', 70), ('C', 50), ('D', 30), ('F', 0)]

while True:
    score = int(input('Enter grade: '))
    for counter in grades:
        if score >= counter[1]:
            fingrade = (counter[0])
            break

    print('This student got an ' + fingrade)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...