mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

02_Python-CSDN_數據類型1

基本類型#

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 為虛數
  1. ==int==

    python3 中只有 int(可存超長數據)

    整型進制表示法
    進制表示方法示例
    二進制以 0b 開頭,只能包含 0、1,逢 2 進 10b11,0b12(錯誤的表示)
    八進制以 0o 開頭,能包含 0-7,逢 8 進 10o11
    十六進制以 0x 開頭,能包含 0-F,逢 16 進 10x11
    十進制直接由數字 0-9 組成,逢 10 進 111

    整型進制操作

    進制轉換-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
    
  2. ==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')
  1. ==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
  1. == 字符串取值 ==

    ​ 下標取值法(注意:下標從 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'
  1. == 字符串常用方法 ==
    1. == 字符串常用方法 —— 判斷系列(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, "-"))
  1. == 字符串拼接 ==
# 示例
# 字符串拼接(+)
>>> a = 'I' + 'Love' + 'Python'
>>> print(a)
ILovePython

#字符串拼接(join)
>>> a = ['I', 'Love', 'Python']
>>> print(''.join(a))
ILovePython
+ 與 join的效率問題
	一般來說,+ 拼接 效率比 join 拼接低
	+拼接,每一次出現都會在內存中開辟1個新的空間,所有效率低,比較耗時
	join一次性拼接成1個大的字符串
  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表示什麼也沒有

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。