一,數據類型的轉換
1常用的數據類型有int,str,bool三種;
int是整型:一般的操作是查找數據的二進制長度bit_length() 一般數據有: 1)二進制:逢二進一 2)十進制,(0-9)逢十進一 3)八進制,(0-7)蜂八進一 4)十六進制逢 (0-F)十六進一 例: a=10 print(a.bit_length())#就能得到a這個變量的值的二進制長度
二,數據類型的轉換
結論1:把x轉換成y類型 y(x) 例子:print(bool(-1))#將布爾值轉變成數據類型 print(int(a))#將a轉變成數據類型 print(str(a)#將a轉變成字符類型 結論2:空的東西是False, 非空的東西是True, false: False: 0,'',[],{},set(),tuple(),None(真空) print(bool({}) #false
三,索引切片
1,在python和其他開發語言中我們的索引都是從零開始算的
反向 -7 -6-5 -4 -3-2 -1 正向 0 1 2 3 4 5 6 s = "文 能 提 筆 安 天 下" print(s[3]) print(s[7]) # index out of range 超過了索引的范圍 print(s[-8]) # 反向索引 - 反向
切片 從字符串中獲取新字符串.例子:
s = "銀王喜歡和金王一起討論污王" s1 = s[5]+s[6]+s[7]+s[8] print(s1) s[start: end] 從start切到end。 但是不包含end. 顧頭不顧尾 s2 = s[5:9] # 從5-9 沒有9 print(s2) print(s[3:7]) # 歡和金王 print(s[5:]) # 從5開始, 到末尾 print(s[:5]) # 從頭開始到5結束 print(s[:]) # 從頭到尾 print(s[5:3]) # 默認的方向是從左到右. s[start: end: step] step如果是正數 從左到右。 如果是負數就是從右到左 s = "金毛獅王謝遜紫衫龍王黛綺絲" print(s[3:1:-1]) # 可以從右往左切片 print(s[1:8:3]) #從左往右切且各三個取一個值 print(s[::-1])
總結:
s[start: end: step]
start: 起始位置
end: 結束為止。取不到
step: 步長。 每隔xx個取1個。 默認是1 如果step是-1 從右往左取值
四,字符串操作
1 upper() 全部轉化成大寫字母,loswer全部轉換成小寫,capitalize()首字母大寫,title()每個單詞首字母大寫,swapcase()大寫變小寫小寫變大寫 2 strip() 去掉左右兩段的空白(空格,\n, \t) 3 replace(old, new) 字符串替換 4 split() 切割. 得到的結果是一個列表. 5 startswith() 判斷是否以xxx開頭,endswith()判斷以什么結尾 6 find() 查找。如果找到了。 返回索引。如果找不到返回-1 7 len() 內置函數,求字符串長度 8 count()計數計算字符或數字出現的次數 9 isdigit(),判斷是否是數字
例子
2.有字符串s = "123a4b5c"
1)通過對s切⽚形成新的字符串s1,s1 = "123" s="123a4b5c" s1=s[0:3] print(s1) 2)通過對s切⽚形成新的字符串s2,s2 = "a4b" s="123a4b5c" s2=input(s[3:6]) print(s2) 3)通過對s切⽚形成新的字符串s3,s3 = "1345" s="123a4b5c" s3=s[0:8:2] print(s3) 4)通過對s切⽚形成字符串s4,s4 = "2ab" s="123a4b5c" s4=s[1:7:2] print(s4) 5)通過對s切⽚形成字符串s5,s5 = "c" s="123a4b5c" s5=s[-1] print(s5) 6)通過對s切⽚形成字符串s6,s6 = "ba2" s="123a4b5c" s6=s[-3:-8:-2] print(s6)
3.使⽤while和for循環分別打印字符串s="asdfer"中每個元素。
#(while循環) s="asdfer" index=0 while index<len(s): print(s[index]) index+=1 #(for循環) # s="asdfer" # for i in s: # print(i)
4.使⽤for循環對s="asdfer"進⾏循環,但是每次打印的內容都是"asdfer"。
s="asdfer" for i in s: print(i,s)
5.使⽤for循環對s="abcdefg"進⾏循環,每次打印的內容是每個字符加上sb,
s="abcdefg" for i in s: print(i +"sb")
作業及默寫
1.有變量name = "aleX leNb" 完成如下操作: 1)移除 name 變量對應的值兩邊的空格,並輸出處理結果 name = "alex leNb" print(name.strip()) 2)移除name變量左邊的"al"並輸出處理結果 name = "alex leNb" print(name.strip("al")) 3)移除name變量右⾯的"Nb",並輸出處理結果 name= "alex leNb" print(name.strip("Nb")) 4)移除name變量開頭的a"與最后的"b",並輸出處理結果 name="alex leNb" print(name.strip("a"+"b")) 5)判斷 name 變量是否以 "al" 開頭,並輸出結果 name="alex leNb" n=name.startswith("al") if n == True: print("name is al start") else: print("is not al start") 6)判斷name變量是否以"Nb"結尾,並輸出結果 name = "alex leNb" n=name.endswith("Nb") if n== True: print("是以Nb結尾") else: print("不是以Nb結尾") 7)將 name 變量對應的值中的 所有的"l" 替換為 "p",並輸出結果 name = "alex leNb" print(name.replace("l","p")) 8)將name變量對應的值中的第⼀個"l"替換成"p",並輸出結果 name="alex leNb" n=name.replace("al","ap") print(n) 9)將 name 變量對應的值根據 所有的"l" 分割,並輸出結果。 name="alex leNb" print(name.split("l")) 10)將name變量對應的值根據第⼀個"l"分割,並輸出結果。 print(name.replace("al","ap").split("p")) 11)將 name 變量對應的值變⼤寫,並輸出結果 name="alex leNb" print(name.upper()) 12)將 name 變量對應的值變⼩寫,並輸出結果 name="alex leNb" print(name.lower()) 13)將name變量對應的值⾸字⺟"a"⼤寫,並輸出結果 name="alex leNb" print(name.capitalize()) print(name.title()) print(name.swapcase()) 大寫變小寫,小寫變大寫 name="alex leNb" print(name.upper()) 14)判斷name變量對應的值字⺟"l"出現⼏次,並輸出結果 name="alex leNb" print(name.count("l")) 15)如果判斷name變量對應的值前四位"l"出現⼏次,並輸出結果 name="alex leNb" i=name[0:4] print(i.count("l")) 16)從name變量對應的值中找到"N"對應的索引(如果找不到則報錯),並輸出結果 name="alex leNb" print(name.index("N")) 17)從name變量對應的值中找到"N"對應的索引(如果找不到則返回-1)輸出結果 name="alex leNb" print(name.find("N")) 18)從name變量對應的值中找到"X le"對應的索引,並輸出結果 name="alex leNb" print(name.find("x le")) 19)請輸出 name 變量對應的值的第 2 個字符? name="alex leNb" print(name.find("l")) 20)請輸出 name 變量對應的值的前 3 個字符? name = "alex leNb" print(name.find("a"),name.find("l"),name.find("e")) 21)請輸出 name 變量對應的值的后 2 個字符? name="alex leNb" print(name.find("N"),name.find("b")) 22)請輸出 name 變量對應的值中 "e" 所在索引位置? name="alex leNb" print(name.find("e")) 例如:asb, bsb,csb,...gsb。
6.使⽤for循環對s="321"進入循環,打印的內容依次是:"倒計時3秒","倒計時
2秒","倒計時1秒","出發!"。
s="321" for t in s: print("倒計時" + t + "s") else: print("出發")
7,實現⼀個整數加法計算器(兩個數相加):
如:content = input("請輸⼊內容:") ⽤戶輸入:5+9或5+ 9或5 + 9,然后進
行分割再進⾏計算。
content=input("請輸入內容") n=content.split("+") s=0 for i in n: s += int(i) print(s)
8,升級題:實現⼀個整數加法計算器(多個數相加):
如:content = input("請輸⼊內容:") 用戶戶輸入:5+9+6 +12+ 13,然后進行計算
content=input("請輸入內容") n=content.split("+") s=0 for i in n: s += int(i) print(s)
分割再進⾏計算。
9,計算⽤戶輸⼊的內容中有⼏個整數(以個位數為單位)。
如:content = input("請輸入內容:") # 如fhdal234slfh98769fjdla
content=input("請輸入內容") count=0 for b in content: if b.isdigit()==1: count=count+1 print(count)
五迭代
for 變量 in 可迭代對象: 循環體(break,continue) else:
例子
寫代碼,完成下列需求:
用戶可持續輸出(用while循環),用戶使用的情況:
輸⼊A,則顯示走大路回家,然后在讓用戶戶進二步選擇:
是選擇公交車,還是步⾏?
選擇公交車,顯示10分鍾到家,並退出整個程序。
選擇步⾏,顯示20分鍾到家,並退出整個程序。
輸⼊B,則顯示⾛⼩路回家,並退出整個程序。
輸⼊C,則顯示繞道回家,然后在讓用戶進行步選擇:
是選擇游戲廳玩會,還是⽹吧?
選擇游戲廳,則顯示 ‘一個半⼩時到家,爸爸在家,拿棍等你。’並讓其
重新輸⼊A,B,C選項。
選擇⽹吧,則顯示‘兩個⼩時到家,媽媽已做好了戰斗准備。’並讓其重
新輸⼊A,B,C選項。
while True: user=input("請輸入一個字母A或B或C:") if user=="C": print("繞道回家") use1 = input("請問是游戲廳還是網吧玩會:") if use1 =="游戲廳": print("一個半小時到家,爸爸在家,拿棍等你。") elif use1 == "網吧": print("兩個小時到家,媽媽已做好了戰斗准備。") elif user=="A": print("走大路回家") use2=input("請問坐公交還是步行:") if use2 == "公交車" : print("10分鍾到家") break elif use2 =="步行": print("20分鍾到家") break else: print("走小路回家") break 寫代碼:計算 1 - 2 + 3 ... + 99 中除了88以外所有數的總和? i=1 sumi=0 j=1 sumj=0 while i<99 and j<99: sumi=sumi+i j = i + 1 i += 2 if j==88: continue sumj = sumj + j print(sumi-sumj)(升級題)判斷⼀句話是否是回⽂. 回⽂: 正着念和反着念是⼀樣的. 例如, 上海 ⾃來⽔來⾃海上(升級題) while True: wen = input("請輸入一句話:") if wen[0:] == wen[-1::-1] : print("這句話是回文") else: print("不是回文")
13. 輸⼊一個字符串,要求判斷在這個字符串中⼤寫字⺟,小寫字⺟,數字,
其它字符共出現了多少次,並輸出出來
content=input("請輸入內容") count=0 cont1=0 cont2=0 cont3=0 for a in content: if a.isdigit()==1: count=count+1 # print(count) elif a.islower()==1: cont1 += 1 # print(count1) elif a.isupper()==1: cont2 +=1 #print(cont2) else: cont3 +=1 print("數字",count,"個") print("小寫字母",cont1,"個") print("大寫字母",cont2,"個") print("其他字符", cont3,"個")
14給出百家姓. 然后用戶輸入一個人的名字. 判斷這個姓是否是百家姓中的姓氏
first_name=\
'''趙錢孫李,周吳鄭王。
馮陳褚衛,蔣沈韓楊。
朱秦尤許,何呂施張。
孔曹嚴華,金魏陶姜。
戚謝鄒喻,柏水竇章。
雲蘇潘葛,奚范彭郎。
魯韋昌馬,苗鳳花方。
俞任袁柳,酆鮑史唐。
費廉岑薛,雷賀倪湯。
滕殷羅畢,郝鄔安常。
樂於時傅,皮卞齊康。
伍余元卜,顧孟平黃。
和穆蕭尹,姚邵湛汪。
祁毛禹狄,米貝明臧。
計伏成戴,談宋茅龐。
熊紀舒屈,項祝董梁。
杜阮藍閔,席季麻強。
賈路婁危,江童顏郭。
梅盛林刁,鍾徐邱駱。
高夏蔡田,樊胡凌霍。
虞萬支柯,昝管盧莫。
經房裘繆,干解應宗。
丁宣賁鄧,郁單杭洪。
包諸左石,崔吉鈕龔。
程嵇邢滑,裴陸榮翁。
荀羊於惠,甄曲家封。
芮羿儲靳,汲邴糜松。
井段富巫,烏焦巴弓。
牧隗山谷,車侯宓蓬。
全郗班仰,秋仲伊宮。
寧仇欒暴,甘鈄厲戎。
祖武符劉,景詹束龍。
葉幸司韶,郜黎薊薄。
印宿白懷,蒲邰從鄂。
索咸籍賴,卓藺屠蒙。
池喬陰鬱,胥能蒼雙。
聞莘黨翟,譚貢勞逄。
姬申扶堵,冉宰酈雍。
卻璩桑桂,濮牛壽通。
邊扈燕冀,郟浦尚農。
溫別庄晏,柴瞿閻充。
慕連茹習,宦艾魚容。
向古易慎,戈廖庾終。
暨居衡步,都耿滿弘。
匡國文寇,廣祿闕東。
歐殳沃利,蔚越夔隆。
師鞏厙聶,晁勾敖融。
冷訾辛闞,那簡饒空。
曾毋沙乜,養鞠須豐。
巢關蒯相,查后荊紅。
游竺權逯,蓋益桓公。
萬俟司馬,上官歐陽。
夏侯諸葛,聞人東方。
赫連皇甫,尉遲公羊。
澹台公冶,宗政濮陽。
淳於單於,太叔申屠。
公孫仲孫,軒轅令狐。
鍾離宇文,長孫慕容。
鮮於閭丘,司徒司空。
丌官司寇,仉督子車。
顓孫端木,巫馬公西。
漆雕樂正,壤駟公良。
拓跋夾谷,宰父谷梁。
晉楚閆法,汝鄢塗欽。
段干百里,東郭南門。
呼延歸海,羊舌微生。
岳帥緱亢,況郈有琴。
梁丘左丘,東門西門。
商牟佘佴,伯賞南宮。
墨哈譙笪,年愛陽佟。
第五言福,百家姓終。'''
#for循環
name = input("請輸入用戶名") for i in first_name : if i == name[0] : break print(i,"在百家姓中") else: print("不在百家姓中")
#while循環
while True: name = input("請輸入用戶名") if name[0] in first_name : print("在百家姓中") continue else: print("不在百家姓中")
六,格式化輸出
制作趣味模板程序需求:等待⽤戶輸⼊名字、地點、愛好,根據⽤戶的名
字和愛好進⾏任意現實 如:敬愛可親的xxx,最喜歡在xxx地⽅⼲xxx
aihao="和藹可親的%s,最喜歡在%s,干%s" %("劉傳盛","小樹林","談戀愛") love="{}的演的電影,是{},{}很喜歡" .format("周星馳","幽默的","大家") AV="{0},{1},{2},{3},都是{4},受廣大{5}喜歡" .format("蒼井空","瀧澤蘿拉","小澤瑪麗牙","波多野結衣","日本明星","宅男") print(AV) print(love) print(aihao)