[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
  • 发现异常就报错


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



目录
相关文章
|
22天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
106 80
|
29天前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
114 69
|
1月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
114 68
|
4天前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
45 28
|
1天前
|
C语言 Python
[oeasy]python058_一句话让python崩了
本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。
20 10
|
11天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
33 14
|
3天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
18 3
|
6天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
13 1
|
20天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
30 9
|
23天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
67 6
下一篇
开通oss服务