Skip to content

Latest commit

 

History

History
266 lines (193 loc) · 6.98 KB

152-188814-整型数字变量.sy.md

File metadata and controls

266 lines (193 loc) · 6.98 KB
show version enable_checker
step
1.0
true

帮助手册

回忆上次内容

  • 上次了解的是字符串
  • 字符串有一些要素
    • 字符串长度
  • 这些字符都可以用下标索引
  • 字符的长度本身有长有短
    • ascii 包括各种 转义字符
      • 都对应 1 个字节
    • unicode 字符中的汉字
      • 可能对应 3 个字节
  • 但不管本身是 1 字节 还是 3 字节
    • 都算一个字符
  • 字符串赋值过程
    • 在内存中 分配一块空间
    • 放上需要的字符串
    • 把字符串在内存的地址
    • 赋给一个字符串变量
    • 这就是字符串变量的id
  • 除了字符串还有什么变量类型?🤔

数字

图片描述

  • 上面两句就是数字型变量的
    • 定义
    • 引用
  • 这太简单了吧
  • 我怎么知道他是数字类型的?

类型和地址

  • 自省
    • introspection
    • 知道自己是干什么的

图片描述

  • 可以看到这是一个数字类型的变量
  • 地址在 id(i_age)

图片描述

  • 第一句的赋值过程
    • 在内存中分配一块空间存储数字型的变量
    • 分配的空间在 id(i_age)
    • 类型 class 是 int
    • 然后把分配空间地址给 i_age 变量

输出

  • 两个不同类型的变量

图片描述

  • 在打印输出的时候
    • 这两个东西看起来完全一样啊
  • 具体什么类型有关系么?
    • 还真有
  • 首先就是运算的逻辑

运算逻辑

图片描述

  • 字符串的加法是拼接(cancatenate)在一起
  • 数字的加法是按照数字的值相加
  • 为什么数字 int 类型能够按照值相加呢?

整型数字

  • 这个变量是一个整型的变量
    • 定义的时候
    • 起心动念产生这个变量的时候
    • 就是为了运算

图片描述

  • 这和字符串变量不同
    • 字符串变量是一个字符的串
    • 一开始就是为了字符串查找、匹配、显示之类的目的

int 含义

  • int 全称 integer
    • 意思是整的数
    • 和零碎的相反
      • 一个就是一个
      • 两个就是两个
      • 没有一个半

图片描述

  • 这个 int 怎么用呢?

转化

图片描述

  • 注意这是一个class(类)
    • 可以把字符串转化为 int 类的对象
    • 也可以把其他进制的数转化为十进制整型数字

转化

图片描述

  • 一般语言比如 c、java 都把 int 当做关键字

    • 但是在 python 这里 int 是一个类
  • 在编程语言中

    • 什么应该当做类?
    • 什么应该进入关键字?
    • 这是一个很底层的核心问题

int 类

  • 这是一个语言设计的时候的最初的问题
  • 因为他涉及到了
    • 分词 lexical analysis 如何拆成最小的元素
    • 语法 parser 这些元素应该如何组合
    • 语义分析 Syntax analysis 组合起来应该如何理解
    • 理解了之后应该生成怎么的流程
  • 是一个语言的根本
  • 类名 int 被定义为变量名可能会引发问题
    • 就是下图的这个问题

图片描述

  • int、str 都是类
  • 都要注意这些问题
  • 虽然没有进入关键字
  • 不过有哪些是属于关键字呢?

关键字 keyword

  • 下面是 python3.9 目前所有的关键字

图片描述

  • 这里面我们了解过
    • for
    • import
    • 这四个是一套的
      • try
      • except
      • else
      • finally
  • 很多关键字的习惯来自于 c 语言
    • 还记得么?
      • 那个最早的 hello world 所用的编程语言
    • 其实也是编 python 用的语言
  • 但是 python 和 c 还是有一些区别
    • int 在 c 里面是声明整型变量的关键字
    • int 在 python 中是一个类
      • 具体的值是一个整型数字的对象
  • 但是具体来说
    • 这个 int 在电脑内存里面如何存储呢?

二进制

  • 在打印输入的时候使用十进制
    • 这符合我们的生活习惯
    • 因为我们有十个手指头

图片描述

  • 在电脑存储和运算的时候使用二进制
    • 一切东西在电脑内不都是用二进制方式存储的
    • 因为电脑里只有高低电平(0 和 1)
    • 相当于两个手指头
  • 不管你有几个手指头
    • 同样是数 41 个苹果
    • 数出来的数字是不会变的
  • 真的么?

二进制十进制转化

  • (41)10 进制 和 (101001)2 进制 是相等的
    • 互相之间可以相互转化

图片描述

  • 不论用 10 个手指头、还是 2 个手指头
    • 41 个苹果的数量本身不会变
    • 只是计数方法变了

图片描述

  • int(bin(iAge),2)
    • 这是什么意思呢?

进制转化

  • 先查询帮助

图片描述

  • int(bin(iAge),2)
    • "0b101001" 从二进制转化十进制

图片描述

  • int甚至可以
    • 把7进制数转化为10进制

图片描述

  • 七进制的123 转化为 十进制
    • 得到 66
  • bin又该如何理解来着?

二进制 binary 转 十进制 decimal

  • help(bin)

图片描述

  • bin(41)

图片描述

  • 0b101001
    • 其中 0 明确这是一个数字
    • b 明确这是一个二进制数字

十进制 decimal 转 二进制 binary

int("0b101001", base = 2)
int("101001", base = 2)
int("101001", 2)

图片描述

  • 这三条其实是等价的
    • "0b..."明确是二进制数字
    • base 是参数的名字标识多少进制

总结

  • 这次了解的是整型数字类变量
    • 这类变量和字符串不同
    • 数字变量是直接存储二进制形式的
    • 可以用 int()函数把 2 进制转化为 10 进制
  • int()
    • 接受一个字符串
    • 明确字符串使用的进制
  • 二进制和十进制之间可以互相转化
    • bin(41) 把 10 进制 转化为 2 进制
    • int("101001",2) 把 2 进制 转化为 10 进制
  • 除了 二进制、 十进制
  • 还有什么样的进制来着
  • 怎么转化呢?🤔
  • 下次再说👋🏻