Skip to content

Latest commit

 

History

History
212 lines (162 loc) · 5.16 KB

3070-188730-000307 主控程序.sy.md

File metadata and controls

212 lines (162 loc) · 5.16 KB
show version enable_checker
step
1.0
true

主控程序

回忆上次内容

  • 上次把apple.py拆分了
  • 拆成了输入和输出两部分
    • import可以导入本地的python文件
    • 而且被导入的文件还被变成了看不太懂的文件
    • 放在__pycache__里面
    • 看起来像一个缓存
  • 使用变量的时候
  • 要使用上包名input
    • input.a
    • input.b
  • 最终拆分代码成功
  • 我又有了新想法🤪
    • 建立一个主控程序
    • 分别导入输入和输出
  • 可以么?🤔

建立主控

  • 新建一个main.py 文件
  • 导入input、output两个包
  • 然后运行

图片描述

图片描述

  • 运行成功

程序结构

图片描述

尝试修改

  • 既然我在main.py 里面已经导入了input这个包
  • 我还有必要在output中导入这个包么?
  • 实践出真知

图片描述

  • 还是需要在output中导入input这个包的
  • 虽然main认识了input
  • 但是output不认识也不行
  • 不认识就无从得到输入的数值
  • 我们跳出去观察文件架结构

文件结构

图片描述

  • 我们是可以看到出现了两个被引用包的pyc文件
  • 里面的字符串并没有完全加密
  • 是可以看懂的
  • 还可以怎么玩么?

顺序过程

  • 其实代码可以分成三块
    • 输入
    • 处理
    • 输出
  • 这是一个典型的面向过程的程序
    • 面向过程就是Procedure Oriented
    • 按部就班 把复杂的过程分解成相对简单明确的模块
    • 每个模块做自己简单明确的事情
    • 专业分工
    • 提高效率
    • 而且代码可以复用

图片描述

  • 输入部分
    • 可以对接别的process比如说乘除之类
  • 处理部分
    • 上面可以不接着两种水果
    • 而接着两种动物
  • 输出部分
    • 可以接收别的运算的结果

分工明确

图片描述

  • 接收到什么信号 - 输入 - input
  • 怎么处理信号 - 处理 - process
  • 最终输出什么信号 - 输出 - output
  • 那建立process.py

走起

图片描述

  • main需要3个包都导入
  • process只需要导入input
  • input虽然被导入了两次
  • 但是输入部分只被执行一次
  • output只需要process模块求和的结果
  • 而不需要导入input模块

调整

图片描述

  • output中不再导入input
  • output中没有total
    • 需要明确total来自于process包
    • 数字当做测试用例的话,能成功
    • 但是用字母当测试用例不成功

图片描述

继续进化

  • 问题出在强制转化为整型变量那一步
  • 所以需要在那里
  • try except
  • 修改代码

图片描述

  • 字母的测试用例通过了
  • 但是现在还面临一个问题
  • 就是不明确
  • 就是到底是a出了问题还是b出了问题不明确

修改代码

图片描述

  • 在转化的时候都加上了try except
  • 但是运行的时候
  • 不合理
  • 转化工作其实应该在输入部分完成
  • 输入变量的容错处理
  • 应该在输入的时候就第一时间做
  • 不要留到数据处理的模块才做

完善输入

  • 输入的时候
  • 应该包括对于输入内容的验证
  • 于是再修改代码

图片描述

分别校验

  • 代码分成了输入a和输入b两个部分
  • 但是代码还是有问题
    • 因为如果转化为整型成功
    • string + int 又是不合理的

继续修改

  • 我们把加号变成逗号
  • 尝试一下测试用例

图片描述

  • 测试通过
  • 这里面有个else

else

  • else 的意思就是否则
  • 如果没有异常except 发生
  • 就运行else里面内容
  • 每个输入部分都包括
    • 提示和输入
      • input
    • 尝试转化为整型数字
      • try
      • int
    • 异常处理
      • except
    • 非异常处理
      • else

finally

  • 除此之外还有finally

图片描述

  • 注意都要有英文半角的冒号
  • 都要通过4个字符的缩进控制范围
  • 这就是try的完全体

整体结构

图片描述

总结

  • 我们强化了主控过程
    • 导入
    • 处理
    • 输出
  • 了解了try的完全体
    • try
    • except
    • else
    • finally
  • 发现导入部分
    • 可以再分为两个子模块
    • 一个输入a
    • 一个输入b
  • 可以再拆分么?🤔
  • 我们下次再说!👋