Skip to content

Latest commit

 

History

History
203 lines (147 loc) · 4.76 KB

137-203373-三目运算符.sy.md

File metadata and controls

203 lines (147 loc) · 4.76 KB
show version enable_checker
step
1.0
true

比较运算符

回忆

  • 上次制作了彩色奇偶
    • 奇数偶数是双分支
    • 任意自然数
    • 不是奇数
    • 就是偶数
    • 根据奇偶变色
  • 运算和判分
    • 十以内加法练习与判分

图片描述

  • 我想做一个十以内加减法的练习与判分
    • 怎么做呢???🤔

分析减法

  • 首先加减是随机的
  • 需要得到一个随机的值
  • 根据他得到加法还是减法
  • 而且减法有个问题
  • 就是被减数一定得大于减数
  • 否则负数处于未知领域
  • 得对这两个数进行排序

图片描述

排序预演

  • 一定要避免结果出现负数
    • 一定要求n1 > n2

图片描述

  • 先排序
    • 再按排序结果赋值
      • 就可以保证 n1 > n2

图片描述

  • 这样数字的大小就可以控制了

编写代码

import random
n1 = random.randint(0,9)
n2 = random.randint(0,9)
op = random.randint(0,1)
if op == 0:
    result = n1 + n2
    print(str(n1) + "+" + str(n2) + "=",end="")
else:
    l = [n1,n2]
    l.sort()
    n2,n1 = l
    result = n1 - n2
    print(str(n1) + "-" + str(n2) + "=",end="")
answer = int(input())
if result == answer:
    print("\033[38;5;10m ✔ \033[0m")
else:
    print("\033[38;5;9m  ✘ \033[0m")

图片描述

  • 代码能跑
  • 能简化一下吗?
  • 变量的声明最好都在开头部分

修改代码

  • 下面的第一句导入语句中
  • 把 import 变成 from ... import
  • 因为 randint 函数是在 random 这个包里面的
  • 所以 from random import randint
  • 就可以直接引用 randint 这个函数了
from random import randint
n1 = randint(0,9)
n2 = randint(0,9)
op = randint(0,1)
result = 0
if op == 0:
    result = n1 + n2
    print(str(n1) + "+" + str(n2) + "=",end="")
else:
    l = [n1,n2]
    l.sort()
    n2,n1 = l
    result = n1 - n2
    print(str(n1) + "-" + str(n2) + "=",end="")
answer = int(input())
if result == answer:
    print("\033[38;5;10m ✔ \033[0m")
else:
    print("\033[38;5;9m ✘ \033[0m")
  • result 在前面进行声明并赋值
  • 代码好像更长了
  • 继续优化
  • 优化之前我们另开一个终端
  • 并且学习一种新东西

三目运算符

  • c 语言有一种三目运算符
  • 三目指的是总共有三个因素决定最终结果

图片描述

  • 官方文档好像是可以有的

动手

图片描述

  • 好像是可以做的
  • 那怎么根据 0 或 1 的值动态地获得加号或者减号呢?

再试

图片描述

  • 这种方式是可以获得 op 的
  • 但是如何整合到我们的代码中呢?

图片描述

整合

图片描述

  • 如果是减法排序
  • 加法不排序
  • 表达式的值通过 eval 得到

图片描述

  • 运行顺利
  • 我突然又有了新主意

灰阶

图片描述

  • 我想随机得到一个灰阶[232,255]
  • 然后写上"道"
  • 前景色根据灰阶的颜色得到
  • 243 以下含 243 前景色为白色\033[38;5;15m
  • 否则为黑色\033[38;5;0m
  • 这个可以做么?
  • 走起来

编码

图片描述

图片描述

  • 好像还是可以的
  • 能做成三目表达式的形式么?

三目表达式

图片描述

图片描述

  • 做是可以做的
  • 但是有点啰嗦
  • 每次字符串的加法是否必要呢?

简化

图片描述

  • 简化之后功能是不受到影响的
  • ok

总结

  • 这次研究了 三目运算符
  • 根据条件是否满足
  • 可以得到不同的结果值
  • 三目运算符都可以转化 if 语句

图片描述

  • 如果我有想有三个分支怎么办??🤔
  • 下次再说 👋