【问题标题】:TypeError: '>=' not supported between instances of 'dict' and 'int'TypeError: 'dict' 和 'int' 的实例之间不支持'>='
【发布时间】:2020-07-28 01:42:56
【问题描述】:

我的代码出现以下错误...

TypeError: 'dict' 和 'int' 的实例之间不支持 '>='

知道为什么吗?尝试运行一个循环,查看每个学生的加权平均分数,然后为他们分配一个字母等级 A - F ...由于某种原因,当它试图拉出字母等级时,循环拒绝工作。

使用python 3.7.6

steve = {"Name": "Steve",
         "Homework": [90, 97, 75, 92],
         "Quizzes": [88, 40, 94],
         "Tests": [75, 90]}
alice = {"Name": "Alice",
         "Homework": [100, 92, 98, 100],
         "Quizzes": [88, 40, 94],
         "Tests": [75, 90]}
tyler = {"Name": "Tyler",
         "Homework": [0, 87, 75, 22],
         "Quizzes": [0, 75, 78],
         "Tests": [100, 100]}
print(steve)
print(alice)
print(tyler)


students = []
students = [steve, alice, tyler]

for i in students:
    print(f"Name: {i['Name']}\nHomework: {i['Homework']}\nQuizzes: {i['Quizzes']}\nTests: {i['Tests']}")


numbers = []
def average(numbers):
    return sum(numbers) / len(numbers)

def get_weighted_average(student):
        homework_average = average(student["Homework"])
        quiz_average = average(student["Quizzes"])
        test_average = average(student["Tests"])
        weighted_score = homework_average*.1 + quiz_average*.3 + test_average*.6
        return weighted_score

print(f"Steve's: {get_weighted_average(steve)}")
print(f"Tyler's: {get_weighted_average(tyler)}")
print(f"Alice's: {get_weighted_average(alice)}")

def get_letter_grade(score):
if score >= 90:
    return 'A'
elif score >= (80):
    return 'B'
elif score >= (70):
    return 'C'
elif score >= (60):
    return 'D'
else:
    return 'F'

print(get_letter_grade(50))
print(get_letter_grade(100))
print(get_letter_grade(72.5))

for i in students:
    print(f"Name: {i['Name']}'s weighted score is {get_weighted_average(i)}")
    print(f"Name: {i['Name']}'s letter grade is: {get_letter_grade(i)}")

【问题讨论】:

  • 请提供完整的追溯。不确定您的代码在哪里触发了该错误。
  • Traceback(最近一次调用最后):文件“/home/fanjin/.config/JetBrains/PyCharmCE2020.1/scratches/scratch.py​​”,第 58 行,在 print(f"名称:{i['Name']} 的字母等级为:{get_letter_grade(i)}") 文件“/home/fanjin/.config/JetBrains/PyCharmCE2020.1/scratches/scratch.py​​”,第 41 行,在 get_letter_grade if score >= 90: TypeError: '>=' not supported between 'dict' and 'int'
  • 在你的最后一行:get_letter_grade()score 作为参数,你传递给它一个student
  • @ShadowRanger 这不是我的问题,我只是跑了代码

标签: python


【解决方案1】:

最后你需要get_letter_grade(i)而不是get_letter_grade(get_weighted_average(i))

【讨论】:

  • 太棒了!就是这样。
【解决方案2】:

此错误是由最后两行引起的,其中i 是一个字典,并被用作get_letter_grade 函数的参数,该函数应该接受整数作为参数。

你是说get_letter_grade(get_weighted_average(i))吗?

将来,最好检查 functinos 中参数的数据类型,以便您更轻松地查看错误发生的位置。

【讨论】:

    猜你喜欢
    • 2021-01-15
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2018-09-03
    • 2020-11-13
    相关资源
    最近更新 更多