练习时遇到问题。
将给定列表中收到的额外学分总额分配给 sum_extra 测试成绩。满分是 100,因此超过 100 的任何内容都是额外学分。
我已经安排好了。
for i in test_grades:
if i > 100:
sum_extra.append(i - 100)
sum_extra = sum(sum_extra)
我收到的错误。
Exited with return code 1.
Traceback (most recent call last):
File "main.py", line 9, in <module>
sum_extra.append(i - 100)
AttributeError: 'int' object has no attribute 'append'
不完全确定是什么原因造成的,因为练习生成的列表应该是整数形式。在我看来,这应该可行,但这肯定是因为不理解这里的一些关键要素。
全视图。
user_input = input()
test_grades = list(map(int, user_input.split())) # test_grades is an integer list of test scores
sum_extra = -999 # Initialize 0 before your loop
for i in test_grades:
if i > 100:
sum_extra.append(i - 100)
sum_extra = sum(sum_extra)
预期输出将是从 test_grades 输入生成的列表的总和。
正如错误所示,您有一个号码。
.append
仅对列表有效。
您可以使用生成器表达式,并将其传递给
sum()
“如果该数字超过 100,则从
test_grades
中取(每个数字减去 100)的总和”
sum_extra = sum(i - 100 for i in test_grades if i > 100)
用户输入=输入() test_grades = list(map(int, user_input.split())) # test_grades 是测试分数的整数列表
sum_extra = -999 # 在循环之前初始化 0
sum_extra = sum(i - 100 for i in test_grades if i > 100)
print('额外总和:', sum_extra)
user_input = input()
test_grades = list(map(int, user_input.split())) # test_grades is an integer list of test scores
sum_extra = 0 # Initialize 0 before your loop
for grade in test_grades:
if grade > 100:
sum_extra += (grade - 100)
print('Sum extra:', sum_extra)