[oeasy]python0137_相加运算_python之禅_import_this_显式转化

news2024/9/20 18:30:25

变量类型 相加运算

回忆上次内容

  • 上次讲了是从键盘输入变量
  • input 函数
    • 可以有提示字符串
    • 需要有具体的变量接收输入的字符串
  • 输入单个变量没有问题
    • 但是输入两个变量之后
    • 一相加就非常离谱

图片描述

  • 怎么办呢?🤔

基本实验

  • 回到 游乐场

    • 做个 实验
  • 两个整数 相加

    • 结果是求和
  • 两个字符串 相加

    • 结果是字符串拼接

图片描述

  • 目前的结果
    • 显然来自于拼接
  • input()进来的东西
    • 真的 都是字符串

确定类型

  • type()函数
    • 可以确定变量的类型
    • 比如 type(“1”)
  • 那么
    • 能把接收 input()的变量类型
      • 输出出来么?

图片描述

转化函数

  • 从 input()来的
    • 肯定是 字符串类型的变量
    • 需要 转化为 数字类型
    • 然后 再相加

图片描述

  • 好了
    • 思路有了
  • 整合到原来的 py 程序中吧

整合到一起

  • input 得到的是字符串 a,b
  • 需要做加法的是数字
    • 要数字相加
    • 不要字符拼接
#!/usr/bin/python
a = input("How many apples do you got?\n")
print("You got " + a + " apples!")
b = input("How many bananas do you got?\n")
print("You got " + b + " bananas!")
total = int(a) + int(b)
print("You got " + total + " fruits!")
  • 所以要把字符串 a、b 转化为 int 数字
    • 所以 total=int(a)+int(b)

运行结果

图片描述

  • 第7行出了问题
    • 字符串类型变量 和 数字类型变量
      • 不能相加

图片描述

  • 最终输出 要使用字符串连接

  • int 型(数字型)的变量 total

    • 不能 implicitly隐式地
      • 转化为 str 型(字符串类型)
  • 怎么办?

  • ctrl+z

    • 将vi挂起
      • 撤到游乐场

字符串转化为数字

  • 先试试能否 explicit 显示 转化

图片描述

  • 这样就可以 把整型数字变量 转化为字符串变量
  • 然后就可以 和字符串 拼接了
  • 这也是 python之禅 里面的一句话
    • Explicit is better than implicit
  • 怎么理解呢?

plicare

  • plicare是拉丁语词根折叠
    • ex往外
      • explicit
        • 展开了
        • 掰开了
        • 揉碎了
        • 说清楚了
    • im往里
      • implicit
        • 折叠了
        • 遮盖了
        • 掩藏了
        • 暗示了
  • Explicit is better than implicit
    • 明了胜于晦涩

“1” + 2

  • “1” + 2
    • 报错了

图片描述

  • 不接受隐式地类型转化
    • 要显示地转化
  • 明了胜于晦涩
    • Explicit is better than implicit

1 + “2”

  • 这次说的更明确

图片描述

  • +号的两端不能分别是 int 和 str

    • 要么转前面
    • 要么转后面
    • 两边应该是同样类型的
  • 明了胜于晦涩

    • 这句话确实
      • 真有禅机
  • 这 python之禅 还说了些什么?

    • 是名人名言么?

python 之禅

  • 这是Tim Peters写的

图片描述

  • 在游乐场
    • import this

翻译

  • python 之禅 by Tim Peters
    • 优美胜于丑陋(Python 以编写优美的代码为目标)
    • 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
    • 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
    • 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
    • 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
    • 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
    • 可读性很重要(优美的代码是可读的)
    • 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
    • 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
    • 当存在多种可能,不要尝试去猜测而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
    • 虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
    • 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
    • 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
    • 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
  • 这些并不是挂在墙上的名言
    • 而是可以用的
    • 怎么用呢?
  • exit()退出游乐场
  • fg 回到 vim

转化之后

#!/usr/bin/python
a = input("How many apples do you got?\n")
print("You got " + a + " apples!")
b = input("How many bananas do you got?\n")
print("You got " + b + " bananas!")
total = int(a) + int(b)
print("You got " + str(total) + " fruits!")
  • 这个东西终于成功了

图片描述

  • 突发奇想
    • 这最后一句不是要字符串么?
  • 我是不是可以去掉这双引号
    • 直接把 str(total)放进去?

转化之后

#!/usr/bin/python3
a = input("How many apples do you have: ")
print("You have got " + a + " apples!")
b = input("How many banana do you have: ")
print("You have got " + b + " bananas!")
total = int(a) + int(b)
print("You have got  + str(total) + fruits in all!")
  • 可以运行么?

尝试

  • 事实证明不行
    • 哈哈哈
    • 加号就是用来拼接的

图片描述

  • 写在里面就原样输出了
    • “You got " + a + " apples!” 的 + 号不是装饰
      • 而是 进行拼接运算
    • 把变量 a 融到字符串里面去的

总结

  • 变量相加

    • 整型数字变量可以相加
    • 字符串变量也可以拼接
  • 但是

    • 字符串 和 整型数字
    • 整型数字 和 字符串
    • 不能相加
  • 怎么办?

    • 转格式
    • int(“1”)
    • str(2)
  • 可是

    • 如果输入的苹果数量是
      • 字符串"abc"
    • int(“abc”)会发生什么??😱
  • 我们下次再说!👋

  • 蓝桥->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/453839.html

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

相关文章

C++STL——map与set的模拟实现

map与set的模拟实现 map与set的部分源码参考改造红黑树红黑树的迭代器补全set与map的实现完整代码 map与set的部分源码参考 map和set的底层都是由红黑树实现的。 所以这里将上次实现的红黑树插入拿来用。 首先想一想,搜索二叉树不能修改值,因为会破坏整…

第十章 装饰者模式

文章目录 前言一、装饰者模式定义装饰者模式 UML图 二、装饰者模式解决星巴克咖啡订单完整代码Drink 抽象 饮料类Coffee 咖啡类继承 Drink 做一个缓冲层Espresso 意大利咖啡 继承 CoffeeLongBlack 咖啡ShortBlack 咖啡装饰者,调料牛奶巧克力豆浆咖啡店测试程序添加 …

01-yolo算法

要点: 归纳 YOLOv5 github 1 YOLO v1 1) 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。 2)每个网格要预测B个bounding box,每个bounding box 除了要预测位置之…

TortoiseSVN使用-合并分支代码

文章目录 3.4.12 合并分支代码TortoiseSVN有2种合并方式演示场景1:(合并一个版本范围 Merge a range of revisions)演示场景2:(合并两个不同的树 Merge two different trees),不设置主分支版本演…

初窥Edubuntu 23.04:装有教育软件的Ubuntu桌面

导读4月20日,Edubuntu将作为Ubuntu官方口味卷土重来,作为即将发布的Ubuntu 23.04(Lunar Lobster)的一部分,所以我认为让你们先看看这个重制版中包含的内容是个好主意。 Edubuntu以前被称为Ubuntu教育版,最…

Anaconda安装及tensorflow安装

1.下载Anaconda安装包,并安装好 官网下载网址:https://www.anaconda.com/download/ 清华映像站: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 注意:注意安装anaconda时一定要把环境变量加入windows环境中。若没有…

C语言---函数介绍详解

生活的全部意义在于无穷地探索尚未知道的东西,在于不断地增加更多的知识——左拉 文章目录 前言函数模块化程序设计方法函数的定义函数的分类函数定义角度库函数自定义函数 函数形式角度无参函数有参函数 函数兼有其他语言中的函数和过程两种功能的角度有返回值函数无返回值函…

ENVI 国产高分2号(GF-2)卫星数据辐射定标 大气校正 影像融合

1.数据 高分2号卫星数据,包含: MSS-1\2多光谱数据,4m分辨率; Pan-1\2全色波段数据,0.8m分辨率。 2.处理软件 ENVI5.3 国产插件下载地址:ENVI App Store (geoscene.cn) 首先下载插件文件; …

Spring的事务传播行为

事务传播行为 多个声明的事务的方法在相互调用的时候,这个是事务应该如何去传递。 比如说methodA()调用methodB(), 那么这两个方法都显示了开启了事务,那么methodB()是开启一个新的事务还是继续在methodA()这个事务里面去执行就取决于所谓的事务传播的…

多兴趣推荐召回模型:ComiRec

前言 多兴趣向量召回系列: 通过Youtube DNN推荐模型来理解推荐流程 多兴趣召回模型:MIND 推荐系统可以表达为序列推荐问题的形式,序列推荐任务是通过用户的历史行为来预测用户下一个感兴趣的item,这也与真实场景的推荐场景是符…

Linux 通过Chrony实现NTP

Linux实现NTP服务器时间同步,可以通过ntp服务实现,也可以通过chrony服务实现 两者区别主要有 Chrony运行于UDP的323端口,NTP运行于UDP的123端口 Chrony相比于NTP可以更快同步,能够最大同步的减少时间和频率的误差 Chrony能够更好…

linux安装harbor ,搭建镜像私服

linux安装harbor ,搭建镜像私服 前提 环境中要有 docker 和 docker-compose 2、下载 harbor 的 .tgz 安装包 官网地址: Releases goharbor/harbor GitHub 第一个是离线安装包,第二个是在线安装包;带asc后缀的文件就是校验…

ROS学习第三十二节——xacro构建激光雷达小车

https://download.csdn.net/download/qq_45685327/87718396 在前面小车底盘基础之上&#xff0c;添加摄像头和雷达传感器。 0.底盘实现 deamo02_base.xacro <!--使用 xacro 优化 URDF 版的小车底盘实现&#xff1a;实现思路:1.将一些常量、变量封装为 xacro:property比如…

【Spring】Spring AOP

目录 一、Spring AOP简介1.什么是AOP2.AOP术语 二、AspectJ开发1.基于XML的声明式AspectJ1.1 配置切面1.2 配置切入点1.3 配置通知 2.基于注解的声明式AspectJ 一、Spring AOP简介 1.什么是AOP AOP的全称是Aspect-Oriented Programming&#xff0c;即面向切面编程&#xff08;…

一种引入过渡阶段和高斯变异的改进算术优化算法(TGAOA)-附代码

一种引入过渡阶段和高斯变异的改进算术优化算法(TGAOA) 文章目录 一种引入过渡阶段和高斯变异的改进算术优化算法(TGAOA)1.算术优化算法2. 改进算术优化算法2.1 重构数学加速优化器 MOA2.2 新策略的引入2.3 具有一致性的高斯变异策略2.4具有一致性的高斯变异策略 3.实验结果4.参…

YOLOv8 应用轻量级通用上采样算子CARAFE

特征上采样是现代卷积神经网络架构中的关键操作,例如特征金字塔。其设计对于密集预测任务,如目标检测和语义/实例分割至关重要。在本研究中,我们提出了一种称为内容感知特征重组(CARAFE)的通用、轻量级且高效的操作符,以实现这一目标。CARAFE具有以下几个优点:(1)大的…

模型评估与选择

一、问题 在现实任务中&#xff0c;我们往往有多种学习算沾了供选择&#xff0c;甚至对同 -个学习算法&#xff0c;当使用不同的参数配置时也会产生不 同的模型 . 那么&#xff0c;我们该选用 哪一个学习算法、使用哪一种参数配置呢? 理想的解决方案当然是对候选模型的泛化误…

Java线程详解

线程是CPU调度和分配的基本单位&#xff0c;是操作系统可以识别的最小执行和调度单位&#xff0c;每个线程都有自己特定的独立的内存区域&#xff0c;当然也与其他线程共享堆内存&#xff0c;文件队列以及其他内核资源&#xff0c;Java虚拟机允许一个应用拥有多个线程并发工作。…

AI绘画——Lora模型 小人书·连环画 xiaorenshu

目录 小人书连环画 使用说明&#xff1a; Instructions for v1.5: Instructions for v1.0: 下载地址 模型演示&#xff08;多图预警&#xff09; Night Sky YOZORA Model 模型 Lora模型xiaorenshu pastel-mix模型pastel-waifu-diffusion.vae模型Lora模型xiaorenshu 小人书…

JavaSE05|数组的定义与使用

文章目录 JavaSE05|**数组的定义与使用**1.数据基本概念**2.** **数组是引用类型****3.** **数组的应用场景** JavaSE05|数组的定义与使用 1.数据基本概念 定义&#xff1a;可以看成是相同类型元素的一个集合 1.1数组初始化 动态初始化&#xff1a;在创建数组时&#xff0c…