標籤:enter 為什麼 輸入 str ;; format 唯讀 and pop
Python學習之路day2
一: 字串的格式化輸出
name = "abc"name2 = 123name3 = 22name4 = "abc\n\t123"abc = ‘‘‘ name : %s name2 : %d name3 : %f name4 : %r name5 : %s‘‘‘%(name,name2,name3,name4,name4)print(abc)
結果為:
如上例,總結如下位
%s : 輸入字串
%d : 只能輸出數字,否則會報錯
%f : 顯示浮點數
%r : 按原格式輸出
二:運算
a = 60 #0 0 1 1 1 1 0 0
b = 13 #0 0 0 0 1 1 0 1
1:與運算,兩個數位二進位值,必須全為 1 ,則結果才為1
a & b = 0 0 0 0 1 1 0 0 = 12
2:或運算,兩個數位二進位值,只要有一個為1 ,則結果為1
a / b = 0 0 1 1 1 1 0 1 = 49
3: 異或運算,兩個數位二進位值,上下對比不同則為1
# a ^ b = 0 0 1 1 0 0 0 1 = 49
三 : for 迴圈
迴圈的主要目的是,為了減少重複代碼
如例一:迴圈代碼4次
1 age = ‘abc123‘ 2 3 for i in range(4): 4 print("迴圈:", i )
結果:
例二:迴圈十次,只顯示後6次
1 for i in range(10):2 if i<5:3 continue #不往下走了,直接進入下一次loop4 print("loop:", i )
結果:
四: while 迴圈
1:死迴圈,會一直迴圈
1 count = 02 3 while True:4 print("開始啦...",count)5 count +=1
2:while 限制次數迴圈,猜年齡:
age = 18count = 0while count < 3: input_age = int(input("輸入您的年齡:")) if input_age == age: print("猜對了!") break elif input_age < age: print("猜小了") else: print("猜大了!") count += 1 # 每次loop 計數器+1else: print("猜錯3次了,退出.")
五:三元運算
就是將 多行列印的條件顯示成一行:
例一:
a = 1b = 2if a > b: c = a+belse: c = a-b
可以縮減為一行如下
c = a+b if a>b else a-b
格式為:
result
=
值
1
if
條件
else
值
2
如果條件為真:result = 值1
如果條件為假:result = 值2
六:字串其他用法
print(name.capitalize()),首字母大寫print(name.casefold()),全變小寫print(name.center(10,‘-‘)),湊足10個字元不夠的按照 “-” 表示,如果不寫預設以空格分割,字串置中。print(name.encodswith()),列印真或假print(name.expandtabs)),加大字串的空間print(name.find("lib")),找尋值,找到早了回複值,找不到回複 -1print(name.format()),與%s類似(照了相片看相片)print(name.isdigit()),判斷是否是一個數字============================print("ad".isalpha()),只包含字母的,回複 真print("a2d".isalnum()),只包含字母和數組的組合,回複真print("2".isdecimal) ,值中有小數則返回 trueage = "22"print(age.isdecimal())print("2".isdigit()),只包含整正數print("al_ex".isdentifier()) # 是不是合法的變數名print("al_ex".isupper())print("2".islower())print("2".isumeric())print(float("3.1"),判斷是否是浮點數,不是就報錯print("3.1".isspase()),判斷是否是空格print(",".join("alex")), 結果: a,l,e,x //*判斷決定分割print("alex".ljust(50,‘-‘)),從左開始顯示字串,不足的用 “ - ”,print("alex".rjust(50,‘-‘)),從右開始顯示字串,不足的用 “ - ”,=================== print("alex".translate(trantab)), print("alex".partition("1")), print("alex".replace("ex","123")), 結果:al123 //* 替換字元
七:元組
元組其實跟列表差不多,也是存一組數,只不是它一旦建立,便不能再修改,所以又叫唯讀列表
文法:names
=
(
"alex"
,
"jack"
,
"eric"
)
八:字典
1:字典的作用,為什麼要有字典:由於列表查詢值時,需要知道索引值,或者要知道子列表中的所有值,查詢時非常不方便,所以取值與查詢非常不方便,所以出現了字典,來彌補列表的不足
2:字典的文法,以及特點:
Variable = { key,value } # 字典
Variable = [ 值1,值2,值3 ] # 列表
Variable = (值1,值2,值3) # 元組
1:在字典的key 中,key值必須時唯一的,否則在查詢值時,會出現錯誤,
2:字典中的key值,是無序的,key對應的值是不變的,除非人為的對其進行修改
3:字典的增刪改查:
names = { "stu1101":{"name":"Alex","age":"22","hobbie":"girl"}, "stu1102":"Jack", "stu1103":"rain"}
1): 查
print(names["stu1101"]["hobbie"])
print(names.get("stu1104","abc123")) #查詢stu1104值是否存在,存在就返回他尋找的value值,不存在就返回abc123是自己定義的,不定義就返回None。
(1):查詢字典中的所有key值
print(names.keys())
(2):查詢字典中的所有value值
print(names. values())
2): 增加
names["stu1104"] = ["zsy",18,"ABC123"]
3): 改
names["stu1104"]=‘new_value_1‘ #如果要替換值,替換後他會將key對應的 value值全部替換掉,無法修改key對應的值中的其中一個值
4):刪除
(1):print(names.pop("stu1101","abc123"))
# 刪除stu1101的值,如果值存在就返回他的刪除的value值,不存在就返回abc123,abc123是自己定義的,如果不定義,要刪除的值還不存在,就會報錯,所以必須加上回顯的值
(2):# del names["stu1103"]
4:字典的其他動作
1):fromkeys(變數,value值) # 將列表改為字典
//* 注釋:
1:dict是資料類型,只能使用dict才能調用fromkeys()
2:顯示 jack 與 eric 對應的value的值是一個記憶體id ,所以,可以判斷,他們指向的,value 值 是一個,所以如果對其中一個進行修改其他的也會跟著改,8-4-1。所以,如果不想出現此情況可以對 value值進行修改,8-4-2:
圖8-4-1
圖8-4-2
2):items():將字典列印成列表
用途一般是用來迴圈列印字典資訊的:但是效率不高
3):setdefault(N,M):尋找N,如果N存在,回示N的value , 圖8-4-3
如果N不存在,則添加N,M。(N為key,M為value) 圖8-4-4
圖8-4-3
圖8-4-4
4):update():合并兩個列表,如果兩個列表有相同的值,則使用新加入的值
5):copy():複製一個字典:佔用一個單獨的記憶體空間:
(1):淺 copy
//*注釋:1:copy是單獨複製出來了一塊記憶體位址,所以兩個最外層的字典記憶體ID不同
2:第二層的字典ID相同的意義是因為,stu1101對應的value不是直接在整個字典中的,他是 stu1101指向了一個記憶體的ID,兩個字典的二層字典,同時指向了一個ID,所以才出現上面的情況
例1:可以使用copy的這個共性,實現兩個賬戶同時對一個庫的使用,就如同,銀行卡的子母銀行卡
(2):深copy,完全 copy 連子字典都重新定義
例二:
Python學習之路day2