在列表上迭代的Python
分配在列表上迭代的Python,python,Python,分配sum_extra和已收到的总额外学分给给定的列表测试分数。满分是100分,所以超过100分的都是额外的学分。对于给定的程序,sum_extra是8,因为1+0+7+0是8。给定程序的示例输出: 额外金额:8 请原谅我,我是一个编码新手,而且非常不擅长! 这是我的代码(不起作用),请帮助!: test_grades = [101, 83, 107, 90] sum_extra = -999 # Initialize 0 before your loop while test_grades
sum_extra
和已收到的总额外学分给给定的列表测试分数
。满分是100分,所以超过100分的都是额外的学分。对于给定的程序,sum_extra
是8,因为1+0+7+0是8。给定程序的示例输出:
额外金额:8
请原谅我,我是一个编码新手,而且非常不擅长!
这是我的代码(不起作用),请帮助!:
test_grades = [101, 83, 107, 90]
sum_extra = -999 # Initialize 0 before your loop
while test_grades > 100:
test_grades = test_grades - 100
sum_extra = test_grades[0:3]
for test_grades[0:3] > 100:
test_grades = test_grades - 100
sum_extra= test_grade[0] + test_grades[1] + test_grades[2] + test_grades[3]
print('Sum extra:', sum_extra)
对于这个问题,我的两个循环中哪一个更好?我如何编辑它们以使它们变得更好?因为我知道他们不会工作的!需要任何帮助!谢谢!:) 你可以这样做
test_grades = [101, 83, 107, 90]
count = 0
for i in test_grades:
if i-100>0:
count += (i-100)
print count``
这与for循环非常相似,除了计数之外,您的第一个循环将失败,因为
测试等级
属于列表
类型,因此在列表<100时说没有意义
另一种while循环如下所示:
i = 0;
while i < len(test_grades):
if test_grades[i] > 100:
test_grades[i] -= 100
else:
test_grades[i] = 0
print sum(test_grades)
您应该首先了解数据类型
在代码中,您试图将列表与整数进行比较,这是不可能的
另外,test_grades[0:3]将执行切片,这将为您提供一个子列表。所以当你这样做的时候:
sum_extra = test_grades[0:3]
sum_extra现在成为一个列表。我觉得你希望它保持完整
现在考虑这条线:
test_grades = test_grades - 100
这一行只是从列表的当前元素中减去100。假设当前元素是83。在这种情况下,你的答案应该是什么
83-100 = -17 ?
可能不会。因此,您应该首先检查数字是否大于100,如果大于100,则从中减去100。大概是这样的:
if test_grages[i] > 100:
sum_extra = test_grades[i] -100 # Dont alter the content of test_grades. You may need to use it further in you code.
您需要为列表中的每个元素循环上述代码行。因此,请使用循环:
i=0 # First element is at 0th index.
while i < len(test_grades):
if test_grages[i] > 100:
sum_extra += test_grades[i] -100
i++
i=0#第一个元素位于第0个索引处。
而i100:
总和额外+=测试等级[i]-100
我++
现在把这些放在一起:
test_grades = [101, 83, 107, 90]
sum_extra =0
i=0
while i < len(test_grades): #len() method gives you the length.
if test_grages[i] > 100:
sum_extra += test_grades[i] -100
i++
print(sum_extra)
test_grades=[101,83,107,90]
加总=0
i=0
而i100:
总和额外+=测试等级[i]-100
我++
打印(总和/额外)
只要你能做
test_grades = [101, 83, 107, 90]
sum_extra = 0 # Initialize 0 before your loop
#iterate over the values of the list
for i in test_grades:
if i>100:
#add extra to the sum extra
sum_extra=sum_extra+(i-100)
#finally print the extra sum
print('Sum extra:', sum_extra)
迭代列表
您尝试过吗?需要帮助吗?这里是:sum(考试成绩为-100分(如果成绩>100分))
。但你可能无法向老师解释。甚至在一行之内:reduce(lambda sum\u extra,grade:sum\u extra+max(grade-100,0),test\u grades,0)
test_grades = [101, 83, 107, 90]
sum_extra = 0 # Initialize 0 before your loop
#iterate over the values of the list
for i in test_grades:
if i>100:
#add extra to the sum extra
sum_extra=sum_extra+(i-100)
#finally print the extra sum
print('Sum extra:', sum_extra)
user_input = input()
test_grades = list(map(int, user_input.split())) # contains test scores
sum_extra = -999 # Initialize 0 before your loop
sum_extra = 0
count = 0
for num in test_grades:
if num > 100:
sum_extra += num
count += 1
sum_extra = sum_extra - (100 * count)
print('Sum extra:', sum_extra)