第0關(guān) print()函數(shù)與變量 課程目標 - 了解python:用途、組成
- 熟練使用函數(shù):print()
- 掌握換行的三種方法
- 了解變量的意義,熟練給變量賦值
- 認識轉(zhuǎn)義字符,了解轉(zhuǎn)義字符的使用方法
課程難點 - print()函數(shù)以及引號的使用
- 換行的兩種簡便方法
- 區(qū)分賦值與等于
課程重要內(nèi)容重現(xiàn) 一、最基本的一條代碼 1. print()函數(shù) print()函數(shù)由兩部分構(gòu)成: - 指令的執(zhí)行對象:在print后面的括號里的內(nèi)容
2. 引號的用法 單引號和雙引號都可以使用,但需要匹配,并且配合使用可以區(qū)分開原文和print()函數(shù)的結(jié)構(gòu)。例如,print(“Let’s go”),雙引號的作用是函數(shù)結(jié)構(gòu),單引號是英文語法。 不用引號時,括號內(nèi)必須是數(shù)字或者數(shù)字運算,這是計算機可以理解的內(nèi)容。例如:print(1 1),最后輸出是2。 注意:python中所有的符號都是英文狀態(tài)下的,并且會區(qū)分大小寫。 二、換行 - 重復使用print()函數(shù),將不同行的語句放在不同的函數(shù)中輸出。(事倍功半)
- 使用三引號:用三引號將需要分行的內(nèi)容括起來,并且在引號內(nèi)使用回車進行段落排版。例如:
print('''我愿意留在湯婆婆的澡堂里工作兩年, 第一年在鍋爐房和鍋爐爺爺一起燒鍋爐水, 第二年在澡堂給客人搓背, 如果我違背工作內(nèi)容的話, 將在這個世界變成一頭豬。''') - 使用\n,此時是不允許回車換行的!例如:
print('我愿意留在湯婆婆的澡堂里工作兩年,\n第一年在鍋爐房和鍋爐爺爺一起燒鍋爐水,\n第二年在澡堂給客人搓背,\n如果我違背工作內(nèi)容的話,\n將在這個世界變成一頭豬。') 三、轉(zhuǎn)義字符 對于可作為結(jié)構(gòu)性符號的,例如單引號,感嘆號,若想直接使用,可在符號前加一個反斜線\。則對于之前的例子:print(“Let’s go”),也可以寫作print(‘Let\’s go’),中間的單引號由于使用了反斜線,所以作為整條語句的內(nèi)容而不是print()函數(shù)的結(jié)構(gòu)。 四、變量與賦值 - 變量是我們自己創(chuàng)建的,命名要求:
- 只能是一個詞
- 只能包含字母、數(shù)字、下劃線(下劃線可以用于連接多詞)
- 不能以數(shù)字開頭
- 盡量描述包含的數(shù)據(jù)內(nèi)容(抽象概括存儲的內(nèi)容)
代碼中的=(等號)是用于賦值而邏輯上的等于要使用兩個等號,即1 1==2。 變量的特點:保存的數(shù)據(jù)是可以隨意變化的,儲存的值永遠都是最新的那個。例如: name='魔法少女千醬' name='夏目千千' name='千尋' print(name) 這段代碼輸出是結(jié)果是‘千尋’ 第1關(guān) 數(shù)據(jù)類型與轉(zhuǎn)換 課程目標 - 熟練掌握三種數(shù)據(jù)類型及其轉(zhuǎn)換
- 掌握數(shù)據(jù)拼接的方法
- 了解查詢數(shù)據(jù)類型的type()函數(shù)
課程難點 - 區(qū)分字符串下的數(shù)字與整數(shù)、浮點數(shù)下的數(shù)字
- 使用【 】進行數(shù)據(jù)拼接時,連接的數(shù)據(jù)類型必須為同數(shù)據(jù)類型
- 使用函數(shù)進行數(shù)據(jù)類型的轉(zhuǎn)換時,int()與float()函數(shù)括號內(nèi)的數(shù)據(jù)必須為純數(shù)字型文本
課程重要內(nèi)容重現(xiàn) 一、常見的三種數(shù)據(jù)類型 1、字符串 特點:被引號括起來的文本。(注意引號要使用英文狀態(tài)下的單引號或者雙引號、三引號) 例: slogan = '命運!不配做我的對手!' attack = '308' gold = '48g' blood = ''' 101''' achieve = 'First Blood!' 先將內(nèi)容以字符串形式賦值給變量,最后使用print()函數(shù)輸出變量即可。 2、整數(shù) 整數(shù)英文為integer,簡寫做int。是正整數(shù)、負整數(shù)和零的統(tǒng)稱,是沒有小數(shù)點的數(shù)字。 特點:無需配合引號使用,可進行計算。如:108(整數(shù))‘108’(字符串)‘6小靈童’(字符串)但若存在文字類數(shù)據(jù),則必須使用引號,將其變?yōu)樽址愋?。例?/p> print(6小靈童) print(6skr) #打印數(shù)據(jù)
SyntaxError: invalid syntax #終端顯示結(jié)果:報錯:無效語法 具體的計算符號:(優(yōu)先級與日常算數(shù)一致) 
3、浮點數(shù) 相對于整數(shù)而言,浮點數(shù)就是帶小數(shù)點的數(shù)字。英文名是float,與整數(shù)int()和字符串str()不同,浮點數(shù)沒有簡寫。 二、查詢數(shù)據(jù)類型——type()函數(shù) 作用:查詢數(shù)據(jù)類型 例:print(type('查詢內(nèi)容')) achieve = 'Penta Kill' print(type(achieve))
#結(jié)果顯示:<class 'str'> 三、數(shù)據(jù)拼接 利用數(shù)據(jù)拼接符號【 】,將需要拼接的變量連在一起。注意:變量內(nèi)的數(shù)據(jù)類型必須為字符串型才可進行拼接!如: hero = '亞瑟' enemy = '敵方' action = '團滅' gain = '獲得' achieve = 'ACE稱號' #結(jié)果顯示為 #亞瑟團滅敵方獲得ACE稱號
print(hero action enemy gain achieve) hero = '亞瑟' enemy = '敵方' action = '秒殺' gain = '獲得' number = 5 achieve = 'Penta Kill'
print(hero action number enemy gain achieve)
#結(jié)果顯示報錯:TypeError:can only concatenate str (not 'int') to str #類型錯誤:只能將字符串與字符串拼接 四、數(shù)據(jù)類型轉(zhuǎn)換 1、轉(zhuǎn)換為字符串類型 str()函數(shù)能將數(shù)據(jù)轉(zhuǎn)換成其字符串類型。只要將所需數(shù)據(jù)放到括號里,這個數(shù)據(jù)就能成為字符串類型。 用引號將數(shù)據(jù)括起來也能達到同樣結(jié)果。 例如: hero = '亞瑟' enemy = '敵方' action = '秒殺' gain = '獲得' number = 5 achieve = 'Penta Kill'
print(hero action str(number) enemy gain achieve) print(hero action '5' enemy gain achieve) #使用str()函數(shù)將變量number里的數(shù)字5變成了字符串5。 2、轉(zhuǎn)換為整數(shù) int()函數(shù)的使用,與str()類似。注意一點:只有符合整數(shù)規(guī)范的字符串類數(shù)據(jù),才能被int()強制轉(zhuǎn)換。 print(int('3.8'))
#運行后顯示結(jié)果:ValueError:invalid literal for int() with base 10: '3.8' 小數(shù)型字符串會直接報錯,而浮點數(shù)會被強制轉(zhuǎn)換: print(int(3.8))
#運行后結(jié)果顯示:3 也就是說,對于浮點數(shù),int()會保留其整數(shù)部分。注意:不是四舍五入! 3、轉(zhuǎn)換為浮點數(shù) float()函數(shù)的使用與int()、str()類似。如果括號里面的數(shù)據(jù)是字符串類型,那這個數(shù)據(jù)一定得是數(shù)字形式。 第2關(guān) 條件判斷與條件嵌套 課程目標 - 熟練掌握if條件判斷語句,包括單向、雙向以及多向判斷。
- 熟悉語句間的級別關(guān)系,不同級別之間要有縮進
- 熟悉計算機執(zhí)行指令的順序,能看懂并得出代碼輸出結(jié)果以及寫出if嵌套語句
課程難點 - 邏輯判斷應使用邏輯符號等于【==】
- 條件語句后一定要記得接冒號【:】,注意觀察冒號之后的語句是否縮進以及同級別的語句是否在格式上處于并列狀態(tài)。
- 在執(zhí)行變量的判斷之前,要注意變量是否已經(jīng)被賦值
課程重要內(nèi)容重現(xiàn) 一、條件判斷 即中文邏輯語句“如果...就...”。在進行判斷之前,一定要先對變量進行賦值!條件判斷就是針對不同的可能性,進行不同操作。賦值情況的前提不滿足if的條件時,自動跳過,執(zhí)行下一行命令。 其次,每一個判斷語句之后要使用冒號【:】,表示接下來的內(nèi)容是只有滿足條件才運行的。若不是條件下的語句,要記得刪除縮進。 1、單向判斷 要是if之后的條件不滿足,就跳過if語句進行下一命令。格式: if xxx(判斷的條件): 如果滿足上述條件,就執(zhí)行的操作語句 2、雙相判斷 要是if之后的條件不滿足,就執(zhí)行else里的。if與else平級(縮進一致,在else前必須有一個平級的前提)。每一個條件不能有重合部分,是互斥的,格式: if xxx(判斷的條件): 如果滿足上述條件,就執(zhí)行的操作語句 else: 如果不滿足if之后的語句,就執(zhí)行的操作語句 weight=101 #要先為醬醬的體重賦值,醬醬的體重是101斤
if weight>100: #如果體重超過100斤的條件下,就……(條件后需加冒號) print('不吃了') #就打印結(jié)果:不吃了!(注意檢查是否自動縮進) else: #如果體重沒有超過100斤的條件,就……(else條件前無縮進,條件后需加冒號) print('放心吃吧') #就打印:放心吃吧(注意檢查是否自動縮進) 3、多向判斷 if、elif和else平級。可以存在多個elif,數(shù)量根據(jù)整體能分成的所需選項數(shù)來定。注意:每一個條件不能有重合部分,是互斥的,即x<10與9<x<15,這樣的兩個條件是不可行的。如果不滿足if的條件,就判斷是否滿足elif下的條件,若所有elif的條件都不滿足,就執(zhí)行else下的語句。并且elif之后可以不接else,格式: if xxx(判斷的條件): 如果滿足上述條件,執(zhí)行的操作語句 elif xxx(與前一個if互斥的另一個條件): 如果滿足elif后的條件,就需要執(zhí)行的語句 else: 若if、elif后面的條件都不滿足,則會執(zhí)行的語句 stonenumber=1 #一定要先為寶石數(shù)量賦值
if stonenumber>=6: #注意冒號 #條件:如果你擁有的寶石數(shù)量大于等于6個 print('你擁有了毀滅宇宙的力量') #注意縮進 elif 3<stonenumber<=5: #條件:如果寶石數(shù)量在4至5個 print('紅女巫需要親手毀掉幻視額頭上的心靈寶石') else: #條件:當賦值不滿足if和elif條件時,執(zhí)行else下的命令,即寶石數(shù)量在3個以下 print('需要驚奇隊長逆轉(zhuǎn)未來') 二、if嵌套 在基礎(chǔ)條件滿足的情況下,再在基礎(chǔ)條件底下增加額外的條件判斷。在編寫if嵌套語句時,同樣的,可以按照框架,從大到小,依次往不同的大條件中補充額外條件。 historyscore=26 if historyscore>=60: print('你已經(jīng)及格') if historyscore>=80: print('你很優(yōu)秀') else: print('你只是一般般') else: print('不及格') if historyscore<30: print('學渣') else: print('還能搶救一下') print('程序結(jié)束') #結(jié)果顯示為 : #不及格 #學渣 #程序結(jié)束
每一個級別下的條件都只能執(zhí)行一個?。ɑコ猓〆lif與if類似。 
第3關(guān) input()函數(shù) 課程目標 - 理解輸入函數(shù)input()的意義
- 熟練掌握input()函數(shù)返回的數(shù)據(jù)類型,以及結(jié)果賦值、數(shù)據(jù)類型轉(zhuǎn)換的方法
課程難點 - input()函數(shù)括號內(nèi)的內(nèi)容會被輸出,但需要輸入對應數(shù)據(jù)才能繼續(xù)執(zhí)行之后代碼
- input()函數(shù)的結(jié)果必須賦值給變量,且數(shù)據(jù)類型為字符串型
課程重要內(nèi)容重現(xiàn) input()函數(shù) 1、定義 input()函數(shù)是輸入函數(shù),與print()函數(shù)類似,input()函數(shù)括號里面的內(nèi)容是會顯示出來的,但不同在于我們需要輸入對應的內(nèi)容,回車后才能繼續(xù)運行。 2、input()函數(shù)賦值 在括號內(nèi)用引號括起提示語,例: input('請鏟屎官輸入寵物的名字:') #運用input函數(shù)搜集信息 輸入的內(nèi)容被儲存在計算機內(nèi),需要將結(jié)果賦值給變量。例: print('那么,您的選擇是什么?'1'接受,還是'2'放棄呢?') choice = input('請輸入您的選擇:') #變量賦值 if choice == '1': print('霍格沃茨歡迎你的到來') else: print('您可是被梅林選中的孩子,我們不接受這個選項。) 3、input()函數(shù)的數(shù)據(jù)類型 對于input()函數(shù)來說,不管輸入的是整數(shù)1234,還是字符串‘我愛摩卡’,input()函數(shù)的輸入值(搜集到的回答),永遠會被強制性地轉(zhuǎn)換為字符串類型。(Python3固定規(guī)則)所以,不管我們在終端區(qū)域輸入什么,input()函數(shù)的返回值一定是字符串,將結(jié)果賦值給變量后,變量的數(shù)據(jù)類型也一定是字符串。 4、input()函數(shù)的數(shù)據(jù)類型轉(zhuǎn)換 使用數(shù)據(jù)類型轉(zhuǎn)換函數(shù),int(),float()可以從源頭強制轉(zhuǎn)換為對應類型。但是要注意,此時的input()函數(shù)返回值一定要是純數(shù)字型!例: money = int(input('你一個月工資多少錢?')) #將輸入的工資數(shù)(字符串),強制轉(zhuǎn)換為整數(shù)
if money >= 10000: #當工資數(shù)(整數(shù))大于等于10000(整數(shù))時 print('土豪我們做朋友吧!') #打印if條件下的結(jié)果
else: #當工資數(shù)(整數(shù))小于等于10000(整數(shù))時 print('我負責賺錢養(yǎng)家,你負責貌美如花~') #打印else條件下 注:輸入值會運用到計算時,千萬記得用int()轉(zhuǎn)換!
第4關(guān) 列表和字典-收納的藝術(shù) 課程目標 - 熟練掌握列表、字典中元素的增刪改查
- 理解列表和字典的區(qū)別
課程難點 - 列表與字典增刪改查的異同
- 正確使用切片,深刻理解切片時冒號左右數(shù)字的意義
課程重要內(nèi)容重現(xiàn) 一、列表 - 代碼格式
數(shù)據(jù)存儲在中括號[]里,用逗號隔開并使用等號賦值給列表。中括號里面的每一個數(shù)據(jù)叫作“元素”。 列表中的元素是有自己明確的“位置”的,元素相同,在列表中排列順序不同,就是兩個不同的列表。 列表中字符串、整數(shù)、浮點數(shù)都可以存儲。 - 提取元素
1)偏移量:元素在列表中的編號。 - 列表名后加帶偏移量的中括號,就能取到相應位置的元素。
2)切片:用冒號來截取列表元素的操作。 - 冒號左邊空(或者為0), :m,表示從頭取m個元素;
- 右邊空(或者為0),n: ,跳過前n個元素把剩下的取完;
- 冒號左右都有數(shù)字時,n:m,表示跳過前n個元素,取到第m個。(取出前m個元素中除了前n個后剩下的那些)
- 切片截取了列表的一部分,所以得到的結(jié)果仍然是一個列表。(即使只有一個元素,也是在列表里的,要與用偏移量取單個元素的方法區(qū)別開)
students = ['小明','小紅','小剛'] print(students[2]) #使用偏移量提取單一元素,結(jié)果顯示: #小剛 print(students[2:]) #使用切片,即使結(jié)果仍然只有一個元素,但顯示為列表: #['小剛'] 3)特別地,a,b,c=students,也可以提取出列表中的元素,變量分別用逗號隔開,且變量的數(shù)量與列表元素個數(shù)一致,最終列表元素會分別賦值給變量,例如: appetizer = ['話梅花生','拍黃瓜','涼拌三絲'] a,b,c=appetizer
print(a) print(b) print(c) print(a,b,c) #結(jié)果顯示為 #話梅花生 #拍黃瓜 #涼拌三絲 #話梅花生 拍黃瓜 涼拌三絲 - 增加/刪除元素
1)增加元素 列表名.append()。注意這里是.不是空格! append后的括號里只能接受一個參數(shù),結(jié)果是讓列表末尾新增一個元素。列表長度可變,理論容量無限,所以支持任意的嵌套。 list3 = [1,2] list3.append(3) print(list3) #添加‘3’這個元素 #結(jié)果顯示: #[1,2,3]
list3.append(4,5) list3.append([4,5]) print(list3) #添加‘[4,5]’這個列表,也就是append()的參數(shù)為一個列表,也是一個參數(shù),所以不會報錯 #結(jié)果顯示: #[1,2,3,[4,5]] 但是append(4,5)會報錯,因為給了兩個元素(沒有作為一個整體,所以算兩個參數(shù))。注意??!千萬不能:a=student.append(3),這樣a里只有none。 2)刪除元素 del 列表名[元素的索引] 。注意這里是空格不是.了! 與append()函數(shù)類似,能刪除單個元素、多個元素(切片)、整個列表。 3)修改元素 使用偏移量修改對應位置的元素。 list1 = ['小明','小紅','小剛','小美'] list1[1] = '小藍' print(list1) #結(jié)果顯示 #['小明','小藍','小剛','小美'] 二、字典 字典所存儲的兩種數(shù)據(jù)若存在一一對應的情況,用字典儲存會更加方便。唯一的鍵和對應的值形成的整體,我們就叫做【鍵值對】。鍵具備唯一性,而值可重復。 - 代碼格式
- 列表中的元素是自成一體的,而字典的元素是由鍵值對構(gòu)成的,用英文冒號連接。有多少個鍵值對就有多少個元素。如'小明':95,其中我們把'小明'叫鍵(key),95叫值(value)。
字典中數(shù)據(jù)是隨機排列的,調(diào)動順序也不影響。所以列表有序,要用偏移量定位;字典無序,便通過唯一的鍵來定位。 (注:len()函數(shù)用于獲取數(shù)據(jù)長度) students = ['小明','小紅','小剛'] scores = {'小明':95,'小紅':90,'小剛':90} print(len(students)) print(len(scores)) #結(jié)果顯示 #3 #3 #字典的元素個數(shù),數(shù)冒號就行了 - 提取元素
字典沒有偏移量,所以在提取元素時,中括號中應該寫鍵的名稱,即字典名[字典的鍵]。提取出來的是key對應的value,而不會顯示鍵的數(shù)據(jù)! scores = {'小明': 95, '小紅': 90, '小剛': 90} print(scores['小明']) #結(jié)果顯示 #95 - 增加/刪除元素、
1)新增元素 字典名[鍵] = 值。每次只能新增一個鍵值對。scores['小剛','小美']=92,85,這樣是不對的,最終會輸出('小剛','小美':(92,85))作為一個鍵值對。 album = {'周杰倫':'七里香'} album['王力宏'] ='心中的日月' album['林俊杰'] = '小酒窩' print(album) print(album['周杰倫']) #結(jié)果顯示 #{'周杰倫':'七里香','王力宏':'心中的日月','林俊杰':'小酒窩'} #七里香 2)刪除元素 del 字典名[鍵] album = {'周杰倫':'七里香','王力宏':'心中的日月'} del album['周杰倫'] print(album) #結(jié)果顯示 #{'王力宏':'心中的日月'} 3)修改元素 如果不是整個鍵值對都不需要,只需要改變對應key下的value,修改就可以,不需要del。 dict1 = {'小明':'男'} dict1['小明'] = '女' print(dict1) #字典沒有偏移量,只能通過key找到元素位置 三、列表與字典的嵌套 - 列表與列表
列表中有兩個列表元素,[1]表示取第二個元素(列表),[2]表示取第二個元素中的第三個元素(偏移量為2)。 student=[['小紅','小黃','小橙'],['小綠','小藍','小紫','小青']] print(student[1][2]) #結(jié)果顯示為 #小紫 - 字典與字典
字典中存儲了兩個字典,所以提取數(shù)據(jù)時只能用key值。 scores={'第一組':{'小明':95,'小紅':96},'第二組'{'小剛':94',小青':99}} print(scores['第一組']['小紅']) #結(jié)果顯示: #96 - 列表與字典
使用偏移量從最外層括號到最內(nèi)層括號取數(shù)。查找townee列表中的第六個元素中的第2個元素(一定是字典,因為之后用的是鍵值而不是偏移量)中key為'反面角色'的value。 townee = [ {'海底王國':['小美人魚''海之王''小美人魚的祖母''五位姐姐'],'上層世界':['王子','鄰國公主']}, '丑小鴨','堅定的錫兵','睡美人','青蛙王子', [{'主角':'小紅帽','配角1':'外婆','配角2':'獵人'},{'反面角色':'狼'}] ] print(townee[5][1]['反面角色']) 
第5關(guān) for循環(huán)和while循環(huán)-消滅該死的重復(上) 課程目標 - 掌握for...in...循環(huán)的格式與特點,了解其數(shù)據(jù)傳遞
- 熟練掌握for...in...與range()函數(shù)的結(jié)合使用
- 掌握while循環(huán)的格式與特點
- 區(qū)別for...in...循環(huán)與while循環(huán)
課程難點 - range()函數(shù)各個參數(shù)的含義
- for...in...循環(huán)與while循環(huán)的變量更迭
- while語句如何避免死循環(huán)
課程重要內(nèi)容重現(xiàn) 一、range()函數(shù) - 使用range()函數(shù),可以生成一個整數(shù)序列。
- 參數(shù)的意義:
- range(n)與range(0,n)一樣,都是生成一個從0到n-1的整數(shù)序列
- range(m,n),n>m,生成從m到n-1的序列。取頭不取尾。
- range(m,n,p),n>m,生成m到n-1中間隔為p的整數(shù)序列。例如range(3,30,5)的意思就是從3開始每間隔5取一個數(shù),直到29,結(jié)果為[3,8,13,18,23,28]。(只有兩個參數(shù)時,p默認為1。)
二、for...in...循環(huán) - i是變量名,可以根據(jù)需要取。
- 遍歷:逐一訪問全部數(shù)據(jù)。
- 用于處理已知循環(huán)次數(shù)或循環(huán)固定次數(shù)的問題。
- 格式:
- for...in...語句內(nèi)部語句需要縮進,會被重復執(zhí)行
- in后可接列表、字典和字符串,但不允許接整數(shù)、浮點數(shù)。
- 列表里的元素值依次賦值給變量i,i最終的值取決于最新一次的賦值。
- 若是字典,則賦值給變量的是字典中的key,而不是value。即遍歷的是key。
for i in [1,2,3,4,5]: print(i) #顯示結(jié)果為: #1 #2 #3 #4 #5 for i in '吳承恩': print(i) #顯示結(jié)果為: #吳 #承 #恩
d = {'小明':'醋','小紅':'油','小白':'鹽','小張':'米'} for i in d: print(i) #顯示結(jié)果為: #小明 #小紅 #小白 #小張
d = {'小明':'醋','小紅':'油','小白':'鹽','小張':'米'} for i in d: print(d[i]) #顯示結(jié)果為: #醋 #油 #鹽 #米 - range()函數(shù)配合使用
可以用for...in...語句遍歷range()函數(shù)生成的整數(shù)序列并打印。 for i in range(13,17): print(i) #顯示結(jié)果為: #13 #14 #15 #16 for i in range(n):,表示循環(huán)n次。如下面例題中i=0,i=1,i=2時都執(zhí)行一次語句內(nèi)的代碼,也就是3次。 for i in range(3): print('我很棒') #結(jié)果顯示為: #我很棒 #我很棒 #我很棒 三、while循環(huán) - 與if條件判斷類似,while后條件若滿足,會進入語句內(nèi)部循環(huán)直至條件不再滿足或內(nèi)部打斷。
- 用于處理未知循環(huán)次數(shù)或循環(huán)固定次數(shù)的問題。
- 格式
- 為避免陷入死循環(huán),在循環(huán)內(nèi)必須更新變量,如自加:a=a 1,也可以寫成a =1。
a = 0 #非格式要求,但在while循環(huán)前必須要定義變量
while a < 5: a = a 1 print(a) #顯示結(jié)果為:(不顯示0是因為a先自加再輸出,此時賦值已更新) #1 #2 #3 #4 #5 a = 0 e循環(huán)前必須要定義變量 while a < 5: a = a 1 print(a) #顯示結(jié)果為:(因為print()在循環(huán)外,只輸出最終a的賦值) #5 四、*pop()函數(shù) 用于移除列表中的一個元素(若不指定參數(shù),則默認最后一個元素),并且返回該元素的值。 可以指定移除元素,列表使用偏移量為參數(shù),字典使用key作為參數(shù)。例如:students.pop(0)是刪除并提取students這個列表中偏移量為0的元素并返回這個元素。 students = ['小明','小紅','小剛'] student1 = students.pop(0) #運用pop()函數(shù),同時完成第一個元素的提取和刪除。并將pop()的返回值存在student1這個變量中。 students.append(student1) #將移除的student1安排到最后一個座位。 print(students) #顯示結(jié)果為: #['小紅','小剛','小明'] 第6關(guān) 布爾值和四種語句-消滅該死的重復(下) 課程目標 - 熟悉布爾值與布爾運算
- 掌握break語句、continue語句如何與if結(jié)合使用
課程難點 - 數(shù)值本身作為判斷條件時,何為真何為假
- break語句、continue語句與if結(jié)合使用時的縮進量
課程重要內(nèi)容重現(xiàn) 一、布爾值與布爾運算 - 布爾值:True(判斷為真)和False(判斷為假)。為真,則可繼續(xù)運行下去,為假,條件不成立,不會執(zhí)行接下來的語句。在使用True與False時首字母要大寫!
- 布爾運算:用數(shù)據(jù)做邏輯運算。(進行布爾運算后得到的結(jié)果為布爾值。例如:下方print()函數(shù)括號內(nèi)進行了布爾運算,輸出的值為布爾值。)
1)用數(shù)值做比較,使用比較運算符號:(注意區(qū)別=與==) 
print(3<5) print(3>5) print('長安'=='長安') print('長安'!='金陵') #顯示結(jié)果為: #True #False #True #True 2)直接用數(shù)值做運算 數(shù)值本身作為判斷條件時:(none代表空值) 
3)布爾值之間的運算 and(與)、or(或)、not(非)、in(判斷一個元素是否在一組數(shù)據(jù)中)、not in(判斷一個元素是否不在一組數(shù)據(jù)中。   
list = [1,2,3,4,5] a = 1 # 做一次布爾運算,判斷“a是否在列表中” print(bool(a in list)) print(bool(a not in list))
dict = {'法國':'巴黎','日本':'東京','中國':'北京'} a = '法國' #做一次布爾運算,判斷“字典中是否有a這個鍵” print(bool(a in dict))
- bool()函數(shù)
使用bool()函數(shù)可查看一個數(shù)據(jù)的布爾值,用法與type()類似。 二、break語句 與if配合使用,if...break的意思是如果滿足了某一個條件,就提前結(jié)束循環(huán),只能在循環(huán)內(nèi)部使用。所以要注意break前的縮進!Tab鍵和空格鍵不能同時混用。 for...in...: ... if ...: break # break語句搭配while循環(huán) while...(條件): ... if ...: break 三、continue語句 在循環(huán)內(nèi)部使用,當條件滿足時,觸發(fā)continue語句,將跳過之后的代碼,直接回到循環(huán)的開始,即結(jié)束本次循環(huán),開啟下次循環(huán)。 for...in...: ... if ...: continue # continue語句搭配while循環(huán) while...(條件): ... if ...: continue 四、pass語句 常與if配合使用。 為了保持代碼結(jié)構(gòu)的完整性,pass不做任何操作,只是充當了一個占位語句。當沒想好結(jié)構(gòu)中具體的代碼時,可以先用pass占位,保證程序正常運行不報錯。 五、else語句 當循環(huán)中沒有碰到break語句、continue語句等跳出循環(huán)的操作時,就會執(zhí)行循環(huán)后面的else語句,否則就不會執(zhí)行。 第7關(guān) 項目實操:PK小游戲(1)- 小游戲大學問 課程目標 能夠獨立完成一個完整的項目 課程難點 - 模塊的調(diào)用
- 使用格式符%實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換
課程重要內(nèi)容重現(xiàn) 一、完成一個項目的流程 - 明確項目目標
- 分析過程,拆解項目
- 逐步執(zhí)行,代碼實現(xiàn)
二、調(diào)用模塊 - import 模塊名
- 調(diào)用模塊里的函數(shù):模塊名.函數(shù)名(參數(shù))
- time模塊與random模塊
1)延時函數(shù):time.sleep(1.5) 表示暫停1.5秒再運行下一行代碼 2)隨機生成一個數(shù)字:random.randint(n,m) 表示隨機從n-m之間抽取一個整數(shù) 3)隨機從列表或字典抽取一個元素:random.choice(列表或字典名) 三、不同數(shù)據(jù)類型的拼接——格式符% 先占一個位置,之后再填上實際的變量,可以省去使用數(shù)據(jù)轉(zhuǎn)換函數(shù)的麻煩。例如print('血量:%s 攻擊:%s' % (player_life,player_attack))。實際變量之間用逗號隔開。 - %s :占一個位置用來放字符串
- %f:占一個位置用來放浮點數(shù)
- %d:占一個位置用來放整數(shù)
四、format()函數(shù) 用來占位的是大括號{},不用區(qū)分類型碼(% 類型碼)。格式是'str.format()'。例如: print('【玩家】\n血量:{}\n攻擊:{}'.format(player_life,player_attack)) 第8關(guān) 編程思維:如何解決問題-編程學習的兩大思維瓶頸 略 第9關(guān) 函數(shù) 課程目標 - 了解函數(shù)的作用
- 熟練掌握函數(shù)的參數(shù)類型以及參數(shù)傳遞
- 掌握函數(shù)的返回值及return語句的運用
- 了解全局變量和局部變量,以及將局部變量轉(zhuǎn)換為全局變量的方法
課程難點 - 函數(shù)中參數(shù)的傳遞順序
- 函數(shù)的返回值及return語句的運用
課程重要內(nèi)容重現(xiàn) 一、函數(shù) 函數(shù)是組織好的、可以重復使用的、用來實現(xiàn)單一功能的代碼。寫為:函數(shù)名(參數(shù)名),注:括號內(nèi)可以為空,也可以為多個參數(shù),多個參數(shù)間用逗號隔開即可。 - 參數(shù)
函數(shù)中需要使用的變量,數(shù)量視情況而定。 1)位置參數(shù) 位置參數(shù)是描述總體最常用的一種參數(shù)。參數(shù)的順序和個數(shù)要和函數(shù)定義中一致。例如: def menu(appetizer,course): print('一份開胃菜:' appetizer) print('一份主食:' course)
menu('話梅花生','牛肉拉面') #'話梅花生'和'牛肉拉面'是對應參數(shù)appetizer和course的位置順序傳遞的,所以被叫作【位置參數(shù)】 2)默認參數(shù) 默認參數(shù)必須放在位置參數(shù)之后。若調(diào)用函數(shù)時沒有傳遞參數(shù)就為默認值,但如果調(diào)用時向默認參數(shù)傳遞了數(shù)據(jù),則默認參數(shù)被新參數(shù)代替。 def menu(appetizer,course,dessert='綠豆沙'): print('一份開胃菜:' appetizer) print('一份主食:' course) print('一份甜品:' dessert) menu('話梅花生','牛肉拉面') #結(jié)果顯示為:因為調(diào)用時只給了兩個參數(shù),第三個參數(shù)為默認值 #一份開胃菜:話梅花生 #一份主食:牛肉拉面 #一份甜品:綠豆沙 menu('話梅花生','牛肉拉面','銀耳羹') #結(jié)果顯示為:因為調(diào)用時給了三個參數(shù),第三個參數(shù)被更新 #一份開胃菜:話梅花生 #一份主食:牛肉拉面 #一份甜品:銀耳羹 3)不定長參數(shù) 一個星號*加上參數(shù)名。當傳入此處的參數(shù)數(shù)量不確定時使用,數(shù)據(jù)類型為元組(元組(tuple):寫法是把數(shù)據(jù)放在小括號()中,它的用法和列表用法類似,主要區(qū)別在于列表中的元素可以隨時修改,但元組中的元素不可更改。列表一樣,元組是可迭代對象,這意味著我們可以用for循環(huán)來遍歷它)。 - 當默認參數(shù)在不定長參數(shù)后時,若想更改默認參數(shù),需要注明dessert='銀耳羹',例如:
def menu(appetizer,course,*barbeque,dessert='綠豆沙'): print('一份開胃菜:' appetizer) print('一份主菜:' course) print('一份甜品:' dessert) for i in barbeque: print('一份烤串:' i) menu('話梅花生','牛肉拉面','烤雞翅','烤茄子','烤玉米',dessert='銀耳羹') #結(jié)果顯示為: #一分開胃菜:話梅花生 #一份主菜:牛肉拉面 #一份甜品:銀耳羹 #一份烤串:烤雞翅 #一份烤串:烤茄子 #一份烤串:烤玉米 - 當默認參數(shù)在不定長參數(shù)之前,則默認按順序傳遞參數(shù)(默認參數(shù)會改變),剩下的參數(shù)均傳遞給不定長參數(shù)。
def menu(appetizer,course,dessert='綠豆沙',*barbeque): print('一份開胃菜:' appetizer) print('一份主菜:' course) print('一份甜品:' dessert) for i in barbeque: print('一份烤串:' i) menu('話梅花生','牛肉拉面','銀耳羹','烤雞翅','烤茄子','烤玉米') #結(jié)果顯示為: #一分開胃菜:話梅花生 #一份主菜:牛肉拉面 #一份甜品:銀耳羹 #一份烤串:烤雞翅 #一份烤串:烤茄子 #一份烤串:烤玉米 - 定義函數(shù)
語法: def 函數(shù)名(參數(shù)1,參數(shù)2,...參數(shù)n): 函數(shù)體 return 語句 函數(shù)內(nèi)部一旦遇到return語句,就會停止執(zhí)行并返回結(jié)果。沒有return語句的函數(shù),Python也會在末尾隱性地加上return None,即返回None值(return None可以簡寫為return。) - 調(diào)用函數(shù)
1)語法:函數(shù)名(參數(shù)) 參數(shù)從0個到多個都可以實現(xiàn)。但當參數(shù)個數(shù)為0時,括號也不能省略。 2)math(10)的意思是將整數(shù)10賦值給參數(shù)x并運行該函數(shù)。函數(shù)執(zhí)行完畢后最終返回了y的值即110,然后將這個結(jié)果賦值給變量a,再用print()將變量a打印出來。 def math(x): y = x ** 2 x return y a = math(10) print(a) 3)也可以只用一行代碼print(math(10))來表示同樣的意思。 二、return語句 - return是返回值,當輸入?yún)?shù)給函數(shù),函數(shù)就會返回一個值,事實上每個函數(shù)都會有返回值。
- 如果不是立即要對函數(shù)返回值做操作,可以用return語句保留返回值。
需要多次調(diào)用函數(shù)時,可以定義一個主函數(shù)main(),調(diào)用非主函數(shù)的返回值。下面例子中的傳參:main()函數(shù)中的李若彤→dream_face(位置參數(shù))→face()函數(shù)的參數(shù)name,最終返回name '的臉蛋'即李若彤的臉蛋。 def face(name): return name '的臉蛋' def body(name): return name '的身材' def main(dream_face,dream_body): return '我的夢中情人:' face(dream_face) ' ' body(dream_body)
print(main('李若彤','林志玲')) - 若需要返回多個值,在return后用逗號隔開即可,此時返回的是一個元組。元組與列表其實都是數(shù)據(jù)的“序列”,元組取某個位置的值的操作,與列表是一模一樣的,即元組名[i]。
def lover(name1,name2): face = name1 '的臉蛋' body = name2 '的身材' return face,body a=lover('李若彤','林志玲') #此時return的值為元組 ('李若彤的臉蛋', '林志玲的身材'),并賦值給變量 a 。 print('我的夢中情人:' a[0] ' ' a[1]) - 沒有return語句的函數(shù)會默認返回None值。
- 一旦函數(shù)內(nèi)部遇到return語句,就會停止執(zhí)行并返回結(jié)果。
三、變量的作用域 - 局部變量
在函數(shù)內(nèi)定義的變量,僅能在函數(shù)內(nèi)部使用(局部作用域) - 全局變量
所有函數(shù)之外賦值的變量,可以在程序的任何位置使用(全局作用域) - 局部變量和全局變量不要取相同的名字,以免混淆。
- global語句:可以將局部變量轉(zhuǎn)換為全局變量,一般寫在函數(shù)體的第一行。
def egg(): global quantity #global語句將變量quantity聲明為全局變量 quantity = 108 egg() print(quantity) 四、函數(shù)的嵌套 sum = rent cost() 的結(jié)果就是sum = rent variable_cost(cost()函數(shù)的返回值)。最后調(diào)用函數(shù)時,也只需調(diào)用sum_cost()即可。 rent = 3000
def cost(): utilities = int(input('請輸入本月的水電費用')) food_cost = int(input('請輸入本月的食材費用')) variable_cost = utilities food_cost print('本月的變動成本是' str(variable_cost)) return variable_cost
def sum_cost(): sum = rent cost()#調(diào)用函數(shù) print('本月的總成本是' str(sum))
sum_cost() 五、其他 - list()函數(shù)
可以將數(shù)據(jù)轉(zhuǎn)換為列表。 - extend()函數(shù)
- append() ,方法用于在列表末尾添加新的對象,只能添加一個值(多個值作為一個整體也行)。
- extend() 函數(shù)用于在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)如果extend的是字符串,則字符串會被拆分成字符數(shù)組,如果extend的是字典,則字典的key會被加入到ist中。
list1=[1,2] list2=[2,4,5] list3=[] list2.append(list1) print(list2) #結(jié)果顯示為: #[2,4,5,[1,2]] list1的元素作為一個列表整體被加入list2 list3.extend(list1) print(list3) #結(jié)果顯示 #[1,2] list1的元素獨立加入list3中 - (拓展一下下,感興趣可以查一查哦~)*reversed()函數(shù)
reversed()函數(shù)可以將數(shù)據(jù)反轉(zhuǎn),從后往前迭代。 reversed()之后,第二次for循環(huán)、list()、tuple()以及join()得到的結(jié)果都為空,原因就是b不是反轉(zhuǎn)列表本身,而是一個列表反向迭代器,所以直接輸出函數(shù)返回值會是類似于亂碼,且reversed()之后,只在第一次遍歷時返回值。 #參數(shù)是列表1: a=[1,2,3,4,5] b=reversed(a) print(a) #結(jié)果顯示為: #[1, 2, 3, 4, 5] print(b) #結(jié)果顯示為: #<listreverseiterator object at 0x06A9E930> for i in b:#第一次遍歷 print(i) #結(jié)果顯示為: #5 4 3 2 1 for i in b:#第二次遍歷為空 print(i) #結(jié)果顯示為:啥也沒有 #參數(shù)是列表2: a=[1,2,3,4,5] b=reversed(a) print(list(b))#第一次轉(zhuǎn)換為列表 #結(jié)果顯示為: #[5,4,3,2,1] print(list(b))#第二次 #結(jié)果顯示為: #[] #參數(shù)是元組 t=(4,5,6) tt=reversed(t) print(t) #結(jié)果顯示為: #(4, 5, 6)
print(tt) #結(jié)果顯示為: #<reversed object at 0x06A07E50>
print(tuple(tt)) #第一次轉(zhuǎn)換為元組 #結(jié)果顯示為 #(6, 5, 4)
print(tuple(tt)) #第二次為空 #結(jié)果顯示為 #() #參數(shù)是字符串 s='cba' ss=reversed(s) print(s) #結(jié)果顯示為 #'cba' print(ss) #結(jié)果顯示為 #<reversed object at 0x06A07E70> print(list(ss))#第一次轉(zhuǎn)換為列表 #結(jié)果顯示為 #['a', 'b', 'c'] print(list(ss))#第二次為空 #結(jié)果顯示為 #[]
|