[oeasy]python0072_整數(shù)類型_int_integer_整型變量

幫助手冊
回憶上次內(nèi)容
上次了解的是
字符串
字符串 就是 字符的串
字符串長度 可以用 len函數(shù)
字符可以用下標(biāo)索引 []
可以用str
將整型數(shù)字 轉(zhuǎn)化為 字符串
字符的長度本身 有長有短
都算一個字符
可能對應(yīng) 3 個字節(jié)
都對應(yīng) 1 個字節(jié)
ascii字符集 包括各種 轉(zhuǎn)義字符
unicode 字符中的漢字
但不管本身是 1 字節(jié) 還是 3 字節(jié)
將字符串 賦給一個字符串變量
字符串在內(nèi)存中的地址 就是 變量的id
存儲于 計算機(jī)的內(nèi)存當(dāng)中
除了字符串
還有什么變量類型???
數(shù)字
下面兩句 就是
整數(shù)類型
變量的定義
引用

i_age中
i代表著 integer 整數(shù)類型變量
age 代表著年齡
怎么才能確認(rèn)
i_age變量 是 整數(shù)類型的呢?
類型和地址
introspection
自省
知道自己是干什么的

可以看到
i_age是
int
類型的變量int
是什么意思呢?
int 含義
int 全稱 integer
一個就是一個
兩個就是兩個
沒有一個半
意思是整的數(shù)
和零碎的相反

int 代表 整數(shù)類型
簡稱
整型
i_age是一個
整型
變量這個
整型
變量 存儲在什么位置呢?
存儲位置
i_age 在內(nèi)存中的地址
在 id(i_age)

第一句的賦值過程
分配空間的位置 在 id(i_age)
然后把分配空間地址給 i_age 變量
在內(nèi)存中分配一塊空間 存儲 整數(shù)
i_age
類型 class 是 int
內(nèi)存地址 是 id(i_age)
輸出
兩個不同類型的變量
字符串型的 年齡變量
其中s 代表 string 字符串
整型
的 年齡變量其中i 代表 int 整數(shù)
i_age
s_age

在打印輸出的時候
這兩個東西 看起來完全一樣啊
具體類型不同 有作用么?
運算邏輯
首先就是 運算的邏輯
字符串的加法是
拼接(cancatenate)在一起
整數(shù)的加法是
按照數(shù)字的值 進(jìn)行加法運算

為什么數(shù)字 int 類型
能夠按照值 進(jìn)行加法運算 呢?
整型數(shù)字
這個變量是一個整型的變量
定義的時候
產(chǎn)生這個變量的時候
就是為了運算

整型變量 和字符串變量不同
為了字符串查找、匹配、顯示之類的目的
字符串變量 是一個字符的串
一開始就是
兩種類型之間
可以相互轉(zhuǎn)化嗎?
轉(zhuǎn)化
i_apple = int(s_apple)
可以用int函數(shù)
將字符串轉(zhuǎn)化為整數(shù)

注意int是一個class(類)
轉(zhuǎn)化為十進(jìn)制整型數(shù)字
轉(zhuǎn)化為 int 類的對象
可以把字符串
也可以把其他進(jìn)制的數(shù)
什么是其他進(jìn)制?
十二時辰
關(guān)于時間的時分秒
其實都不是十進(jìn)制的

中國傳統(tǒng)十二地支
可以看出這是一個循環(huán)的圓嗎?

int可以
將 十二進(jìn)制 轉(zhuǎn)化為 二進(jìn)制 嗎?
轉(zhuǎn)化十二進(jìn)制
兩天又兩個時辰
總共多少個時辰?

總共26個時辰
這如何理解呢?
轉(zhuǎn)化
int函數(shù)的第二個參數(shù)
代表著使用的進(jìn)制

下面這個就是
將2進(jìn)制的111 轉(zhuǎn)化為十進(jìn)制

一般語言比如 c、java
都把 int 當(dāng)做關(guān)鍵字
但是在 python 這里
int 是一個類
在編程語言中
什么應(yīng)該 當(dāng)做類?
什么應(yīng)該 進(jìn)入關(guān)鍵字?
每個語言都不一樣
真的很有意思
int 類
這不同的分類 涉及很多東西
分詞 lexical analysis 如何拆成最小的詞素
語法 parser 這些元素應(yīng)該如何組合
語義分析 Syntax analysis 組合起來應(yīng)該如何理解
理解了之后 又該生成什么樣的指令
類名int 被定義為變量名
可能會引發(fā)問題
如下圖

int、str 都是類名
都要注意這些問題
int 和 str
都沒有進(jìn)入關(guān)鍵字
到底哪些字符串
屬于關(guān)鍵字呢?
關(guān)鍵字 keyword
下面是 python3.9 目前所有的關(guān)鍵字
我們一起來捋一捋 見過的關(guān)鍵字

這里面我們見過
try
except
else
finally
for
import
還有這四個是一套的
很多關(guān)鍵字的習(xí)慣來自于 c 語言
那個最早編寫 hello world 所用的編程語言
還記得么?
其實也是編 python解釋器 用的語言
python 和 c 還是有一些區(qū)別
int 在 c 里面是聲明整型變量的關(guān)鍵字
int 在 python 中是一個類
在電腦內(nèi)存 里面長什么樣子 呢?
具體存的 是 整型數(shù)字類的 對象
這個 int型的對象
二進(jìn)制
在打印輸出的時候 使用十進(jìn)制
這符合 我們的生活習(xí)慣
因為 我們有
十
個手指頭但是計算機(jī)用的是
二
進(jìn)制binary

在電腦存儲和運算的時候
使用二進(jìn)制(binary)
一切東西在電腦內(nèi) 都是用二進(jìn)制方式存儲的
因為計算機(jī)里 只有高低電平(0 和 1)
相當(dāng)于 兩個手指頭
不管你有幾個手指頭
同樣是數(shù) 41 棵樹
數(shù)出來的數(shù)字是不會變的
只是使用不同的表示方式而已
真的么?
二進(jìn)制十進(jìn)制轉(zhuǎn)化
(41)10 進(jìn)制 和 (101001)2 進(jìn)制 是相等的
互相之間可以相互轉(zhuǎn)化
其中的bin
代表 binary 二進(jìn)制

不論用 10 個手指頭、還是 2 個手指頭
41 個蘋果的數(shù)量本身不會變
只是計數(shù)方法變了

int(bin(i_age),2)
這是什么意思呢?
先看括號里面
bin該如何理解來著?
二進(jìn)制(binary) 轉(zhuǎn) 十進(jìn)制(decimal)
help(bin)

bin(41)

'0b101001'
這是一個二進(jìn)制形式的字符串
其中 0 明確這是一個數(shù)字
b 明確這是一個二進(jìn)制數(shù)字
進(jìn)制轉(zhuǎn)化
bin(i_age)
就是將整型變量i_age 轉(zhuǎn)化為 二進(jìn)制的字符串形態(tài)
就是
"0b101001"
再查詢int幫助
int(bin(i_age),2)
把
"0b101001"
從二進(jìn)制轉(zhuǎn)化十進(jìn)制
int甚至可以
把7進(jìn)制數(shù)轉(zhuǎn)化為10進(jìn)制
七進(jìn)制的123 轉(zhuǎn)化為 十進(jìn)制
得到 66
二進(jìn)制 binary字符串 轉(zhuǎn) 十進(jìn)制整數(shù)
用int函數(shù)
將二進(jìn)制的字符串形態(tài)
轉(zhuǎn)化為整型數(shù)字
int("0b101001", base = 2)
int("101001", base = 2)
int("101001", 2)
int的意思是integer
整數(shù)
這三條其實是等價的
標(biāo)識著 用的是多少進(jìn)制
"0b…"明確是二進(jìn)制數(shù)字
base 是參數(shù)的名字
總結(jié)
這次了解的是整型數(shù)字類變量
integer
前綴為i
整型變量 和 字符串變量 不同
把 2進(jìn)制字符串
轉(zhuǎn)化為 十進(jìn)制整數(shù)
整型變量 是 直接存儲二進(jìn)制形式的
可以用 int()函數(shù)
int()
接受兩個變量
待轉(zhuǎn)化的字符串
字符串使用的進(jìn)制
二進(jìn)制 和 十進(jìn)制之間
bin(41)
int(“101001”,2)
把 10 進(jìn)制 轉(zhuǎn)化為 2 進(jìn)制
把 2 進(jìn)制 轉(zhuǎn)化為 10 進(jìn)制
可以互相轉(zhuǎn)化
除了 二進(jìn)制、 十進(jìn)制
怎么轉(zhuǎn)化呢???
還有什么樣的進(jìn)制來著
下次再說*??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython