活動地址:CSDN21天學習挑戰賽
第一節,我們學習【Python開發環境的搭建】,知道什麼了是程序設計語言,了解了Python語言的發展及特點,並進行Python開發環境的搭建以及Python集成開發環境PyCharm的安裝及模板設置。
第二節,我們學習【Python語言的基本語法元素】。包括Python程序的格式框架(縮進、注釋),語法元素名稱,數據類型和語句元素以及基本的輸入輸出函數。
本節,我們將學習【Python的基本數據類型】。數字類型:整數類型、浮點數類型、復數類型。字符串類型以及數據類型之間的轉換。
# 常見數據類型
""" 整型:int 98 浮點型:float 3.292992 布爾型:False 0; True 1 字符串:str 'hello' '你好' "world" """
Python中提供3種數字類型:整數類型、浮點數類型和復數類型。
Python中的整數沒有取值范圍的限制,理論上來講只要內存能夠存儲,Python可以使用任意大小的整數。
整數類型有4種進制表示方式:十進制、二進制、八進制、十六進制
。默認情況下,采用十進制,如果需要表示其它進制方式需要增加引導符號。
二進制是一套計數方法,每個位置上的數有 2 種可能(0 - 1);二進制是計算機的執行語言,但是早在計算機出現前就存在這套計數方法,最早可追溯到古埃及。在日常生活中,我們使用的是十進制,每個位置上的數有 10 種可能(0 - 9)。
1.8位(bit) = 1 字節(byte)
1024字節(byte)= 1 千字節(KB)
024千字節(KB)= 1 兆 (MB)
1024MB = 1GB
整數類型的4種進制表示
# -*- coding: utf-8 -*-
# @File : demo.py
# @author: Flyme awei
# @email : [email protected]
# @Time : 2022/8/3 23:28
""" 十進制 默認的進制 二進制 0b開頭 八進制 0o開頭 十六進制 0x開頭 """
print('二進制,0b開頭', 0b1010010)
print('八進制,0o開頭', 0o7432647)
print('十六進制,0x開頭', 0xA36540984)
不同進制的整數之間可以直接運算或比較,程序無論采用哪種進制表達數據,計算機內部都以相同的格式存儲數值,進制之間的運算結果默認以十進制方式顯示。
浮點數表示帶有小數的數值
,在Python語言中的浮點數類型必須帶有小數部分,小數部分可以是0。比如說98
是整數,98.0
就是浮點數。
浮點數有2種表示方法:十進制表示形式和科學計數法表示形式。浮點數沒有其它進制表示形式。
科學計數法使用字母e
或者E
作為冪的符號,以10
為基數。舉例<a>e<b>
表示a*10**b
比如說:1.01e3
表示1.01*103
,就是1010.0
,-1.01e-3
表示-1.01*10-3
,就是-0.00101
。
# -*- coding: utf-8 -*-
# @File : demo.py
# @author: Flyme awei
# @email : [email protected]
# @Time : 2022/8/3 23:28
# 浮點型 float()
a = 3.114152
print(a, type(a))
# 計算機采用二進制存儲,浮點數存儲不精確
n1 = 1.1
n2 = 2.2
print(n1+n2) # 3.300000000003
# 浮點數計算 導入decimal模塊 decimal 十進制
from decimal import Decimal # 直接導入decimal模塊的Decimal方法
print(Decimal('1.1')+Decimal('2.2'))
import decimal # 導入decimal模塊
print(decimal.Decimal(1.1)+decimal.Decimal(2.2)) # .Decimal 調用decimal模塊的Decimal方法
浮點數的取值范圍和小數精度受不同計算機系統的限制。浮點數的取值范圍[-10308,10308]
,浮點數之間的區分精度約為2.22*10-16
。對於絕大部分運算來說,浮點數類型的數值范圍和小數精度足夠“可靠”。一般認為浮點數類型沒有范圍限制。
>>> 1.01 + 2.02
3.0300000000000002
>>> 123455.346788*0978.456
120795624.79679933
>>> 98765.37854/3456.54677
28.573424608977593
相同數值的整數和浮點數哪那個運算精度更高呢?整數1010
和浮點1010.0
它們的值是相等的,但是在進行冪運算時結果卻不同。
>>> pow(1010,32)
1374940678531097054162291350571104044956417832049380936096496320100000000000000000000000000000000
>>> pow(1010.0,32)
1.3749406785310972e+96
>>>
Python語言的浮點數運算存在一個“不確定尾數”問題,即兩個浮點數運算時,有可能會增加一些“不確定”的尾數。
>>> 0.1 + 0.2
0.30000000000000004
這不是計算機運行錯誤,而是正常情況,因為在計算機內部,使用二進制表示浮點數,受計算機表示浮點數使用的存儲寬度限制,這個二進制數不完全等於0.1而是最接進0.1的二進制數。因此在計算機內部了進行計算時是將最接近0.1和最接近0.2的兩個數進行加運算,因此產生的數接近0.3,但未必是最接近的,反映到十進制上就產生了這個尾數。這個尾數是多少,計算機內部會根據二進制運算確定產生
。
不確定尾數問題會對浮點數運算結果的判斷造成一定困擾。由於0.1+0.2
的運算結果中存在不確定尾數,所以與0.3
判斷是否相等時結果為False
。
>>> 0.1 + 0.2 == 0.3
False
在Python中有個內置函數叫round()
,用於進行四捨五入的運算,所以可以使用round()
這個函數限制運算結果保留位數,去掉不確定尾數。
>>> round(0.1 + 0.2, 3)
0.3
>>> round(0.1 + 0.2, 3) == 0.3
True
復數類型表示數學中的復數。復數使用a+bj
的形式表示,稱為實部和虛部。其中j稱為“虛部單位”,它被定義為j=√(-1)
。
復數舉例:11.3+4j -5.6+7j 1.23e-4+5.67e+89j
在Python中,復數采用(a,b)
表示a+bj
,a
表示實部,b
表示虛部,虛部通過後綴“J
”或“j
”來表示。當b
等於1
時,1
不能省略,采用 1j
表示復數,而j則表示Python程序中的一個變量。
復數類型中實部和虛部都是浮點類型,對於復數z,可以用z.rea
l和z.imag
分別獲取實數部分和虛數部分。
print((1.23e4 + 5.67e4j).real)
print((1.23e4 + 5.67e4j).imag)
print(1.23e4 + 5.67e4j.imag)
output:
12300.0
56700.0
69000.0
布爾類型 用來表示真或假
True
表示真False
表示假True:1
False:0
# -*- coding: utf-8 -*-
# @File : demo.py
# @author: Flyme awei
# @email : [email protected]
# @Time : 2022/8/3 23:28
f1 = True
f2 = False
print(f1, type(f1))
print(f2, type(f2))
# True <class 'bool'>
# False <class 'bool'>
字符串又被稱為不可變的字符序列
可以使用單引號:' '
雙引號:" "
三引號:''' '''
或:""" """
來定義,單引號和雙引號定義的字符串必須在一行,三引號定義的字符串可以分布在連續的多行
# -*- coding: utf-8 -*-
# @File : demo.py
# @author: Flyme awei
# @email : [email protected]
# @Time : 2022/8/3 23:28
print('我用python')
print("我用python")
print('''我用python''')
print(type('我用python'))
print(type("我用python"))
print(type('''我用python'''))
output:
''' 我用python 我用python 我用python <class 'str'> <class 'str'> <class 'str'> '''
數據類型轉換:將不同類型的數據拼接在一起
str()
將其它類型轉換為字符串也可用引號轉換str(123)
'123'
int()
將其它類型轉轉換為整型文字類和小數類字符串,無法轉換為整數; 浮點數轉為整數:抹零取整int('123')
float()
將其它類型轉換為浮點數整數轉為浮點數,末尾為.0
float(9)
# -*- coding: utf-8 -*-
# @File : demo.py
# @author: Flyme awei
# @email : [email protected]
# @Time : 2022/8/3 23:28
""" str() 將其它類型轉換為字符串類型 """
print(str(123))
print(type(str(123)))
""" int() 其它類型轉換為整型 1.文字類 和 小數類字符串 無法轉換為整型 2.浮點數轉為整數抹零取整 """
print(int(3.22244))
""" float() 將其它類型轉換為浮點數 1.文字無法轉換 2.整數轉換為浮點數.末尾為 .0 """
print(type(5))
print(float(5), type(float(5)))
常見數據類型:
- 整數類型
int
- 浮點類型
float
- 布爾類型
True/false
- 字符串類型
str
數據類型轉換:
str()
將其它類型轉換為字符串類型int()
其它類型轉換為整型float()
將其它類型轉換為浮點數