[oeasy]python0143_主控程序_main

news2024/11/26 14:46:19

主控程序

回忆上次内容

  • 上次把 apple.py 拆分成了
    • 输入
    • 主函数
  • 引用模块中变量的时候
    • 要带上包(module)名
      • get_fruits.a
      • get_fruits.b
  • 最终
    • 拆分代码 成功!
  • 可以将程序
    • 再拆分成
      • 输入
      • 输出
    • 然后 再由主函数调用吗?🤔

建立主控

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

图片描述

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

运行

图片描述

  • 运行成功

程序结构

图片描述

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

图片描述

尝试

  • 失败!

图片描述

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

文件结构

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

图片描述

  • 能对比一下吗?

对比

图片描述

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

图片描述

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

顺序过程

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

图片描述

  • 这是一个典型的 面向过程的 程序
    • 面向过程就是 Procedure Oriented
    • 按部就班
      • 把复杂的过程
        • 分解成 相对简单明确的模块
      • 每个模块 做自己简单明确的事情
      • 专业分工
      • 提高效率
  • 这是工业时代
    • 提高效率的思维模式

分工明确

  • 铁路警察
    • 各管一段
  • 不要想着怎么发明轮子
    • 轮子有现成的
    • 拿来用就完事了

图片描述

  • 接下来把模块分成三块
功能作用模块名
输入接收到什么信号get_fruits
处理怎么处理信号process
输出最终输出什么信号output
  • 那建立 process.py

三步走

  • main
    • 需要 3 个包都导入
  • process
    • 只需要导入 get_fruits
  • get_fruits
    • 虽然被导入了两次
    • 但是输入数值的部分
      • 只被执行一次
  • output
    • 只需要 process 模块求和的结果
    • 而不需要导入 get_fruits 模块
    • 需要明确 total 来自于 process 包

图片描述

  • 测试结果
    • 数字(123)当做测试用例的话
      • 能成功
    • 但是用字母(abc)当测试用例的话
      • 会如何呢?

不成功 🙅🏻‍♀️

图片描述

  • 问题出在process.py中
    • int(a) + int(b)那一步
  • 所以需要在那里
    • try
    • except

处理异常

  • 修改代码

图片描述

运行结果

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

图片描述

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

修改代码

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

图片描述

  • 这样运行是没有问题的

优化代码

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

图片描述

  • 转化工作
    • 其实应该在输入部分完成
  • 输入变量的容错处理
    • 应该在输入的时候 就第一时间做
    • 不要留到数据处理时 才做

总结

  • 我们细化了主控程序(main.py)

    • 导入(get_fruits.py)
    • 处理(process.py)
    • 输出(output.py)
  • 使用了 try 结构

    • try
    • except
    • 发现异常就报错
  • 输入部分的错误

    • 应该在 输入部分来报
  • 具体怎么报呢?🤔

  • 下次再说!👋

  • 蓝桥->https://www.lanqiao.cn/courses/3584

  • github->https://github.com/overmind1980/oeasy-python-tutorial

  • gitee->https://gitee.com/overmind1980/oeasypython

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/475426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java笔试强训 10】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥井字棋 …

大数据技术之大数据概论

第1章 大数据概念 大数据(Big Data): 指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产 大数据主要解决,海量数据的采集、存…

【吴恩达推荐】《ChatGPT Prompt Engineering for Developers》- 知识点目录

《ChatGPT Prompt Engineering for Developers》 1 Introduction 2 Guidelines Principle 1: Write clear and specific instructions Tactic 1: Use delimiters Tactic 3: “If-statement” Check whether conditions are satisfiedCheck assumptions required to do the …

RDD的Stage划分原理

1. 什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark 中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。在Spark 中,对数据的所有操作不外乎创建RDD、转化已有RDD 以…

JavaBeaneljstl

1.JavaBean 1.1 什么是JavaBean JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器 简单一点:建一个类,给一个无参的构造方法. 它就是JavaBean,对应JavaBean来说&#x…

【C++】程序员的屠龙母鸡:二叉树进阶OJ题详解

不会自动生成,还是我自己写目录吧 -.- 文章目录 前言一、稍微简单一点的二叉树OJ题二、相对困难一点的二叉树OJ题总结 前言 在看这篇文章前希望大家是学过二叉树的,不然理解起来可能会比较费劲,但我会尽自己的努力让大家学会这些题&#xf…

TensorFlow会被JAX代替吗,使用JAX训练第一个机器学习模型

上期文章我们分享了JAX的概念,Jax 是来自 Google 的一个相对较新的机器学习库。它更像是一个 autograd 库,可以区分每个本机 python 和 NumPy 代码。 “PythonNumPy 程序的可组合转换:微分、向量化、JIT 到 GPU/TPU 等等”。该库利用 grad 函…

vue 视频播放插件vue-video-player自定义样式

1、背景 项目中有涉及视频播放的需求,并且UI设计了样式,与原生的视频video组件有差异,所以使用了vue-video-player插件,并对vue-video-player进行样式改造,自定义播放暂停按钮、全屏按钮、时间进度条样式等 2、效果图…

10分钟叫你如何学会组织Prompt语言同AI沟通

提示词(Prompt)是与AI模型交流的语言,用以告诉AI模型想要生成的图像的特征。提示词的准确性、精准度直接决定了生成的图像是否符合我们的预期。 基础介绍 AIGC提示词通常由多个单词、词组或短句构成,以***,***分割组成&#xff…

如何更改Windows服务器时间

Windows操作系统自带时间同步功能,它会自动从互联网时间服务器获取时间,以保证系统时间的准确性。但是,有时候我们需要更改时间服务器,以获得更准确的时间同步。小编将为大家介绍如何更改Windows时间服务器,以及Window…

java基础知识——22.lambda表达式

这篇文章,我们来讲一下java的lambda表达式 目录 1.初识lambda表达式 2.lambda表达式介绍 2.1 函数式编程 2.2 lambda表达式的具体格式 2.3 Lambda表达式的好处 2.4 Lambda的省略写法 1.初识lambda表达式 首先,我们来看一下lambda表达式的应用 下…

运维——ssh无法登录云服务器

0x00 概述 一般来讲,无法登录ssh的原因挺多,如果无法登录云服务器,则除了要检查ssh端口是否放行,防火墙状态外,还需要检查云服务器web控制台入站规则是否开放了对应端口。如果你前面检查都是正常,那么还需…

实战打靶集锦-017-potato

提示:本文记录了博主的一次打靶过程 目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 Apache探查4.2 ProFTPD探查4.2.1 strcmp()函数绕过4.2.2 查找apache日志文件4.2.3 查看/etc/passwd文件4.2.4 破译密码4.2.5 突破边界 5. 提权5.1 系统信息枚举5.2 定时任…

基于Yolov5的NEU-DET钢材表面缺陷检测,优化组合新颖程度较高:CVPR2023 DCNV3和InceptionNeXt,涨点明显

1.钢铁缺陷数据集介绍 NEU-DET钢材表面缺陷共有六大类,分别为:crazing,inclusion,patches,pitted_surface,rolled-in_scale,scratches 每个类别分布为: 训练结果如下: 2.基于yolov5s的训练 map值: 2.1 Inception-MetaNeXtStage 对应博客:https://cv2023.blog.csdn.n…

实验5 彩色图像处理与图像变换

文章目录 一、实验目的二、实验内容1. 彩色图像平滑。(课本P310 例6.12)2. 彩色边缘检测。(课本P318 例6.16)3. 一维小波变换。(课本P364 例7.20)4. 二维小波变换。(课本P369 例7.22)5. 小波包分解。(课本P376 例7.24) 一、实验目的 掌握RGB彩色模型和HSI彩色模型之间的转换方…

C语言指针的使用

文章目录 前言一、指针基本概念介绍二、指针的大小三、使用指针访问变量和变量地址四、使用指针遍历数组总结 前言 一、指针基本概念介绍 在 C 语言中,指针是一种用于存储内存地址的数据类型。指针可以存储任何数据类型的内存地址,包括基本数据类型、数…

C语言之单链表的实现以及链表的介绍

一、为什么会存在链表 因为我们常用的顺序表会存在以下的一些问题: 1. 中间/头部的插入删除,时间复杂度为O(N) 2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长,势必会有一定…

算法的特性和空间复杂度---数据结构

目录 前言: 1.算法 1.1算法的特性 1.2设计算法 2.空间复杂度 3.学习复杂度的意义 ❤博主CSDN:啊苏要学习 ▶专栏分类:数据结构◀ 学习数据结构是一件有趣的事情,希望读者能在我的博文切实感受到数据之间存在的关系&#xff…

【3dmax】常用的快捷键总结以及如何修改快捷键

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于建模的笔记 🈶本篇是3dmax常用的快捷键总结以及如何修改快捷键 3dmax常用的快捷键总结以及如何修改快捷键 3dmax常用快捷键如何添加或修改快捷键 3dmax常用快捷键 视…

go pprof性能调优工具

go pprof 一、性能调优原则二、pprof1、pprof 功能简介2、pprof 排查实战前置工作a、CPUb、Heapc、goroutined、mutexe、block 3、pprof 的采样过程和原理a、cpub、heapc、goroutine && threadCreated、block && mutex 三、调优流程1、业务优化a、流程 2、基础…