還記不記得我們在第一章開始就寫好的一個“小游戲”,我們把它再列出來看看。
# ----猜數字游戲---- num = input("猜猜我心里想的是哪個數字?") guess = int(num)if guess == 6: print("恭喜你猜對了,真厲害") else: print("猜錯了,真low")---------------------
讓我們仔細的講一下if這個語句的用法,“if”眾所周知,在英語里是如果的意思,“如果”你有一個蘋果,那請給我。。。對吧,這里如果之后的語句就是一個起判斷作用的句子,也是后面的話執(zhí)行的一個條件,這里其實也體現(xiàn)出了python的靈魂—縮進,在python中,不需要像其他語言一樣,需要用花括號來體現(xiàn)一個條件的作用范圍,在這里,一個縮進就足夠了。
那么我們是不是可以做以下改進,讓它更人性化一些呢?
# ----猜數字游戲-第一次修改---- num = input("猜猜我心里想的是哪個數字?") guess = int(num)if guess == 6: print("恭喜你猜對了,真厲害") if guess > 6: print("錯了,錯了,猜大了")if guess < 6: print("錯了,錯了,猜小了")---------------------------
這樣是不是就會把你猜的結果和答案對比,并輸出你錯誤的原因呢,但這里使用了三個if判斷語句,也就是說,程序在運行的時候會依次遍歷這三個if,及時第一個if符合判斷,程序還是會遍歷下面的if,這可是給系統(tǒng)帶來了一定的壓力,所以呢,做以下改進。
# ----猜數字游戲-第一次修改---- num = input("猜猜我心里想的是哪個數字?") guess = int(num)if guess == 6: print("恭喜你猜對了,真厲害") elif guess > 6: print("錯了,錯了,猜大了")else guess < 6: print("錯了,錯了,猜小了")---------------------------
我們把第二個if改成了“elif”,其實就是“else if”的縮寫,這樣的話如果判斷滿足第一個if條件,就不會再向下執(zhí)行了,所以建議大家使用這種形式。
while是什么,字面意思是“當什么什么的時候”,感覺好像也是一個判斷語句,但實際上它if判斷語句要高級一些,因為如果條件滿足它會一直的執(zhí)行然后再判斷再執(zhí)行,while是個“無底洞”,如果代碼出現(xiàn)失誤,它會使程序無限的循環(huán),進而進入“死循環(huán)”。下面看一個例子,但不要嘗試運行。
# 布爾類型True,代表條件為真。while True: print("進入死循環(huán)啦")
那我們是否可以改進我們之前的數字游戲呢,很簡單:
# ----猜數字游戲-第二次修改---- while True: num = input("猜猜我心里想的是哪個數字?") guess = int(num) if guess == 6: print("恭喜你猜對了,真厲害") elif guess > 6: print("錯了,錯了,猜大了") else guess < 6: print("錯了,錯了,猜小了")---------------------------
只需要在整個程序前加一個while True死循環(huán)就可以一次一次又一次的執(zhí)行這個程序了,只要你不強制結束,他就永存不朽,所以while循環(huán)的常見格式就是:
while 條件: 循環(huán)體
我們已經有了while循環(huán),但畢竟while并不是萬能的,有一些情況下while處理不了的循環(huán),用了for你會感覺,嗯~真方便,比如我們創(chuàng)建一個字符串,然后用for循環(huán)將每個字符一個一個的輸出:
string = "I Love Python!"for each in string: print(each)
運行一下結果,是不是已經成功的將每個字符輸出了呢。
然后我們結合range來講一下這兩個小伙伴是怎么搭配使用的?range是范圍的意思,一般的用法格式為:
range(start, stop, step)# start是這個范圍的開始,stop是這個范圍的結束,step代表步數。#范圍包括start但不包括stop
所以有了range這個小伙伴,for才可以用的如魚得水,來看下面的例子吧。
for each in range(1,10,2): print(each)
打印結果是不是這樣:
13579
首先要知道在range(1,10)里面是包括1但不包括10的,同時step代表的步數也一清二楚了吧,代表跳幾步然后輸出,感受一下這個循環(huán)吧,是不是這樣就可以改進我們的數字游戲,讓它隨我們的意愿執(zhí)行多少次呢?錄入下面的代碼看一下吧。
# --------猜數字游戲-第三次修改--------n = int(input("請輸入要猜的次數:"))for i in range(n): num = input("猜猜我心里想的是哪個數字?") guess = int(num) if guess == 6: print("恭喜你猜對了,真厲害") elif guess > 6: print("錯了,錯了,猜大了") else guess < 6: print("錯了,錯了,猜小了")---------------------------
運行一下,是不是可以隨心所欲的來修改猜數字的次數了呢。
我們知道既然有了循環(huán)語句,那么程序就可以一直不斷的循環(huán)運行,那么我們如果要打斷它,除了給它加一個循環(huán)條件之外,還有沒有其他的方法,畢竟跳出循環(huán)的應用場景有很多,如果根據需求想在循環(huán)體內部跳出呢?
這里我們就要介紹一個同樣經常用到的break語句,用來從循環(huán)體內部跳出循環(huán),也就是說,如果在循環(huán)體內部,如果你想當滿足一個條件時,跳出循環(huán),直接寫一個break就夠了,我們對猜數字游戲再進行一次修改:
# --------猜數字游戲-第四次修改--------n = int(input("請輸入要猜的次數:"))for i in range(n): num = input("猜猜我心里想的是哪個數字?") guess = int(num) if guess == 6: print("恭喜你猜對了,真厲害") break elif guess > 6: print("錯了,錯了,猜大了") else guess < 6: print("錯了,錯了,猜小了")---------------------------
看到差別了嗎,一個簡單的break語句,當年猜對了之后不會讓你繼續(xù)猜(猜對了,還要猜,這邏輯不對吧),而是輸出“恭喜你猜對了,真厲害”之后跳出循環(huán),好啦,這個猜數字游戲基本已經完善了,快讓它運行起來吧。
我們再來補充一個continue語句,雖然不常用,但畢竟有些情況下必須要用,continue是繼續(xù)的意思,一般也是運用在循環(huán)語句呢,跟break正是一對相反的老冤家。這個語句的作用是,終止本次循環(huán),并開始下一輪循環(huán),是不是有點懵,先看一下下面的例子吧
for i in range(10): if i % 2 == 0: print(i) continue i += 2 print(i)
會輸出怎樣的結果?錄入下來然后自己努力去理解一下吧。