Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0282
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在:
- 个人网站: `https://oeasy.org`
- 蓝桥云课: `https://www.lanqiao.cn/courses/3584`
- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
- Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 数制可以转化
- 十进制可以转化为二进制
- 二进制也可以转化为十进制
-
二进制形式
- 有的时候有引号
- 有的时候 没有引号
-
为什么 bin(97)
- 不加双引号 了呢???
-
我
偏要给 97- 加一个双引号?!😏
- 报错了!!!❌
- 报的不是 NameError
- 名字错误
- 而是 TypeError
- 类型错误
- 如何理解这个
- TypeError呢?
- 查 bin函数的 帮助手册
- help(bin)
- bin函数的参数 要求是
- 是 integer(整数)
- 而不是 字符串(string)
- 不能有双引号
-
TypeError
- 类型错误
-
字符串(str)类型
- 不能被解释为
- 整数(integer)
- 不能被解释为
- bin函数
- 要的参数是
- 整数97
- 类型本应为
- 整数(integer)
- 要的参数是
- 但是给的参数
- "97"
- 类型实际为
- 字符串(string)
- 类型实际为
- "97"
- 类型(type)不匹配
- 就报了 TypeError
- 所以说
- 类型(type)很重要!!
- 同样都是把97作为参数
- 传递给bin函数
- 不带引号的97
- 是整数类型(type)
- 是可以转化为 二进制形式字符串的
- 带引号的97
- 是字符串类型(type)
- 会发生 类型错误
- 就不让往下执行了
- 是字符串类型(type)
-
要的是
- 整数(integer)
-
给的是
- 字符串(str)
-
字符串(str)
不能 被解释为整数(int)
- 所以报错了
- TypeError了
- 其他函数
也有 类型的限制 吗?
- 记得 ord函数 也有类型要求
- 查一下 ord的帮助
- ord的参数 要的是
- one-character string
- 单字字符串
- 需要有引号的
- 如果 偏给他一个整数(integer)
- 会如何呢?
- 要的是字符(str)
- 给的是整数(int)
- 又报TypeError了
-
不要害怕报错
-
报错
- 是我们
努力的见证 - 而不是我们
无能的见证 - 更是
进步的阶梯
- 是我们
-
程序员 要做的就是
- 把
报错变成不报错!
- 把
-
ord("a")得到的 结果类型是整数(int)
- 把这个结果
- 送到bin函数里面
- 当参数会如何?
- 送到bin函数里面
- 类似于
- ord(chr(97))
- chr(ord("a"))
- 括号内的 要
先进行运算
#找到a对应的序号的二进制形式
bin(ord("a"))
0b1100001是二进制数11000010b是 2进制数的 前缀标志
- 0b1100001 是什么类型呢?
- 带引号 是 字符串
- 不带引号 是 整数
- 不论 二进制 还是 十进制 形态
- 数字 都是 数字
- 这两种表示方法 是等值的
- 为什么 ord生成的数字
- 默认使用十进制呢?
- 计算机里面用的不都是二进制吗?
- 因为我们日常都用十进制
- 为什么我们日常都用十进制呢?
- 默认使用 十进制
- 是因为我们 有十根手指
- 那计算机
- 为什么 使用二进制 呢?
- 计算机只有 两根手指
- 就像电路只有
- 通
- 断
- 电灯只有
- 亮
- 灭
- 电路只有
- 高电平
- 低电平
- 所以 只能用二进制
- 在计算机中
- 把十进制数
- 转化为 二进制字符串形态
- 展示的时候
- 再以十进制的形态进行展示
- 把十进制数
- 在打印输出的时候 使用十进制
- 这符合 我们的生活习惯
- 因为 我们有
十个手指头
- 但是计算机用的是
二进制- binary
- 在电脑存储和运算的时候
- 使用二进制(binary)
- 一切东西在电脑内 都是用二进制方式存储的
- 因为计算机里 只有高低电平(0 和 1)
- 相当于 两个手指头
- 不管你有几个手指头
- 同样是数 41 棵树
- 数出来的数字是不会变的
- 只是使用不同的表示方式而已
- 真的么?
- (41)10 进制 和 (101001)2 进制 是相等的
- 互相之间可以相互转化
- 其中的bin
- 代表 binary 二进制
- 不论用 10 个手指头、还是 2 个手指头
- 41 个苹果的数量本身不会变
- 只是计数方法变了
- int(bin(i_age),2)
- 这是什么意思呢?
- 先看括号里面
- bin该如何理解来着?
- help(bin)
- bin(41)
'0b101001'- 这是一个二进制形式的字符串
- 其中 0 明确这是一个数字
- b 明确这是一个二进制数字
-
bin(i_age)
- 就是将整型变量i_age 转化为 二进制的字符串形态
- 就是
"0b101001"
-
再查询int帮助
- int(bin(i_age),2)
- 把
"0b101001"从二进制转化十进制
- 把
- 用int函数
- 将二进制的字符串形态
- 转化为整型数字
int("0b101001", base = 2)
int("101001", base = 2)
int("101001", 2)
- int的意思是integer
- 整数
- 这三条其实是等价的
- "0b..."明确是二进制数字
- base 是参数的名字
- 标识着 用的是多少进制
-
数据类型很重要
- 参数 必须按照 要求的类型 给出
- 否则就会出现
- 类型错误
- TypeError
-
目前了解的类型
- 字符串
- 'a'、"oeasy"
- 整数
- 0、97、0b1101
- 字符串
- 二进制(binary) 和 二(two)
- 怎么看起来
- 好像 一点关系都没有呢?🤔
- 怎么看起来
- 我们下次再说!👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。




























