[oeasy]python0143_主控程序_main

简介: [oeasy]python0143_主控程序_main

主控程序 回忆上次内容

  • 上次把 apple.py 拆分成了
  • 输入
  • 主函数


  • 引用模块中变量的时候
  • 要带上包(module)名
  • get_fruits.a
  • get_fruits.b



  • 最终
  • 拆分代码 成功!


  • 可以将程序
  • 再拆分成
  • 输入
  • 输出


  • 然后 再由主函数调用吗?🤔


建立主控

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


添加图片注释,不超过 140 字(可选)

  • 增大窗口宽度
  • ctrl+w , +


  • 减小窗口宽度
  • ctrl+w , -


运行

添加图片注释,不超过 140 字(可选)

  • 运行成功

程序结构

添加图片注释,不超过 140 字(可选)

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

添加图片注释,不超过 140 字(可选)

尝试

  • 失败!

添加图片注释,不超过 140 字(可选)

  • 还是需要在 output 中导入 get_fruits 这个包的
  • 虽然 main 认识了 get_fruits
  • 但是 output 不认识也不行
  • 不认识 就无从得到输入的数值


  • 我们跳出具体文件
  • 去观察文件架结构


文件结构

  • 可以看到出现了
  • 两个被引用包的 pyc 文件


添加图片注释,不超过 140 字(可选)

  • 能对比一下吗?

对比

添加图片注释,不超过 140 字(可选)

  • 编译后的pyc文件
  • 依稀能够看到
  • 字符串
  • 变量名
  • 函数名



添加图片注释,不超过 140 字(可选)

  • 模块隐隐约约
  • 是可以看懂的


顺序过程

  • 其实代码可以分成三块
  • 输入
  • 处理
  • 输出


添加图片注释,不超过 140 字(可选)

  • 这是一个典型的 面向过程的 程序
  • 面向过程就是 Procedure Oriented
  • 按部就班
  • 把复杂的过程
  • 分解成 相对简单明确的模块


  • 每个模块 做自己简单明确的事情
  • 专业分工
  • 提高效率



  • 这是工业时代
  • 提高效率的思维模式


分工明确

  • 铁路警察
  • 各管一段


  • 不要想着怎么发明轮子
  • 轮子有现成的
  • 拿来用就完事了


添加图片注释,不超过 140 字(可选)

  • 接下来把模块分成三块

功能

作用

模块名

输入

接收到什么信号

get_fruits

处理

怎么处理信号

process

输出

最终输出什么信号

output

  • 那建立 process.py

三步走

  • main
  • 需要 3 个包都导入


  • process
  • 只需要导入 get_fruits


  • get_fruits
  • 虽然被导入了两次
  • 但是输入数值的部分
  • 只被执行一次



  • output
  • 只需要 process 模块求和的结果
  • 而不需要导入 get_fruits 模块
  • 需要明确 total 来自于 process 包


添加图片注释,不超过 140 字(可选)

  • 测试结果
  • 数字(123)当做测试用例的话
  • 能成功


  • 但是用字母(abc)当测试用例的话
  • 会如何呢?



不成功 🙅🏻‍♀️

添加图片注释,不超过 140 字(可选)

  • 问题出在process.py中
  • int(a) + int(b)那一步


  • 所以需要在那里
  • try
  • except


处理异常

  • 修改代码

添加图片注释,不超过 140 字(可选)

运行结果

  • 字母的测试用例
  • 可以顺利地报错


添加图片注释,不超过 140 字(可选)

  • 但是现在还面临一个问题
  • 就是不明确
  • 不知道
  • 是 a 出了问题
  • 还是 b 出了问题


  • 报错细节不明确


修改代码

  • 在process模块中
  • 分别try...except...


添加图片注释,不超过 140 字(可选)

  • 这样运行是没有问题的

优化代码

  • 不过应该还有更好的方式

添加图片注释,不超过 140 字(可选)

  • 转化工作
  • 其实应该在输入部分完成


  • 输入变量的容错处理
  • 应该在输入的时候 就第一时间做
  • 不要留到数据处理时 才做


总结

  • 我们细化了主控程序(main.py)
  • 导入(get_fruits.py)
  • 处理(process.py)
  • 输出(output.py)


  • 使用了 try 结构
  • try
  • except
  • 发现异常就报错


  • 输入部分的错误
  • 应该在 输入部分来报



目录
相关文章
|
9天前
|
人工智能 Shell 开发工具
[oeasy]python062_在python中完成输入和输出_input_print
本文介绍了在Python中使用`input()`和`print()`函数完成输入和输出操作的基础知识。通过编写简单的程序,如问候用户和统计苹果数量,演示了如何添加提示信息、处理用户输入并输出结果。同时,回顾了上一次课程内容,包括`input`函数的参数和提示词的使用。文中还展示了如何在vim编辑器中编写和运行Python代码,并对vim和shell的基本操作进行了总结。最后提供了相关学习资源链接,方便读者进一步学习。
101 66
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
122 80
|
2月前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
119 69
|
2月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
122 68
|
27天前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
63 28
|
18天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
51 9
|
23天前
|
C语言 Python
[oeasy]python058_一句话让python崩了
本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。
30 10
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
45 14
|
25天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
29 3
|
28天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
24 1

热门文章

最新文章