Skip to content

Latest commit

 

History

History
208 lines (155 loc) · 3.92 KB

File metadata and controls

208 lines (155 loc) · 3.92 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0153
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在: 

     个人网站: `https://oeasy.org` 
     蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
     GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
     Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

比较运算符

回忆

  • 上次制作了
    • 十以内加法练习与判分

图片描述

  • 我想做个
    • 十以内加减法
    • 怎么做呢???🤔

分析减法

  • 首先 加减是 随机的
    • 需要 得到随机数
    • 根据他 得到
      • 加法
      • 还是减法

图片描述

  • 而且 减法 和 加法 不同
    • 被减数 一定得 大于 减数
    • 否则 得负数
  • 得先 对这两个数 进行排序

排序预演

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

图片描述

  • 先排序
    • 再按排序 结果赋值

图片描述

  • 可以保证 n1 > n2

编写代码

import random
n1 = random.randint(0,10)
n2 = random.randint(0,10)
op = random.randint(0,2)
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
    • result 在前面进行声明并赋值
from random import randint
n1 = randint(0,10)
n2 = randint(0,10)
op = randint(0,2)
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")

三目运算符

  • 另开一个终端
    • 学习新东西
    • 三目运算符
  • 三目指的是
    • 总共有三个因素
    • X决定最终结果

图片描述

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

动手

n1, n2 = 9, 5
big = n1 if (n1 > n2) else n2
small = n1 if (n1 < n2) else n2
big
small
  • 好像是可以做的

图片描述

  • 那怎么 根据 0 或 1
    • 获得加号或者减号呢?

再试

from random import randint
r = randint(0, 1)
op = "+" if (r == 0) else "-"
op
  • 这种方式是可以获得 op 的

图片描述

  • 但是如何 整合到代码中呢?

整合

  • 只有 减法 的时候 才 排序
from random import randint

n1 = randint(0, 10)
n2 = randint(0, 10)
r = randint(0, 2)

if r != 0:
    l = [n1, n2]
    l.sort()
    n2, n1 = l

op = "+" if (r == 0) else "-"
cal_expression = str(n1) + op + str(n2)
result = eval(cal_expression)

print(cal_expression, "=", end="")
answer = int(input())

if result == answer:
    print("\033[38;5;10m ✓ \033[0m")
else:
    print("\033[38;5;9m ✗ \033[0m")
  • 表达式的值
    • 通过 eval 得到

图片描述

  • 运行顺利

总结

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

图片描述

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

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。