Peteryo01223 发表于 2020-1-13 16:15:27

《第016课:序列》的另一个问题

小甲鱼的《第016课:序列》,课后作业中最后一道题:

题目:视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果。

答案:

1.        def sum(x):
2.          result = 0
3.          
4.          for each in x:
5.                if (type(each) == int) or (type(each) == float):
6.                    result += each
7.                else:
8.                    continue
9.       
10.          return result
11.       
12.        print(sum())

请问:
1> result += each 是什么?我记得 += 是加上一个固定数值的简单写法,这里怎么加上了 each?
2> continue 是个固定用法么?Python预制了 continue的用法,是么?

jackz007 发表于 2020-1-13 16:25:51

本帖最后由 jackz007 于 2020-1-13 16:40 编辑

result += each         # 此句是 result = result + each 的简写形式
      continue 和 break 一样,都是循环专用语句,在循环过程中,只要遇到 continue 语句,就会立即结束本次循环,并无条件返回循环代码起点处,开始下一次循环,与执行完循环语句块中最后一条语句时的行为效果完全相同。
      在本例中,continue 是循环语句块的最后一条语句,根本就没有必要存在。
def sum(x):
    result = 0         
    for each in x:
      if (type(each) == int) or (type(each) == float):
            result += each
    return result
print(sum())

zltzlt 发表于 2020-1-13 17:57:50

1. result += each 其实就是 result = result + each,将 result 加上 each 的值赋值给 result。
2. 不是。在循环中使用 continue 表示跳过本轮循环,继续执行下一轮循环。

Peteryo01223 发表于 2020-1-14 10:31:06

zltzlt 发表于 2020-1-13 17:57
1. result += each 其实就是 result = result + each,将 result 加上 each 的值赋值给 result。
2. 不是 ...

Ok! Thank you!
页: [1]
查看完整版本: 《第016课:序列》的另一个问题