Python有五個標準的數據類型:
- Numbers(數字)
int(整型)
在混合計算時,Python會把整型轉換成爲浮點數。
float(浮點型)
complex(複數)
bool(布爾類型)
不能參與數學運算
- String(字符串)
- List(列表)
- Tuple(元組)
- Dictionary(字典)
- bytes(字節數組)
String(字符串)
說到字符串,就必然要涉及字符的編碼問題。因爲在計算內部,存儲的只有0與1
字符編碼
在計算機中只能處理0和1的這兩個數字的數字串,爲了能使用計算機處理非數字問題。科學家設計出了字符編碼,它是字符映射在計算機中的數字串,不同的編碼方式其數字串的長度不一樣,長度越長能被編碼的字符越多。
ASCII
這是由美國人設計的編碼方案,它有7位,可以編碼全部的美國相關字符
GBK, ISO, Unicode, UTF-8, ...
隨着計算機在全世界的普及,ASCII編碼已不能滿足需求,因此各國出現了自己的本土編碼方案,好把自己國家的文字字符使用計算機來處理,但全世界的編碼方案太多不利用相關軟件,文檔的移植,因此出現了Unicode編碼,Unicode編碼容納了各種編碼方案
各種編碼有如下包含關係
ASCII<GBK,ISO,UTF-8...<Unicode
各種編碼都是兼容ASCII碼的
兩個概念
1.存儲編碼
2.顯示編碼(你要使用的編碼)
如果存儲編碼與要顯示的編碼不一致時,就需要轉碼,否則就會顯示出亂碼!!!
這是亂碼出現的根本原因
在python3中的存儲編碼是Unicode
如果要使用其他編碼時的轉換關係如下
字符串的操作
s = "the people's republic of china"
# 索引/切片字符串
print(s[0])
print(s[2])
# 索引倒數第一個字符串,倒序時從-1開始
print(s[-1]) # a
# 索引倒數第二個字符串
print(s[-2]) # n
# 切片操作是隻包括開始不包括結尾
# [start:end:step]
print(s[1:4]) #he
print(s[0:8:2]) # tepo
# 切片所有的字符串
print(s[:]) # the people's republic of china
print(s[0:]) # the people's republic of china
print(s[:-1]) #the people's republic of chin
# 如果步長是負數,則是逆序輸出字符串內容
print(s[::-1]) # anihc fo cilbuper s'elpoep eht
# 首字母大寫
print(s.capitalize()) # The people's republic of china
#全大寫
s1 = s.upper()
# 全小寫
s2 = s.lower()
print(s1) # THE PEOPLE'S REPUBLIC OF CHINA
print(s2) # the people's republic of china
# 大小寫轉換
print(s.swapcase()) # THE PEOPLE'S REPUBLIC OF CHINA
s3 = "hello yes-no yy*aa+dd_cc"
# 每個單詞的首字母大寫, 以空白符爲分隔符
print(s3.title()) # Hello Yes-No Yy*Aa+Dd_Cc
# 以指定長度輸出字符串,有夠的地方,使用敏宇的字符填充
print(s.center(40, '=')) # =====the people's republic of china=====
# 計算字符串長度
print(len(s)) # 30
# 測試字符串是否以指定的字符串開頭或結尾
# True:hello mmfk
if s.startswith("the"):
print("hello mmfk")
# False
if s.endswith("cc"):
print("hello china")
# 在字符串中定位某字符串,成功返回index, 失敗返回-1
print(s.find("china")) # 25
print(s.find("cc")) # -1
# 在字符串中定位某字符串,成功返回index, 失敗就報錯
# print(s.index("cc")) # 找不到報錯
# 使用指定的分隔符將字符串分隔開來,返回的是list
words = s.split(" ")
print(words) # ['the', "people's", 'republic', 'of', 'china']
# format用於連接多個字符串,這種方法比直接使用+連接要好
# format 的三種用法
s = '我叫{},今年{},愛好{},再說一下我叫{}'.format('mn',22,'girl','mn')
print(s)
name = input('請輸入名字:')
s = '我叫{0},今年{1},愛好{2},再說一下我叫{0}'.format(name,22,'ff')
print(s)
name = input('請輸入名字:')
s = '我叫{name},今年{age},愛好{hobby},再說一下我叫{name}'.format(age=18,name=name,hobby='fc')
print(s)
# 使用指定新字符串,去替換字符串中指定的舊字符串
s4 = s.replace('china', '中國')
print(s4)
# 字符串支持成員運算符
if 'chi' in s:
print("到家了")
# str運算符,可以將其他類型的數據轉換爲字符串
str(100)
Number
Python Number 數據類型用於存儲數值。
數據類型是不允許改變的,這就意味着如果改變 Number 數據類型的值,將重新分配內存空間。
Python 支持三種不同的數值類型:
- 整型(Int) - 通常被稱爲是整型或整數,是正或負整數,不帶小數點。Python3 整型是沒有限制大小的,可以當作 Long 類型使用,所以 Python3 沒有 Python2 的 Long 類型。
- 浮點型(float) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
- 複數( (complex)) - 複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。
number1 = 0xab # 16進製表示 171
number2 = 0o15 # 八進制表示 13
x = '12'
int(x) # 將x轉換爲整數
hex(number2) # 將number2 轉換爲16進制的表示
oct(number2) # 將number2 轉換爲8進制的表示
complex(number2, 2) #創建一個複數 complex(實部,虛部)
bool型數據
0是False, 非0是True
空字符串是False, 非空字符串是True
#str --->bool
#s = "" -----> False
#非空字符串都是True
#s = "0" -----> True