欢迎光临散文网 会员登陆 & 注册

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

2023-04-23 22:52 作者:oeasy  | 我要投稿

变量类型 相加运算

回忆上次内容

  • 上次讲了是从键盘输入变量

  • input 函数

    • 可以有提示字符串

    • 需要有具体的变量接收输入的字符串

  • 输入单个变量没有问题

    • 但是输入两个变量之后

    • 一相加就非常离谱

  • 怎么办呢?🤔

基本实验

  • 回到 游乐场

    • 做个 实验

  • 两个整数 相加

    • 结果是求和

  • 两个字符串 相加

    • 结果是字符串拼接

  • 目前的结果

    • 显然来自于拼接

  • input()进来的东西

    • 真的 都是字符串

确定类型

  • type()函数

    • 可以确定变量的类型

    • 比如 type("1")

  • 那么

    • 输出出来么?

    • 能把接收 input()的变量类型

转化函数

  • 从 input()来的

    • 肯定是 字符串类型的变量

    • 需要 转化为 数字类型

    • 然后 再相加

  • 好了

    • 思路有了

  • 整合到原来的 py 程序中吧

整合到一起

  • input 得到的是字符串 a,b

  • 需要做加法的是数字

    • 要数字相加

    • 不要字符拼接

#!/usr/bin/pythona = 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

    • 转化为 str 型(字符串类型)

    • 不能 implicitly隐式地

  • 怎么办?

  • ctrl+z

    • 撤到游乐场

    • 将vi挂起

字符串转化为数字

  • 先试试能否 explicit 显示 转化

  • 这样就可以 把整型数字变量 转化为字符串变量

  • 然后就可以 和字符串 拼接了

  • 这也是 python之禅 里面的一句话

    • Explicit is better than implicit

  • 怎么理解呢?

plicare

  • plicare是拉丁语词根折叠

    • implicit

    • 折叠了

    • 遮盖了

    • 掩藏了

    • 暗示了

    • explicit

    • 展开了

    • 掰开了

    • 揉碎了

    • 说清楚了

    • ex往外

    • im往里

  • 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/pythona = 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/python3a = 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)

    • 转格式

  • 可是

    • int("abc")会发生什么??😱

    • 字符串"abc"

    • 如果输入的苹果数量是

  • 我们下次再说!*

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

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

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



[oeasy]python0137_相加运算_python之禅_import_this_显式转化的评论 (共 条)

分享到微博请遵守国家法律