基本類型#
Python 數字#
在 Python 中有 3 種類型的數 —— 整數、浮點數和複數
數字類型 | 示例 | 說明 |
---|---|---|
整數 | -2, 12389 999999L, ∞ 0b1110, 0xabf, 0o126 | python2 中區分整型、長整型,長整型的整數可以 無窮大 python3 中統稱為整型 整型的二進制,十六進制,八進制表示法 |
浮點數 | -3.23, -52.3E-4 | 在 python 中可以用科學計數法表示浮點數 |
複數 | -5+4j,2.3-4.6j | 其中 - 5,4 為實數,j 為虛數 |
-
==int==
python3 中只有 int(可存超長數據)
整型進制表示法 進制 表示方法 示例 二進制 以 0b 開頭,只能包含 0、1,逢 2 進 1 0b11,0b12(錯誤的表示) 八進制 以 0o 開頭,能包含 0-7,逢 8 進 1 0o11 十六進制 以 0x 開頭,能包含 0-F,逢 16 進 1 0x11 十進制 直接由數字 0-9 組成,逢 10 進 1 11 整型進制操作
進制轉換-bin:任意進制轉2進制,接收一個int,返回一個str 進制轉換-oct:任意進制轉8進制,接收一個int,返回一個str 進制轉換-hex:任意進制轉16進制,接收一個int,返回一個str 進制轉換-int:任意進制轉10進制,接收一個int/str,返回一個int
# 示例 >>> bin(10) # 10進制轉2進制 '0b1010' >>> bin(0o71) # 8進制轉2進制 '0b111001' >>> bin(0x11) # 16進制轉2進制 '0b10001' >>> int("10") 10 # str 轉換成 int >>> int("0o11",base=8) # 8進制的字符串,要指定一下 9 >>> int(0o11) # 8進制整型 直接轉換 9
-
==float==
float (浮點型):浮點數即帶有小數點的數字
float 由整數位,小數點,小數位組成,也可以用科學計數法表示,例如 - 3.23,-52.3E-4,6.23E12
float 是不精確的
decimal 模塊
Decimal 類型數據是精確的小數,可以傳遞給 Decimal 整型或者字符串參數
官方文檔
float https://docs.python.org/3/library/functions.html#float
decimal https://docs.python.org/3/library/decimal.html?highlight=decimal
# 示例:浮點型數據float是不精確的
>>> i = 1
>>> i = i - 0.1
>>> i
0.9
>>> i = i - 0.1
>>> i
0.8
>>> i = i - 0.1
>>> i
0.7000000000000001
>>> i = i - 0.1
>>> i
0.6000000000000001
# 示例:Decimal類型數據是精確的小數,可以傳遞給Decimal整型或者字符串參數
>>> from decimal import getcontext, Decimal, Context
>>> mydec = Decimal.from_float(12.222)
>>> mydec
Decimal('12.2219999999999995310417943983338773250579833984375')
>>> mydec = Decimal(0.9)
>>> mydec
Decimal('0.90000000000000002220446049250313080847263336181640625')
>>> mydec = Decimal("3.14")
>>> mydec
Decimal('3.14')
-
==complex==
複數 complex:複數就是實數和虛數的統稱
在數學中的表示:複數的基本形式是 a+bi, 其中 a,b 是實數,a 稱為實部,bi 稱為虛部,i 是虛數單位
complex 的組成:複數由實數部分和虛數部分組成,一般形式為 x+yj,其中的 x 是複數的實數部分,y 是複數的虛數部分,這裡的 x 和 y 都是實數
# 示例 >>> a = 5 + 4j >>> a.real 5.0 # 存放的是浮點型 >>> a.imag 4.0
Python 字符串#
字符串:字符串是字符的序列
表示方法:單引號(');雙引號(“);三引號(''' 或”””);原樣輸出
符號 | 說明 | 示例 |
---|---|---|
單引 (') | 可引用包含雙引號的字符串 | 'say“hello”' |
雙引號 (“) | 可引用包含單引號的字符串 | “What'syourname?” |
三號引 (''' 或”””) | 可引用一個多行的字符串,在三引號中可自由使用單引號和雙引號 | ''' 這是多行字符 裡面可包含單引號 ' 和雙引號” ''' |
特殊標記 (r) | 不使得轉義字符,將字符原樣輸出 | r”hello\tworld!” |
# 示例
>>> a = 'test'
>>> b = "test"
>>> a
'test'
>>> b
'test'
>>> a = '''
... t
... e
... s
... t'''
>>> a
'\nt\ne\ns\nt'
>>> print(a)
t
e
s
t
# print(a)按照規定的格式打印輸出
>>> c = "t1\nt2"
>>> c
't1\nt2'
>>> print(c)
t1
t2
>>> c = 't1\nt2'
>>> c
't1\nt2'
>>> print(c)
t1
t2
>>> c = r"t1\nt2"
>>> print(c)
t1\nt2
-
== 轉義字符 ==
轉義字符是一種特殊的字符常量。轉義字符以反斜線 "" 開頭,後跟一個或幾個字符。轉義字符具有特定的含義,不同於字符原有的意義,故稱 “轉義” 字符。
轉義字符 | 描述 | 轉義字符 | 描述 | 轉義字符 | 描述 |
---|---|---|---|---|---|
\(在行尾時) | 續行符 | \n | 換行 | \oyy | 八進制數,yy 代表的字符,例如:\o12 代表換行 |
\\ | 反斜杠符號 | \v | 縱向制表符 | \xyy | 十六進制數,yy 代表的字符,例如:\x0a 代表換行 |
\' | 單引號 | \t | 橫向制表符 | \other | 其它的字符以普通格式輸出 |
\" | 雙引號 | \r | 回車 | \b | 退格 (Backspace) |
\a | 響鈴 | \f | 換頁 | \e | 轉義 |
\000 | 空 |
-
== 字符串取值 ==
下標取值法(注意:下標從 0 開始)
切片取值法
# 示例
>>> a = "test"
>>> a[0]
't'
>>> a = "test"
>>> a[0:2] # 取下標為0~2的數據。包括0,不包括2
'te' # 前面包括,後面不包括
字符串的不可變的序列
一旦創造了一個字符串,就不能再改變它
# 示例
>>> a = "hello world"
>>> a[4] = "1"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> id(a)
140585442705648
級連字符串
如果把兩個字符串相鄰放著,它們會被 python 自動級連
# 示例
>>> info = "chen""peng"
>>> info
'chenpeng'
- == 字符串常用方法 ==
- == 字符串常用方法 —— 判斷系列(True/False)==
方法 | 功能 |
---|---|
str.isdigit() | 字符串中是否只包含數字 |
str.isnumeric() | 字符串中是否只包含數字(包括中文一到九等) |
str.isalnum() | 字符串中是否只包含字母或數字 |
str.istitle() | 字符串中是否每個單詞首字母大寫,其他字母小寫 |
str.isalpha() | 字符串中是否只包含字母(漢字會算作字母) |
str.isupper() | 字符串中是否全為大寫 |
str.isidentifier() | 字符串是否為合法標識符 |
str.isprintable() | 字符串是否為可打印字符 |
str.islower() | 字符串中是否全為小寫 |
str.isspace() | 字符串中是否只包含空格(tab 也算空格) |
str.startswith(prefix[,start[,end]]) | 字符串是否以某字符串開始,可以通過 start 和 stop 參數設置搜索範圍 |
str.endswith(suffix[,start[,end]]) | 字符串是否以某個字符串結束,可以通過 start 和 stop 參數設置搜索範圍 |
# 示例
my_str = "This Is TEST!"
my_title = "This is My Title"
my_num = "123"
my_num2 = "一二三四"
my_str2 = "hello"
my_str3 = "hello123"
# 判斷系列
print("判斷數字", my_num.isdigit()) # 字符串中是否只包含數字
print("判斷數字", my_num.isnumeric()) # 字符串中是否只包含數字(包括中文一到九等)
print("判斷數字", my_num2.isdigit()) # 只能判斷阿拉伯數字
print("判斷數字", my_num2.isnumeric()) # 可以判斷中文數字
print("判斷字母:", my_str.isalpha()) # 有空格/“!”會報錯 # 判斷字母(漢字會算作字母)
print("判斷字母數字:", my_str3.isalnum()) # 有空格會報錯 # 判斷字母數字
print("判斷字符串是否以This開始", my_title.startswith("This"))
print("判斷字符串是否以This結束", my_title.endswith("This"))
2. == 字符串常用方法 —— 查找統計類 ==
方法 | 功能 |
---|---|
len(string) | 統計字符串長度 |
str.index(sub[,start[,end]]) | 顯示 substring 在字符串中第一次出現的下標位置,沒有會報錯 |
str.find(sub[,start[,end]]) | 查找 substring, 找到返回其起始位置,找不到返回 - 1 |
# 示例
# 查找統計類
my_str = "This Is TEST!"
print("長度:", len(my_str)) # 空格、!占長度
print("i 第一次出現的位置", my_str.index("i")) # 字符串“i”第一次出現的位置
print("i 第一次出現的位置", my_str.find("i")) # 字符串“i”第一次出現的位置,找不到返回-1
print("i 出現的次數", my_str.count("i"))
3. == 字符串常用方法 —— 字符串轉換類(返回一個新對象)==
方法 | 功能 |
---|---|
str.upper() | 將字符串轉換為大寫 |
str.lower() | 將字符串轉換為小寫 |
str.title() | 將字符串中的單詞首字母大寫,其他字母小寫 |
str.split('sep') | 指定'sep' 作為分隔符將字符串切割成列表,分隔符可以是任意字符(默認是空格) |
'str'.join(list) | 將列表用 str 拼接成一個大字符串 |
str.strip([string]) | 去除字符串中首尾的字符串,不帶參數默認去除空格 |
str.zfill(number) | 返回指定長度的字符串,原字符串右對齊,前面填充 0 |
str.replace('old','new'[,count]) | 用新的字符替換老字符,還可以指定替換的個數,默認全部替換 |
str.capitalize() | 句子首字母大寫 |
str.center(width[,fillchar])str.ljust(width[,fillchar])str.rjust(width[,fillchar]) | 返回一個原字符串居中 (靠左 / 靠右) 對齊,width 為總長度,兩邊用一個字符 fillchar 填充,如果指定的長度小於原字符串的長度則返回原字符串 |
str.expandtabs(number) | 將 \t 轉換成 number 個空格 |
# 示例
# 字符串轉換類
msg = " hEllo World Chen "
print("大寫", msg.upper())
print("小寫", msg.lower())
print("標題", msg.title())
msg2 = "root:x:0:0:root:/root:/bin/bash"
print("切割:", msg2.split(":"))
msg3 = msg2.split(":")
print("拼接:", "#".join(msg3))
print("去除首尾空白", msg.strip(), "######")
print("去除root首尾:", msg2.strip("root"))
print("字符串填充:", msg.zfill(40))
print("字符串替換", msg2.replace(":", "%"))
print("整個字符串首字母大寫", msg.capitalize())
msg4 = "xxx"
print(msg4.center(50, ' '))
print(msg4.center(50, '-'))
print(msg4.ljust(50, "-"))
print(msg4.rjust(50, "-"))
- == 字符串拼接 ==
# 示例
# 字符串拼接(+)
>>> a = 'I' + 'Love' + 'Python'
>>> print(a)
ILovePython
#字符串拼接(join)
>>> a = ['I', 'Love', 'Python']
>>> print(''.join(a))
ILovePython
+ 與 join的效率問題
一般來說,+ 拼接 效率比 join 拼接低
+拼接,每一次出現都會在內存中開辟1個新的空間,所有效率低,比較耗時
join一次性拼接成1個大的字符串
- == 字符串格式化 ==
字符串格式化(%)
基本格式
%[(name)][flags][width].[precision]typecode
-(name):命名
-flags:+,-,''或0。+表示右對齊;-表示左對齊;''為一個空格,表示在正數的左側填充一個空格,從而與負數對齊,0表示使用0填充
-width表示顯示寬度
-precision表示小數點後精度
# 示例
# %格式化
name = "wen"
age = 18
print("姓名: %s, 年齡: %s"%(name, age))
print("姓名: %s, 年齡: %s"%(age, "wen2"))
字符串格式化(format)
{變量:[填充字符][對齊方式 <^>][寬度][格式]}
# 示例
# format 格式化
name = "wen"
age = 18
print("format01 --> 姓名:{}, 年齡:{}".format(name, age))
print("format01 --> 姓名:{}, 年齡:{}".format(age, name))
print("format02 --> 姓名: {1}, 年齡:{0}".format(name, age))
print("format02 --> 姓名: {1}, 年齡:{0}".format(age, name))
print("format03 --> 姓名:{name1}, 年齡:{age1}".format(name1 = name, age1 = age))
print("format01 --> {0:*>10}".format(10,20)) # 注:0 第1個變量
print("format01 --> {1:*>10}".format(10,20)) # 注:1 第2個變量
print("format01 --> {1:*<10}".format(10,20)) # 注::執行 ; * 填充字符
print("format01 --> {1:*^10}".format(10,20)) # 注:^ 居中 ; 10 填充寬度10字符
print("format02 --> {0:.2f}".format(1/3,5.333))
print("format02 --> {1:06.2f}".format(1/3,5.333))
# 二進制
print("format02 --> {0:b}".format(10))
# 八進制 注:16進制是”{0:x}”.format(10)
print("format02 --> {0:o}".format(10))
# 千分位格式化
print("format02 --> {0:,}".format(123456789))
字符串格式化-f
# 示例
# f標誌符 格式化
a = "I"
b = "Love"
c = "Python"
print(f"{a}{b}{c}")
#結果 ILovePython
print("{a}{b}{c}".format(a = a, b = b, c = c)) # 注:效果等同
#結果 ILovePython
print(f"{a}{b}{c:a^10}") # 注:對字符串c的操作:用“a”填充寬度10,居中
#結果 ILoveaaPythonaa
print("{a}{b}{c:a^10}".format(a = a, b = b, c = c)) # 注:效果等同
#結果 ILoveaaPythonaa
Python 數字 - 布爾值#
布爾值(Booleans)是一個邏輯值
取值範圍只有True和False(真和假)
布爾值為假:
'',0,0.0,(),[],{},None,False
None是一個特殊的常量,表示一種特殊的數據類型(NoneType)
值布爾值為真:
除了為假的,其他的都為真
# 示例
* 布爾值可以相互加減
>>> a = 1
>>> b = 2
>>> print(a == b)
False
>>> c = (a == b) + (a == d) # 注:c = 0 +1
>>> c
1
# 布爾值排序
>>> lst=[(a==d),(a==b)] # 注:(a==d)為真,(a==b)為假
>>> sorted(lst)
[False, True] # 注:因為默認情況下 0為假,1為真
其他#
○常量
常量是指一旦初始化後就不能修改的固定值
注意:在Python中表示一個常量通常用大寫(約定俗成,非強制)表示,如:PI=3.1415926
○NoneType
None表示什麼也沒有