fazerse 发表于 2020-6-29 04:48:52

有关三元操作符的问题,课上例子我理解,课后作业跳跃了

不好意思,0 基础问的问题较可笑。
题目如此,
请将以下代码修改为三元操作符实现:
   x, y, z = 6, 5, 4
    if x < y:
      small = x
      if z < small:
            small = z
    elif y < z:
      small = y
    else:
      small = z

复制代码

===============================================================================================
首先,这个X,Y,Z=6,5, 4    怎么理解是6,5,4 三个数字随机 赋值给X,Y,Z 吗?

其次   答案中, small = x if (x < y and x < z)      不是 只要X<Y    small 就等于X 了?如何推导出 还需要满足and 后面的 X<Z ?

另外,想确认一下,   要得出small = Y    只需要   if (x < y and x < z)   条件为false,   也就是 X >=Y即可, 不用考虑 X与Z 的 比值?
         那么后面的else (y if (y<z) else z)这段 如果不加 外层括号 会如何

小甲鱼的铁粉 发表于 2020-6-29 07:45:06

1.X,Y,Z = 6,5,4结果是X =5Y = 5Z = 4
2.small = x if (x < y and x < z) 是指x<y 和x<z同时成立时small = x

小甲鱼的铁粉 发表于 2020-6-29 07:47:05

3.不能不加括号的,
else (y if (y<z) else z)
相当于
else:
    if(y < z):
      y = y
    else:
      y = z

Twilight6 发表于 2020-6-29 08:16:26

本帖最后由 Twilight6 于 2020-6-29 08:45 编辑




首先,这个X,Y,Z=6,5, 4    怎么理解是6,5,4 三个数字随机 赋值给X,Y,Z 吗?

这个就是按顺序赋值,右边的数值按顺序赋值给左边的参数,比如左边第一个也就是的 X 对应的就是 右边第一个也就是 6,这样赋值的


其次   答案中, small = x if (x < y and x < z)      不是 只要X<Y    small 就等于X 了?如何推导出 还需要满足and 后面的 X<Z ?

当你 x < y和x > z 时候会满足这两个条件:
if x < y:
      small = x
      if z < small:
            small = z
导致 small 最后会被 z 赋值所覆盖,所以三元运算符里面要等于 x 时候 还要加上个 x < z 使得内部的 if 条件不成立


另外,想确认一下,   要得出small = Y    只需要   if (x < y and x < z)   条件为false,   也就是 X >=Y即可, 不用考虑 X与Z 的 比值?
         那么后面的else (y if (y<z) else z)这段 如果不加 外层括号 会如何

不需要,因为题目就是这么要求的,除非题目有这样的要求你才需要这样比;加不加括号都一样,这里甲鱼哥只是为了你能更好的理解三元运算符的结构层次


Twilight6 发表于 2020-6-29 08:45:30

小甲鱼的铁粉 发表于 2020-6-29 07:47
3.不能不加括号的,
else (y if (y

可以哈,加括号并没有影响

小甲鱼的铁粉 发表于 2020-6-29 09:01:24

Twilight6 发表于 2020-6-29 08:45
可以哈,加括号并没有影响

好的{:10_297:}

fazerse 发表于 2020-6-29 15:48:36

Twilight6 发表于 2020-6-29 08:16
这个就是按顺序赋值,右边的数值按顺序赋值给左边的参数,比如左边第一个也就是的 X 对应的就是...

追问一下,   
当你 x < y和x > z 时候会满足这两个条件:
   if x < y:
            small = x
            if z < small:
                small = z

导致 small 最后会被 z 赋值所覆盖,所以三元运算符里面要等于 x 时候 还要加上个 x < z 使得内部的 if 条件不成立
这里我当时考虑到了 第二个 if中    small等价x 时, 两个 if 都成立, 则small取值 Z,   不过如果要逆否 Z<X   不是应该是X<=Z吗?    为何只要 X< Z即可?

fazerse 发表于 2020-6-29 16:13:19

Twilight6 发表于 2020-6-29 08:16
这个就是按顺序赋值,右边的数值按顺序赋值给左边的参数,比如左边第一个也就是的 X 对应的就是...

追问一下,   
当你 x < y和x > z 时候会满足这两个条件:
   if x < y:
            small = x
            if z < small:
                small = z

导致 small 最后会被 z 赋值所覆盖,所以三元运算符里面要等于 x 时候 还要加上个 x < z 使得内部的 if 条件不成立
这里我当时考虑到了 第二个 if中    small等价x 时, 两个 if 都成立, 则small取值 Z,   不过如果要逆否 Z<X   不是应该是X<=Z吗?    为何只要 X< Z即可?

Twilight6 发表于 2020-6-29 16:20:51

fazerse 发表于 2020-6-29 16:13
追问一下,   
当你 x < y和x > z 时候会满足这两个条件:
    if x < y:


嗯 我觉得你的更为准确

fazerse 发表于 2020-6-29 16:54:00

Twilight6 发表于 2020-6-29 16:20
嗯 我觉得你的更为准确

谢谢老师,一贯解答

Twilight6 发表于 2020-6-29 16:55:59

fazerse 发表于 2020-6-29 16:54
谢谢老师,一贯解答

{:10_297:}
页: [1]
查看完整版本: 有关三元操作符的问题,课上例子我理解,课后作业跳跃了