百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

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

csdh11 2025-04-07 13:20 18 浏览

变量类型 相加运算 回忆上次内容

  • 上次讲了是从键盘输入变量
  • 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")会发生什么??


  • 我们下次再说!
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython

相关推荐

NUS邵林团队发布DexSinGrasp基于强化学习实现物体分离与抓取统一

本文的作者均来自新加坡国立大学LinSLab。本文的共同第一作者为新加坡国立大学实习生许立昕和博士生刘子轩,主要研究方向为机器人学习和灵巧操纵,其余作者分别为硕士生桂哲玮、实习生郭京翔、江泽宇以及...

「PLC进阶」如何通过编写SCL语言程序实现物料分拣?

01、前言SCL作为IEC61131-3编程语言的一种,由于其高级语言的特性,特别适合复杂运算、复杂数学函数应用的场合。本文以FactoryIO软件中的物料分拣案例作为硬件基础,介绍如何通过SCL来实...

zk源码—5.请求的处理过程一(http1.1请求方法)

大纲1.服务器的请求处理链...

自己动手从0开始实现一个分布式 RPC 框架

前言为什么要自己写一个RPC框架,我觉得从个人成长上说,如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现、负载均衡、序列化协议、RPC通信协议、Socket通信、异...

MLSys’25 | 极低内存消耗:用SGD的内存成本实现AdamW的优化性能

AIxiv专栏是机器之心发布学术、技术内容的栏目。过去数年,机器之心AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,...

线程池误用导致系统假死(线程池会自动销毁吗)

背景介绍在项目中,为了提高系统性能使用了RxJava实现异步方案,其中异步线程池是自建的。但是当QPS稍微增大之后却发现系统假死、无响应和返回,调用方出现大量超时现象。但是通过监控发现,系统线程数正常...

大型乘用车工厂布局规划(六大乘用车基地)

乘用车工厂的布局规划直接影响生产效率、物流成本、安全性和未来扩展能力。合理的布局应确保生产流程顺畅、物流高效、资源优化,并符合现代化智能制造和绿色工厂的要求。以下是详细的工厂布局规划要点:1.工厂布...

西门子 S7-200 SMART PLC 连接Factory IO的方法

有很多同学不清楚如何西门子200smart如何连接FactoryIO,本教程为您提供了如何使用西门子S7-200SMARTPLC连接FactoryIO的说明。设置PC和PLC之间的...

西门子博图高级仿真软件的应用(西门子博途软件仿真)

1.博图高级仿真软件(S7-PLCSIMAdvancedV2.0)S7-PLCSIMAdvancedV2.0包含大量仿真功能,通过创建虚拟控制器对S7-1500和ET200SP控制器进行仿真...

PLC编程必踩的6大坑——请对号入座,评论区见

一、缺乏整体规划:面条式代码问题实例:某快递分拣线项目初期未做流程图设计,工程师直接开始编写传送带控制程序。后期增加质检模块时发现I/O地址冲突,电机启停逻辑与传感器信号出现3处死循环,导致项目延期2...

统信UOS无需开发者模式安装软件包
统信UOS无需开发者模式安装软件包

原文链接:统信UOS无需开发者模式安装软件包...

2025-05-05 14:55 csdh11

100个Java工具类之76:数据指纹DigestUtils

为了提高数据安全性,保证数据的完整性和真实性,DigestUtils应运而生。正确恰当地使用DigestUtils的加密算法,可以实现数据的脱敏,防止数据泄露或篡改。...

麒麟KYLINIOS软件仓库搭建02-软件仓库添加新的软件包

#秋日生活打卡季#原文链接:...

Java常用工具类技术文档(java中工具类的作用)

一、概述Java工具类(UtilityClasses)是封装了通用功能的静态方法集合,能够简化代码、提高开发效率。本文整理Java原生及常用第三方库(如ApacheCommons、GoogleG...

软路由的用法(自动追剧配置)(软路由教学)

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:值友98958248861环境和需求...