此隨筆是微信公眾號:Python技術迷文章內容,只用於學習使用。
1、目標讀者
為了讓這篇博文看着正式些,我得說一下本文的目標讀者:
-
沒有了解過python,但有其他語言基礎的讀者
-
了解部分python基礎語法,但是沒有編過程序練習的讀者
-
完全沒有了解過python,但是知道部分程序理論的讀者
-
完全不懂程序,准備入門python的(不是很推薦)
-
當然,如果你是python的大佬,還請大佬幫忙指出程序中不合理的地方。
2、 這個例子長啥樣
寫在程序之前
整個程序包含了138個知識點,哈哈,不要看着知識點多,其實每個知識點在代碼中我就寫了一句。所以這些知識點也就138行代碼。
在python,可以利用#號進行注釋,我的程序里面也都會采取#來講解代碼含義。同時給予知識點的編號。
並且,python利用代碼間的縮進表示隸屬關系,簡單來說如下
i =int(input()) if i>0: print('hello world') #一定要有之前的縮進,以表示這條語句屬於if else: print('world hello')
好了,接下來給出我的300行例子吧👇
注:如果是初學,可以將每個函數單獨截取閱讀並運行查看。當然咯,代碼不能光讀不寫,一定要動手去編。如果不動手編,可能看完運行完你依舊還是不是很懂(本例子可以直接跟着指令直接運行)
1 #注:在python中需要注意代碼之間的縮進,通常以一個tab的距離表示隸屬關系 2 3 4 import os #1、利用import語句進行導入模塊,用逗號分隔可以導入多個包 5 import math,copy,random,time 6 from collections import Counter #2、利用from...import ....進行導入 7 import numpy as np #3、利用as關鍵字重命名包名,以后再使用就可以直接用np了 8 9 10 def hello_world(): #4、利用def關鍵字創建函數,簡單來說:函數就是將具有獨立功能的代碼塊組織成一個模塊,需要的時候調用 11 #創建函數格式:def name(參數1,參數2....): 12 yourname = input('你好,請輸入你的名字:') #5、輸入函數,input(),若input中有字符串可以輸出 13 print('歡迎來到Python的世界,',yourname) #6、輸出函數,print(),若要輸出多個對象,利用逗號分隔 14 print('讓我們開始學習吧~') 15 16 17 def hello_twice(): 18 global yourname,yourheight,yourweight #7、利用global關鍵字定義全局變量,使之在整個程序運行周期能夠被調用 19 yourname = input('請輸入你的名字:') 20 yourheight = input('請輸入你的身高:') 21 yourweight = input('請輸入你的體重:') 22 23 24 #python中字符串的部分操作 25 def deviding_line(): 26 word1 = 'i am line' #8、字符串的創建,利用單引號' 或者雙引號" 進行創建 27 word2 = word1.upper() #9、字符串的函數,利用運算符.進行調用,該語句中的upper()可以將字符串轉換為全大寫字母 28 word3 = word1.lower() #10、lower()函數,將字符串轉換為全小寫 29 word4 = word1.title() #11、title()函數,可以將字符串標題化 30 #以上三個函數僅為字符串的部分函數 31 words = [word1,word2,word3,word4] #12、[]可以創建一個列表,列表可以存放很多的對象 32 line = '-' * 40 #13、利用*運算符創建串,這里就是有40個-符號 33 34 35 endReturn = line+words[random.randint(0,3)]+line #14、字符串可以利用+號直接相連 36 #15、上面出現的random.randint()可以創建隨機整數,0和3為隨機數的上下限 37 return endReturn #16、函數返回值,可以在被調用時將這個值返回 38 39 40 #學習python中的數字模型 41 def study_number(): 42 num1 = input('請輸入一個數字:') 43 print('你輸入的是數字%s'%num1,'可它的類型為:',type(num1)) #17、輸出函數格式控制 44 #18、type()函數可以返回該值的類型 45 num2 = int(input('再輸入一個數字:')) #19、利用int()函數進行數值類型轉換,將數字轉換為int整型 46 print('你輸入的是數字%s' % num2, '它的類型為:', type(num2)) 47 num3 = float(input('再輸入一個數字:')) #20、float()函數可以轉換為浮點數類型 48 print('你輸入的是數字%s' % num3, '它的類型為:', type(num3)) 49 print('num1+num2={}'.format(int(num1)+num2)) #21、數字加法 50 # 22、format()函數格式化輸出,在字符串中的{}符號將被替換為format()的參數 51 print('num1-num2={}'.format(int(num1)-num2)) #23、數字減法 52 print('num1*num2={}'.format(num1*num2)) #24、num1*num2並不會是你想要的數據,因為input()函數,默認輸入為字符類型 53 print('num1*num2={}'.format(int(num1) * num2)) #25、數字乘法 54 print('num2//num3={:.3f}'.format(num2//num3)) #26、數字整除,同時{:.3f}表示輸出格式小數點后面保留三位 55 print('num2/num3={:.4f}'.format(num2/num3)) #27、數字除法,保留小數點后四位 56 print('num2%num3={:.4f}'.format(num2 % num3)) #28、求余數 57 print('num2%num3={:.4%}'.format(num2%num3)) #29、求余數,{:.4%}輸出格式為百分比格式 58 print('num1**num2={}'.format(int(num1)**num2)) #30、冪運算 59 print('This is the {a},and {b}'.format(a='numbers',b='some operations')) #31、format多參數,標記位置對應輸出 60 61 62 one,two,three = True,True,False #32、bool值 63 print(one,two,three) 64 print('and運算符:',one and two,one and three) #33、and運算,當兩個值同時為真時才為真 65 print('or運算符:',one or two,one or three) #34、or運算符,當兩個值同假時為假 66 print('not運算符:',not one,not two,not three) #35、not運算符,得到相反的值 67 68 69 #學習python中的列表模型 70 def study_list(length): #36、帶有參數的函數 71 l1 = [1,2,3,4,5,9.0] #37、創建列表,利用符號[] 72 l2 = list(range(10,10+length)) #38、創建列表,也可以用list() 73 #39、range()函數,可以創建一個整數列表,格式為range(start,end,step),start為開始位置,end為結束位置,前閉后開,step為步長 74 print('l1的類型為:',type(l1)) 75 print(l1[1],l2[1]) #40、訪問列表值,可以直接用list[num]的方式進行訪問 76 l3 = l2 #41、將l2的引用賦給l3 77 print(id(l1),id(l2),id(l3)) #42、id()函數可以獲取對象的內存地址,在這里可以看到l3的的地址和l2是一樣的 78 l3[0]=99 #43、更新列表值 79 print('l2==l3么?',l2==l3) #44、更新l3后依舊等於l2,因為l3和l2本來就是一個對象,不過換了個名字 80 l4 = l2.copy() #45、復制一個l2給l4,copy()創建一個一模一樣的列表 81 l4[0]=999 82 print('l4==l2么?',l4==l2) #46、此時l4不等於l2 83 print('刪除前',l4) 84 del l4[0] #47、del語句進行刪除列表值,在python中del可以刪除所有的變量 85 print('刪除后',l4) 86 l4.append(30) #48、給列表添加值 87 l4.extend(l1) #49、給列表追加一個序列多個值 88 print('添加l1后:',l4) 89 l4.reverse() #50、列表反轉 90 print('反轉后:',l4) 91 l4.sort() #51、sort()函數,將列表進行排序 92 print('排序后:',l4) 93 94 95 #學習python中的元組模型 96 def study_tuple(length:int)->bool: #52、解釋參數類型的函數創建,->為返回值類型 97 tuple1 = (1,2,3,4) #53、創建元組,利用()符號,元組的特性是不可以改變 98 tuple2 = tuple(range(10,10+length)) #54、利用tuple創建元組 99 100 101 print(tuple1.count(1)) #55、元組函數count(),用於輸出某個值的數量 102 print(tuple1.index(1)) #56、元組函數index(),可以按照索引得到值 103 try: #57、python中的異常處理,try:語句內部如果出現錯誤則會轉入到except中 104 tuple1[0] = 9 #58、因為元組的不可改變性,所以該語句會出錯 105 except TypeError: 106 print('元組插入失敗') 107 finally: #59、finally內語句不管是否出現錯誤都會執行 108 print('不管插入成不成功我都會執行') 109 110 111 try: 112 print(id(tuple1),id(tuple2)) 113 except: 114 return False 115 else: 116 tuple3 = tuple1+tuple2 #60、元組雖然不可改變,但是可以通過+號進行合並為另一個元組 117 print(tuple3,id(tuple3)) 118 return True 119 120 121 def study_dict(): #學習python中的字典模型,字典是 鍵->值 的映射 122 dict1 = {1:'一',2:'二',3:'三',4:'四'} #61、以下為創建字典的5種方法 123 dict2 = dict(one=1,two=2,three=3) 124 dict3 = dict(zip([6,7,8,9],['Six','Seven','Eight','Nine'])) 125 dict4 = dict([('One',1),('Two',2),('Three',3)]) 126 dict5 = dict({1:'一',2:'二',3:'三',4:'四'}) 127 print(type(dict1),dict1==dict5) #62、可以看到,dict1和dict5是等價的 128 print(dict1[1],dict2['one'],dict3[6],dict4['One'],dict5[1]) #63、通過字典的鍵訪問 129 print(dict1.get(4)) #64、通過get函數訪問內容 130 131 132 dict1[1] = '壹' #65、修改字典內容 133 dict1[5] = '五' #66、添加字典 134 print(dict1) 135 print(1 in dict1, 6 in dict1, 7 not in dict1) #67、in和not in關鍵字,可以判斷值是否在序列中 136 dict6 = dict1.copy() #68、字典的復制 137 dict6[1] = 'One' 138 print(dict1,'<dict1------------dict6>',dict6) 139 140 141 dict1.clear() #69、字典的清空 142 print(dict1) 143 del dict1,dict2,dict3,dict4,dict5,dict6 #70、刪除字典,也可以用del dict[key]的方式刪除某個鍵 144 145 146 def study_set(): #python中集合的學習,集合中不存在相等的值 147 set1 = set(['You','Are','Not','Beautiful']) #71、利用set()函數進行創建集合 148 set2 = {'You','Are','So','Beautiful'} #72、利用{}創建集合,創建空集合的時候不能用{},因為{}表示字典 149 set3 = set2.copy() #73、集合的復制 150 151 152 print(type(set1)) 153 print(set1,set2) 154 print(set1|set2) #74、集合或運算符,得到兩個集合中所有元素 155 print(set1&set2) #75、集合與運算符,得到兩個集合共同元素 156 print(set1^set2) #76、不同時包含於set1和set2的元素 157 print(set1-set2) #77、集合差運算,得到set1有,set2沒有的元素 158 print(set1<=set2,set3<=set2,set3<set2) #78、<=符號,判斷是否為子集,<符號,判斷是否為真子集 159 160 161 162 163 set1.add('Me too') #79、集合添加元素 164 print('is語句用法',set3==set2,set3 is set2,set1 is not set2) #80、is和is not語句,is語句用於判斷對象是否一樣,==判斷值是否一樣 165 set3.clear() #81、清空集合,集合變為空 166 print(set3) 167 del set3 168 169 170 def study_Some_functions(): #python中一些函數 171 list1 = [1,2,3,4,5,6] #同學們,眼熟不,這就是之前的列表,下面的這些大家都認認是啥 172 tuple1 = (11,12,13,14,15,16) #元組 173 set1 = set(list1) #集合 174 dict1 = dict(zip([1,2,3,4,5],['one','Two','Three','Four','Five'])) #字典 175 176 177 print(max(list1),max(tuple1),max(set1),max(dict1)) #82、max()函數,得到序列中最大值 178 print(min(list1),min(tuple1),min(set1),min(dict1)) #83、min()函數,得到最小值 179 print(sum(list1),sum(tuple1),sum(set1),sum(dict1)) #84、sum()函數,得到序列和 180 print(len(list1),len(tuple1),len(set1),len(dict1)) #85、len()函數,得到序列長度 181 print(divmod(list1[0],tuple1[0])) #86、divmod()函數,計算兩個數的商和余數,結果兩個格式為(商,余數) 182 print(list(enumerate(tuple1))) #87、enumerate(),給元組添加一個索引 183 184 185 list2 = list(tuple1) #88、利用list()將元組,字典等等轉換為列表 186 list3 = list(set1) 187 list4 = list(dict1) 188 tuple2 = tuple(list1) #89、利用tuple()將列表,字典等轉換為元組 189 190 191 print(list2,list3,list4) 192 193 194 for i in range(len(list1)): #90、for循環語句 195 print(list1[i],end=' ') #91、print的屬性end,可以使輸出格式為end的內容,而不是默認換行 196 print() 197 for i in dict1: #92、for循環遍歷 198 print(i,dict1[i],end=' ') 199 200 201 list5 = list(reversed(list1)) #93、reversed()函數,可以反轉序列 202 print('\n',list5) #94、\n,換行符 203 204 205 testStr = "The mountains and rivers are different, the wind and the moon are the same" 206 words = testStr.split(' ') #95、split()函數,以split()內參數分割字符串,返回一個列表 207 print(words) 208 words.sort(key=len) #96、sort()函數,進行排序,參數key=len時,以字符串長度為標准排序 209 print('以長度排序:',words) 210 words.sort(key=len, reverse=True) #97、reverse參數,結果反轉 211 print('以長度排序並且反轉:', words) 212 words.sort(key=str) #98、以字典序進行排序 213 print('以字典序排序:',words) 214 215 216 ct = Counter(testStr) #99、collections模塊中的Counter,可以得到字符串中每個數字出現次數 217 print(ct) 218 ct.update('eeeexxxxxlllll') #100、更新 219 print(ct) 220 print(ct.most_common(5)) #101、得到字符數最多的前五位 221 222 223 def study_Slice(): #python的切片操作,得到序列的部分內容 224 str1 = 'I hope one day, I can find you, my sweet dream' 225 list1 = list(range(10)) 226 tuple1 = tuple(list1) 227 228 229 print(str1[:]) #102、切片格式為str[start:end:step],前閉后開,step可為正負,默認步長為1 230 print(str1[::-1]) #103、當步長為負數的時候,反轉 231 print(str1[:15]) #104、只有end時,截取最開始到end 232 print(str1[15:]) #105、只有start時,截取從start到末尾的所有字符 233 print(str1[::2]) #106、步長為2 234 print(str1[1::2]) 235 236 237 print(list1[:]) #107、和str一樣 238 print(list1[2:]) 239 print(list1[:2]) 240 print(list1[::-1]) 241 242 243 list1[1:5] = [10] #切片賦值,右邊必須為一個可以遍歷的序列 244 #list1[1:5] = 10 這樣就會報錯 245 print(list1) 246 247 248 def study_loop_select(): #python中的循環和選擇語句 249 list1 = [1,2,3,4,5] 250 num = int(input('while循環,輸入你想要循環的次數:')) 251 i = 1 252 while i<=num: #108、while expression:當expression為真的時候進行循環 253 if i<5: #109、if...elif...else選擇語句,如果判斷結果只有兩個,可以使用if...else 254 print('我打印了',i,'次') 255 elif i<10: 256 print('打印了',i,'次,真累啊') 257 elif i<15: 258 print('打印太多啦,再打印我就要停止了...') 259 elif i<20: 260 print('continue...') 261 i+=1 262 continue #110、continue語句,用在循環中,continue后的所有語句都不允許,直接進入下次循環 263 print('我想我可能輸出不了了') 264 else: 265 print('累死我了,休息。都',i,'次了~_~') 266 break #111、break語句,運用在循環中,直接退出循環,所以,在本例子中,這個循環最多循環20次 267 i+=1 268 time.sleep(0.5) #112、time庫為python中的時間庫,time.sleep(second)可以使程序暫停運行second秒 269 else: #113、while循環后接一個else語句,當執行完所有循環后執行一次,可以省略(個人感覺用處不大) 270 print('while結束了') 271 272 273 for i in list1: #113、for循環,上面代碼有用到過 274 print(i,end=' ') 275 print() 276 for i in range(5): 277 print(i) 278 279 280 281 282 def study_expression_deduction(): #114、python表達式推導 283 list1 = [i for i in range(10)] #115、利用該語句推導出列表 284 list2 = [x for x in range(20) if x%2==0] #116、語句中增加if,滿足if后表達式的才會是列表 285 print(list1,'<list1--------------list2>',list2) 286 287 288 print(deviding_line()) #117、函數可以在任何地方被調用,如果是自己調用自己就可以稱為遞歸調用 289 290 291 list3 = [['_'] * 3 for i in range(3)] 292 print(list3) 293 294 295 fruits = ['Apple','Banana','Pear'] 296 colors = ['Red','Yellow','Green'] 297 suitcolor = [(color,fruit) for color,fruit in zip(colors,fruits)] #118、兩個列表合並 298 print(suitcolor) 299 cartesian = [(color,fruit) for color in colors for fruit in fruits] #119、兩個列表的笛卡爾積 300 print(cartesian) 301 302 303 dict1 = {fruit:color for fruit,color in suitcolor} #120、字典的推導,只要是帶有鍵值對的任何序列,都可以推導出字典 304 print(dict1) 305 306 307 def study_files(): 308 filepath = input('請輸入你的文件路徑(輸入quit退出):') 309 if filepath=='quit': 310 return True 311 try: 312 file = open(filepath,'w') #121、打開文件,'w'為寫格式打開 313 file.write('哈哈,現在開始寫文件') #122、向文件寫入字符串 314 file.close() #123、關閉文件 315 file = open(filepath,'r') #122、以'r'讀格式打開 316 print('從文件中讀出的內容:\n',file.read()) #123、read()函數可以得到文件內容 317 except FileNotFoundError: 318 print('文件未找見請重新輸入') 319 study_files() #124、這就是上面所說的遞歸調用 320 except: 321 print('出現錯誤,請重新輸入路徑') 322 study_files() 323 324 325 class Users(): #125、面向對象編程,python中創建類class,類包含有屬性與方法,包括有私有變量,共有變量等等 326 def __init__(self,name,height,weight): #126、類的構造方法,創建實例時自動調用 327 self.name = name 328 self.height = height 329 self.weight = weight 330 self.yanzhi = 100 331 332 333 def display(self): #127、類方法 334 print('大家好,我是{},身高{},體重{},顏值超高{}'.format(self.name,self.height,self.weight,self.yanzhi)) 335 336 337 if __name__=="__main__": #128、無論之前有什么,程序都會從這里開始運行 338 hello_world() #129、所以這是運行的第一句,調用該函數 339 deviding_line() 340 try: 341 print(yourname) #130、調用完hello_world()函數后,因為在hello_world()函數內部有一個yourname變量,所以我們進行輸出,看在這里能不能找見這個變量 342 except: 343 print(' 未能找見該變量 ')#131、不可能找見這個變量的,因為yourname是局部變量,只存在於hello_world()函數內部 344 deviding_line() 345 hello_twice() #132、因為在該函數中定義了global語句,所以該函數中的變量在以下程序中都可以使用 346 347 348 user = Users(yourname,yourheight,yourweight) #133、實例化對象,創建Users類的實例 349 user.display() #134、對象調用方法 350 351 352 #135、在python中,可以用三引號進行多行注釋,但是如果用變量接收注釋的話也可以是一個有格式的字符串,如下 353 chooseinformation = '''Input the number of the function you want to Run(quit is exit): 354 1、study_number2、study_list 355 3、study_tuple4、study_dict 356 5、study_set6、study_Some_functions 357 7、study_Slice8、study_loop_select 358 9、study_expression_deduction 359 10、study_files 360 ''' 361 deviding_line() 362 while True: #136、while循環進行運行程序,只有當輸入quit時才會退出循環(不過你強制退出當然也可以退出) 363 input('按鍵繼續') #137、為了讓輸出不那么快,等待按鍵后才輸出以下內容 364 print(chooseinformation) 365 num = input('輸入序號:') 366 #138、在以下if...elif...else選擇中,我們來選擇運行不同的函數 367 if num=='quit': 368 break 369 elif num=='1': 370 study_number() 371 elif num=='2': 372 study_list(10) 373 elif num=='3': 374 study_tuple(10) 375 elif num=='4': 376 study_dict() 377 elif num=='5': 378 study_set() 379 elif num=='6': 380 study_Some_functions() 381 elif num=='7': 382 study_Slice() 383 elif num=='8': 384 study_loop_select() 385 elif num=='9': 386 study_expression_deduction() 387 elif num=='10': 388 study_files() 389 deviding_line() 390 print('哈哈,恭喜你,這個程序結束咯~')
這個程序里面包含了python的一些基本語法,比如說有幾種常見數據結構:列表,元組,字典,集合,字符串,也有他們的基本操作,有面向對象的類,循環語句,選擇語句,函數的創建,包的導入,文件的讀取,切片,表達式推導。
但是這依舊是python中最基礎的部分,如果想要精通一門語言,沒有自己的親自實踐,不一行行的去敲打鍵盤,不一個bug一個bug的去尋找,永遠也難以掌握它的精髓。
來源:https://blog.csdn.net/the_sangzi_home/article/details/