一. python基本數據類型
-
int 整數,用來進行數學運算
-
str 字符串,存放少量數據
-
bool 布爾值,用來判斷True,False
-
list 列表,存放大量數據,[ ]表示
-
tuple 元組,只讀列表,( ) 表示
-
dict 字典,存放大量數據,{key:value}表示
-
set 集合,存放大量數據,不重復
二.整數(int)
所有整數都是int類型。
bit_length()
返回一個數的二進制長度。(了解)
a = 2
print(a.bit_length()) 結果: 2 a = 5
print(a.bit_length()) 結果: 3
說明:十進制轉二進制
將正的十進制數除以二,得到的商再除以二,依次類推直到商為零或1時為止,然后在旁邊標各步的余數,最后倒着寫出來,高位補零就OK了。
三.布爾值(bool)
取值只有True、False。bool值沒有操作
1.所有的空都是False,所有的非空都是True。
a = 0 # 整數0,False print(bool(a)) s = "" # 空字符串,False print(bool(s)) lst = [] # 空列表,False print(bool(lst)) dic = {} # 空字典,False print(bool(dic)) a = None # None表示空,真空,False print(bool(a))
2.類型轉換
把xx類型轉換成yy類型,yy(xx)
str => int # 字符串轉整數
int(s)
int => str # 整數轉字符串
str(i)
list => tuple # 列表轉字典
tuple(lst)
tuple => list # 字典轉列表
list(tu)
四.字符串(str)
在python中,用', ", ''', """ 引起來的內容被稱為字符串。
1.切邊和索引
索引
下標,切記,下標從0開始
s = "伊麗莎白兒時" print(s[0]) print(s[1]) print(s[2]) print(s[3]) print(s[4]) print(s[5]) # print(s[6]) # 沒有6,報錯了,索引不能超過邊界 print(s[-1]) # 倒數第一個 print(s[-2])
切片
格式:[起始位置:結束位置] 或 [起始位置:結束位置:步長]
特點:1.顧頭不顧尾。2.默認從左往右切。
s = "伊麗莎白兒時" print(s[1:3]) # 從1切到3,但是取不到3 print(s[1:100]) # 從1切到100,如果右邊已經過了最大值,相當於獲取到最后 print(s[1:]) # 從1開始切,切到結尾 print(s[:2]) # 從頭開始切,切到2 print(s[:]) # 從頭到尾 print(s[-1:-3]) # 安裝默認規則,從-1往右切,是怎樣都不會切到-3的,方法在下面。 print(s[-3:-1]) # 只能從左到右切 # 給出第三個參數來控制方向,第三個參數叫步長 s = "伊麗莎白兒時" print(s[-1:-3:-1]) # - 表示反方向,從右往左切。 print(s[1:5:3]) # 從左到右,從1到5,但不包含5,每3個取1個。 print(s[-1:-5:-2]) # 從右到左,從-1到-5,但不包含-5,每2個取1個。
2.字符串的相關操作
字符串是不可變的對象,所有任何操作對源字符串是不會有任何影響的。
2.1.大小寫轉換
capitalize()
把首字母變成大寫
lower()
把字母變成小寫
upper()
把字母變成大寫。(重要,標紅的都是必記的)
swapcase()
大小寫互換
casefold()
把字母變成小寫。
和lower的區別:
--lower()對某些字符支持不夠好。
--casefold()對所有字母都有效,比如東歐一些字母。
title()
把每個單詞的開頭大寫。
s = "alex is a teacher And wusir is a teacher too" s1 = s.capitalize() # 只把alex首字母大寫,並且測試時發現,把And變成小寫的了。 print(s1) s2 = s.lower() # 全部變小寫 print(s2) s3 = s.upper() # 全部變大寫 print(s3) s4 = s.swapcase() # 大小寫轉換,大寫變小寫,小寫變大寫 print(s4) s2 = "БBß" # 俄美德 print(s2) print(s2.lower()) # 德文的B,不會轉換 print(s2.casefold()) # 全都可以轉換成小寫 s = "alex_is a teacher And wu吳sir is a teacher too" s5 = s.title() # 只要不是全是字母連接的開頭都會大寫,alex_is中a和i都大寫,wu吳sir中w和s都大寫 print(s5)
2.2.切來切去
center()
居中
expandtabs()
更改tab的長度
strip()
去掉空白(空格和換行符)
replace()
字符串替換
split()
字符串切割
切完的結果是一個列表,列表中裝的是字符串,用什么切就會損失掉什么
s = "sp" s1 = s.center(10) # 拉長成10,把原字符串放中間,其余位置補空白 print(s1) s1 = s.center(10, "*") # 拉長成10,把原字符串放中間,其余位置補* print(s1) s = " alex is a teacher " s1 = s.strip() # 去掉左右兩側的空格,中間的空格不會影響 print(s1) s2 = s.lstrip() # 去掉左邊的空格,left print(s2) s3 = s.rstrip() # 去掉右邊的空格,right print(s3) s = "sp alex sp" s1 = s.strip("sp") # 去掉左右兩邊的sp,空格不會去 print(s1) s2 = s.lstrip("sp") # 去掉左邊的sp,空格不會去 print(s2) s3 = s.rstrip("sp") # 去掉右邊的sp print(s3) s = "alex_wusir_taibai_ritian" s1 = s.replace("_", "A") # 將_,全部替換為大寫A print(s1) s2 = s.replace("_", "") # 將_,全部替換為空(不是空格) print(s2) s3 = s.replace("_", "A", 2) # 將_,替換為A,從左到右替換2個 print(s3) s = "alex_wusir_taibai_ritian" lst = s.split("taibai") # 用taibai切,那生成的列表中,就會去掉taibai print(lst) s = """我是誰 你是誰""" lst = s.split("\n") # 去掉換行符(\n) print(lst)
2.3.格式化輸出
format()
# 輸出的結果是一樣的 s = "我叫%s, 我今年%s歲了" % ("周傑倫", "40") print(s) s = "我叫{}, 我今年{}歲了".format("周傑倫", "40") # 按位置格式化 print(s) s = "我叫{0}, 我今年{1}歲了".format("周傑倫", "40") # 指定位置 print(s) s = "我叫{1}, 我今年{0}歲了".format("40", "周傑倫") print(s) s = "我叫{name}, 我今年{age}歲了".format(name="周傑倫", age=40) # 指定關鍵字 print(s)
2.4.查找
startswith()
以...開頭
endswith()
以...結尾
count()
統計xx在字符串中出現的次數
find()
查找xx在字符串中出現的位置, 只找第一次出現的位置, 沒有就返回-1
index()
查找xx在字符串中出現的位置, 只找第一次出現的位置, 當字符串不存在的時候, 報錯
s = "Tom is a cat" print(s.startswith("Tom")) # 是否以Tom開頭, 注意區分大小寫 print(s.endswith("cat")) # 是否以cat結尾 print(s.count("a")) # 統計a出現的次數 print(s.find("a")) # 返回 7 print(s.find("A")) # 返回 -1 print(s.find("a", 8, 12)) # 切片找, 返回10 print(s.index("a")) # 返回 7 # print(s.index("A")) # 會報錯
2.5.條件判斷
isdigit()
是否由數字組成
isalpha()
是否由字母組成
isalnum()
是否由數字和字母組成
isnumeric()
是否有數字組成, 可識別中文
isupper()
判斷字符串中包含的字母是否全為大寫
islower()
判斷字符串中包含的字母是否全為小寫
# 只列舉正確(True)的判斷 s1 = "123" print(s1.isdigit()) # 數字 s2 = "abc" print(s2.isalpha()) # 字母 s3 = "123abc" print(s1.isalnum()) # 數字 print(s2.isalnum()) # 字母 print(s3.isalnum()) # 數字和字母 s = "壹仟貳佰五十六萬拾" print(s.isnumeric()) s1 = "AND" s2 = "AND123!@" print(s1.isupper()) print(s2.isupper()) s3 = "and" s4 = "and123!@" print(s3.islower()) print(s4.islower())
2.6.計算字符串的長度
len()
python內置函數,通用的
s = "abcd" print(len(s))
3.for循環
for 變量 in 可迭代對象:
循環體
else:
當循環結束的時候會執行
解釋:
可迭代對象: 可以一個一個往外取值的對象.
s = "我是誰" # 使用while循環 n = 0 while n < len(s): print(s[n]) n = n + 1 # 迭代 # 使用for循環 for c in s: print(c)
in的小結:
in的兩種用法
-
在for中, 是把每一個元素獲取到賦值給前面的變量.
-
不在for中, 判斷xxx是否出現在str中
