python - TypeError: 'float' object is not iterable 尝试获取 GPA 列表的总和和平均值时
问题描述
我正在研究 GPA 计算器,它几乎完成了,但是这个错误一直在拖我的后腿。我得到 TypeError “TypeError: 'float' object is not iterable”。我知道这可能是由于 gpas 字典中的浮点值,但我不知道如何解决它。我的代码在下面。
def courses():
p = 0
classes = []
while p <= 5:
name = input('Please enter the name of the class :')
classes.append(name)
p += 1
print(classes)
func()
def func():
g = 0
score = 0
gpas = {'A+': 4.0,
'A': 4.0,
'B+': 3.7,
'B': 3.3,
'B-': 3.0,
'C+': 2.7,
'C': 2.3,
'C-': 2.0,
'D+': 1.7,
'D': 1.3,
'D-': 1.0,
'F': 0.0,
}
while g <= 5:
grades = []
grade = input('Enter your letter grade, in order of class listed :')
grade = grade.upper()
grades.append(grade)
g += 1
for grade in grades:
score = sum(gpas[grade])
return float(score + [grade] for grade in grades) / 6
print(score)
培训班()
解决方案
我重构了您的代码并添加了一些注释:
def courses():
p = 0
classes = []
while p <= 5:
name = input('Please enter the name of the class :')
classes.append(name)
p += 1
print(classes)
avg_grade = func(classes)
# Print avg_grade with float 2 number
print('avg_grade: ', "{:.1f}".format(avg_grade))
def func(classes):
g = 0
# Changed letter GPA
gpas = {
'A+': 4.0,
'A': 3.7,
'B+': 3.33,
'B': 3,
'B-': 2.7,
'C+': 2.3,
'C': 2,
'C-': 1.7,
'D+': 1.3,
'D': 1,
'D-': 0.7,
'F': 0.0,
}
# List of number grades
grades = []
while g < len(classes):
# Added class name
grade = input(f'Enter your letter grade of {classes[g]}:')
grade = grade.upper()
# Check valid letter grade
if grade in gpas:
grades.append(gpas[grade])
g += 1
else:
# Require re-enter valid letter
valid_letters = ', '.join(gpas.keys())
print('Please enter a valid letter grade. The valid letters is: ', valid_letters)
return sum(grades) / len(classes)
courses()
推荐阅读
- ef-core-2.1 - EFCore MAC - Unable to find an entry point named 'AppleCryptoNative_SslCreateContext'
- c++ - bw模板类和实例有什么区别?
- xamarin.ios - Google API SignIn HostedDomain 清理问题
- xamarin - 如何从 Android 和 iOS 模拟器使用本地 HTTPS ASP.NET Core 2.1 API
- javascript - 将 jQuery find() 函数转换为 ES6 Alternative
- firebase - Firebase 实时数据库在过去 3 小时内运行,并且不允许手动编辑数据
- java - java中的多个线程可以访问哪些变量?
- node.js - 节点 js 中的电子邮件验证显示 500 错误
- javascript - 如何获取迭代对象的值
- ios - 如何制作 MDM 应用并上传到应用商店?