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

 
添加图片注释,不超过 140 字(可选)
 
  • 怎么办呢?
基本实验
  • 回到 游乐场
  • 做个 实验
 
  • 两个整数 相加
  • 结果是求和
 
  • 两个字符串 相加
  • 结果是字符串拼接
 

 
添加图片注释,不超过 140 字(可选)
 
  • 目前的结果
  • 显然来自于拼接
 
  • input()进来的东西
  • 真的 都是字符串
 
确定类型
  • type()函数
  • 可以确定变量的类型
  • 比如 type("1")
 
  • 那么
  • 能把接收 input()的变量类型
  • 输出出来么?
 
 

 
添加图片注释,不超过 140 字(可选)
转化函数
  • 从 input()来的
  • 肯定是 字符串类型的变量
  • 需要 转化为 数字类型
  • 然后 再相加
 

 
添加图片注释,不超过 140 字(可选)
 
  • 好了
  • 思路有了
 
  • 整合到原来的 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)
 
运行结果

 
添加图片注释,不超过 140 字(可选)
 
  • 第7行出了问题
  • 字符串类型变量 和 数字类型变量
  • 不能相加
 
 

 
添加图片注释,不超过 140 字(可选)
 
  • 最终输出 要使用字符串连接
  • int 型(数字型)的变量 total
  • 不能 implicitly隐式地
  • 转化为 str 型(字符串类型)
 
 
  • 怎么办?
  • ctrl+z
  • 将vi挂起
  • 撤到游乐场
 
 
字符串转化为数字
  • 先试试能否 explicit 显示 转化

 
添加图片注释,不超过 140 字(可选)
 
  • 这样就可以 把整型数字变量 转化为字符串变量
  • 然后就可以 和字符串 拼接了
  • 这也是 python之禅 里面的一句话
  • Explicit is better than implicit
 
  • 怎么理解呢?
plicare
  • plicare是拉丁语词根折叠
  • ex往外
  • explicit
  • 展开了
  • 掰开了
  • 揉碎了
  • 说清楚了
 
 
  • im往里
  • implicit
  • 折叠了
  • 遮盖了
  • 掩藏了
  • 暗示了
 
 
 
  • Explicit is better than implicit
  • 明了胜于晦涩
 
"1" + 2
  • "1" + 2
  • 报错了
 

 
添加图片注释,不超过 140 字(可选)
 
  • 不接受隐式地类型转化
  • 要显示地转化
 
  • 明了胜于晦涩
  • Explicit is better than implicit
 
1 + "2"
  • 这次说的更明确

 
添加图片注释,不超过 140 字(可选)
 
  • +号的两端不能分别是 int 和 str
  • 要么转前面
  • 要么转后面
  • 两边应该是同样类型的
 
  • 明了胜于晦涩
  • 这句话确实
  • 真有禅机
 
 
  • 这 python之禅 还说了些什么?
  • 是名人名言么?
 
python 之禅
  • 这是Tim Peters写的

 
添加图片注释,不超过 140 字(可选)
 
  • 在游乐场
  • 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!")
  • 这个东西终于成功了

 
添加图片注释,不超过 140 字(可选)
 
  • 突发奇想
  • 这最后一句不是要字符串么?
 
  • 我是不是可以去掉这双引号
  • 直接把 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!")
  • 可以运行么?
尝试
  • 事实证明不行
  • 哈哈哈
  • 加号就是用来拼接的
 

 
添加图片注释,不超过 140 字(可选)
 
  • 写在里面就原样输出了
  • "You got " + a + " apples!" 的 + 号不是装饰
  • 而是 进行拼接运算 的
 
  • 把变量 a 融到字符串里面去的
 
总结
  • 变量相加
  • 整型数字变量可以相加
  • 字符串变量也可以拼接
 
  • 但是
  • 字符串 和 整型数字
  • 整型数字 和 字符串
  • 不能相加
 
  • 怎么办?
  • 转格式
  • int("1")
  • str(2)
 
  • 可是
  • 如果输入的苹果数量是
  • 字符串"abc"
 
  • int("abc")会发生什么??
 


[oeasy]python0137_相加运算_python之禅_import_this_显式转化的更多相关文章

  1. python自动类型转换(针对于Number数据类型来的)精度从低到高 bool->int-> float->complex 当两个不同是数据类型运算时候,默认想更高进度转化

    # ### 自动类型转换(针对于Number数据类型来的) ''' 精度从低到高 bool->int-> float->complex 当两个不同是数据类型运算时候,默认想更高进度转 ...

  2. [C#] 走进 LINQ 的世界

    走进 LINQ 的世界 序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串 ...

  3. LINQ 的使用

    [转]链接:cnblogs.com/liqingwen/p/5832322.html LINQ 简介 语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framewo ...

  4. .NET LINQ基本查询操作

    获取数据源      在 LINQ 查询中,第一步是指定数据源.像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它.在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 ( ...

  5. Java Data Type

    官方文档:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 转载地址:http://blog.csdn.n ...

  6. 面试准备(四)Java基本数据类型

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

  7. Java基础-基本数据类型转换案例

    java基本数据类型八中 byte = Byte short = Short char = Character int = Integer long = Long float = Float doub ...

  8. 【转】Java基本数据类型

    原文网址:http://blog.csdn.net/bingduanlbd/article/details/27790287 Java语言是静态类型的(statical typed),也就是说所有变量 ...

  9. 转载 Java基本数据类型

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

  10. JAVA 第二天 基本数据类型

    在栈中可以直接分配内存的数据是基本数据类型.引用数据类型:数据的引用在栈中,但他的对象在堆中. 基本数据类型,小可转大,大转小会失去精度 第一类:逻辑型boolean 第二类:文本型char 第三类: ...

随机推荐

  1. 大数据Hadoop集群的扩容及缩容(动态添加删除节点)

    添加白名单和黑名单 白名单,表示在白名单的主机IP地址可以用来存储数据 企业中:配置白名单,可以尽量防止黑客恶意访问攻击. 配置白名单步骤如下:原文:sw-code 1)在NameNode节点的/op ...

  2. Your lock file does not contain a compatible set of packages. Please run composer update.

    执行composer install遇到错误:Your requirements could not be resolved to an installable set of packages. 这是 ...

  3. Windows Server 2022 初始设置

    添加本地用户 添加新的本地用户. 在CUI配置上,按如下方式设置. 使用管理员权限运行 PowerShell 并按如下方式进行配置. Windows PowerShell 版权所由 (C) Micro ...

  4. npm 淘宝镜像的安装

    方法一: 使用阿里定制的cnpm命令行工具代替默认的npm,输入以下代码 npm install -g cnpm --registry=https://registry.npm.taobao.org ...

  5. gorm指定数据字段名字

    type Products struct { gorm.Model SaleNum uint ` json:"saleNum"` CarNum uint ` json:" ...

  6. 用Yacht管理docker容器

    今天是六一儿童节,祝大小朋友们节日快乐! 从今天开始起,防范区的上海市民可以自由出入小区了.始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常. 周一上午的的核酸可能是我们最后一次 ...

  7. 将编译过的C++库迅速部署在Visual Studio新项目中

      本文介绍在Visual Studio中,通过属性表,使得一个新建解决方案中的项目可以快速配置已有解决方案的项目中各类已编译好的C++第三方库的方法.   例如,我们现有一个解决方案,其中的一个项目 ...

  8. 【昇腾开发全流程】AscendCL开发板模型推理

    前言 学会如何安装配置华为云ModelArts.开发板Atlas 200I DK A2. 并打通一个Ascend910训练到Ascend310推理的全流程思路. 在本篇章,我们继续进入推理阶段! 推理 ...

  9. vivo 制品管理在 CICD 落地实践

    作者:vivo 互联网效能平台团队 - Chen Lingling 在DevOps实践中,制品管理是一个重要的组成部分,它可以帮助团队快速交付高质量.高可靠性的软件,本文将介绍在 DevOps 领域, ...

  10. 音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)

    一.现象 ReplayKit2 适配中 UPLOAD进程被系统杀掉 日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal) 二.内存占用分析 1)系统 ...