Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在列表上迭代的Python_Python - Fatal编程技术网

在列表上迭代的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)