python画图零基础入门教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件...
前面的教程中,我們已經(jīng)可以讓小海龜繪制出各種圖形了。但是,所有繪圖的代碼都是預(yù)先編好的,程序一旦運(yùn)行起來,運(yùn)行結(jié)果(繪制的圖形)就是固定不變的。這一節(jié)中,咪博士將教大家如何讓海龜響應(yīng)用戶的輸入。
1 importturtle2
3
4 defmove():5 direction = turtle.textinput('Input direction', 'Go left or right?')6
7 if direction == 'left':8 turtle.left(60)9 turtle.forward(100)10
11 if direction == 'right':12 turtle.right(60)13 turtle.forward(100)14
15
16 move()17
18
19 turtle.exitonclick()
程序運(yùn)行起來之后,會(huì)先彈出一個(gè)輸入框,詢問你海龜?shù)倪\(yùn)動(dòng)方向。你可以輸入 left 或者 right。
當(dāng)你按下 ok 按鈕之后,海龜就會(huì)根據(jù)你的輸入(left 或 right),相應(yīng)地向左或向右運(yùn)動(dòng)。
這個(gè)例子中,程序的運(yùn)行結(jié)果不完全取決于事先編寫的代碼,它還和你的輸入有關(guān)。
第 5 行 direction=turtle.textinput('Input direction','Go left or right?') 彈出一個(gè)輸入框。輸入框(窗口)的標(biāo)題是 Input direction,輸入框的提示文字為 Go left or right?。
當(dāng)用戶完成輸入點(diǎn)擊 ok 按鈕時(shí),變量 direction 將獲得用戶輸入的值。
當(dāng)用戶點(diǎn)擊 cancel 按鈕時(shí),變量 direction 的值為 None (None 為Python 中的關(guān)鍵字,表示什么也沒有的意思)。
第 7, 8, 9 行稱為條件語(yǔ)句。每個(gè) if 語(yǔ)句(第 7 行)表示一個(gè)條件,它只有 2 種情況:要么成立(為真,值為 True),要么不成立(為假,值為 False)。
第 7 行 ifdirection=='left': 對(duì)應(yīng)的條件是判斷變量 direction 與字符串 ‘left’ 是否相等。如果相等則執(zhí)行第 8, 9 行的代碼,否則就不執(zhí)行第 8, 9 行的代碼。
翻譯成大白話就像下面這樣
1 如果變量 direction 等于 left,則執(zhí)行下面的語(yǔ)句2 turtle.left(60)3 turtle.forward(100)
所以,當(dāng)用戶輸入 left,并點(diǎn)擊 ok 按鈕時(shí),direction 接收到用戶的輸入 left,它的值等于 left,海龜就先向左轉(zhuǎn) 60 度(執(zhí)行第 8 行代碼),再前進(jìn) 100 個(gè)單位(執(zhí)行第 9 行代碼)。
要注意的是 Python 中比較 2 個(gè)東西是否相等,要用 == (即 2 個(gè)連續(xù)的等號(hào)),因?yàn)閱为?dú)的 = (等號(hào))在 Python 中表達(dá)的是將某個(gè)值賦值給某個(gè)變量的意思,因此,比較是否相等就得用另外的符號(hào)(即 ==)了。
另外,還要注意縮進(jìn),第 8, 9 行的代碼要比 if 語(yǔ)句所在的行(第 7 行),向右縮進(jìn)一些。這樣 Python 才知道,當(dāng) if 語(yǔ)句為真時(shí)(即條件成立時(shí)),需要執(zhí)行哪些代碼。和咪博士在前面的教程中談到的一樣,我們一般用連續(xù)的 4 個(gè)空格符號(hào)來表示一級(jí)的縮進(jìn)。
第 11, 12, 13 行也是條件語(yǔ)句,它們和第 7, 8, 9 行代碼類似,只不過條件成立的條件改成了變量 direction 的值等于 right。
if 語(yǔ)句還有其他一些語(yǔ)法。下面,咪博士給大家展示的是 if … else 的語(yǔ)法。
1 importturtle2
3
4 defmove():5 direction = turtle.textinput('Input direction', 'Go left or right?')6
7 if direction == 'left':8 turtle.left(60)9 turtle.forward(100)10 else:11 turtle.right(60)12 turtle.forward(100)13
14
15 move()16
17
18 turtle.exitonclick()
將 7-12 行的代碼翻譯成大白話就像下面這樣,
1 如果變量 direction 等于 left,則執(zhí)行下面的語(yǔ)句2 turtle.left(60)3 turtle.forward(100)4 否則,執(zhí)行下面的語(yǔ)句5 turtle.right(60)6 turtle.forward(100)
注意體會(huì)前后 2 個(gè)版本細(xì)微的差別。考慮用戶輸入一個(gè)既不是 left 也不是 right 的字符串(或者直接點(diǎn)擊 cancel 按鈕)。
前一個(gè)版本中,海龜不會(huì)發(fā)生運(yùn)動(dòng)。因?yàn)榇藭r(shí), ifdirection=='left': 不成立, ifdirection=='right': 也不成立,所有的繪圖代碼都沒有機(jī)會(huì)執(zhí)行。
后一個(gè)版本中,海龜會(huì)往右下方向運(yùn)動(dòng)。因?yàn)?#xff0c;后一個(gè)版本只檢查 ifdirection=='left': 是否成立。當(dāng)該條件不成立時(shí),不論變量 direction 的值是多少,它都會(huì)執(zhí)行 else 對(duì)應(yīng)的語(yǔ)句。
要實(shí)現(xiàn)和第 1? 個(gè)版本一樣的效果,我們可以用 if … elif 這樣的語(yǔ)法。
1 importturtle2
3
4 defmove():5 direction = turtle.textinput('Input direction', 'Go left or right?')6
7 if direction == 'left':8 turtle.left(60)9 turtle.forward(100)10 elif direction == 'right':11 turtle.right(60)12 turtle.forward(100)13
14
15 move()16
17
18 turtle.exitonclick()
這個(gè)版本中,程序會(huì)依次,
先檢查 ifdirection=='left': (第 7 行)的條件,如果成立則執(zhí)行相應(yīng)的代碼(第 8, 9 行),并忽略剩余的其他條件。如果不成立,則順次檢查下一個(gè)條件? ifdirection=='right': (第 10 行)。
類似地,如果該條件成立,則執(zhí)行相應(yīng)的代碼(第 11, 12 行),并忽略剩余的其他條件,否則再順次檢查下一個(gè)條件。
這樣一直重復(fù)下去,直至沒有可檢查的條件為止。
雖然,第 3 個(gè)版本和第 1 個(gè)版本,最終呈現(xiàn)的效果是一模一樣的,但它們的內(nèi)部的執(zhí)行過程,仍然有細(xì)微的差別。
第 1 個(gè)版本中,程序一定會(huì)檢查條件 ifdirection=='right': 是否成立,無論前一個(gè)條件? ifdirection=='left': 是否成立。
最后一個(gè)版本中,程序只有在前一個(gè)條件 ifdirection=='left': 不成立的時(shí)候,才會(huì)檢查條件? ifdirection=='right': 是否成立。
因此,雖然最終的效果是一樣的,但從執(zhí)行效率上來看,最后一個(gè)版本要略微高效一些。
總結(jié)
以上是生活随笔為你收集整理的python画图零基础入门教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python通讯录管理程序的用户可行性_
- 下一篇: 中国第一枚邮票是什么票