日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数

發布時間:2024/10/12 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么樣的程序員才是優秀的程序員?咪博士認為“慵懶”的程序員才是真正優秀的程序員。聽起來不合邏輯?真正優秀的程序員知道如何高效地工作,而不是用不止境的加班來完成工作任務。函數便是程序員高效工作的利器之一。

事實上,在前面的教程中,我們已經在使用函數了。例如,我們在每段代碼的最后,都會調用 turtle.exitonclick() 函數。exitonclick 函數的作用就是讓海龜畫完圖像之后保持住,不要退出,直到我們點擊窗口的時候 (onclick),才退出 (exit)。我們不需要知道函數 exitonclick 具體是怎樣實現的,我們只需要在合適的地方調用它,使用它提供的功能就可以了。使用函數便是程序員高效工作的秘密(之一)。

那么,我們要如何定義自己的函數呢?

Python 中,我們使用 def 關鍵字來定義函數。請看下面這個例子:

1 def line_without_moving(): 2 turtle.forward(100) 3 turtle.backward(100)

跟在關鍵字 def 之后的是函數名 line_without_moving。后面,我們就可以用 line_without_moving 這個函數名來調用它了。函數名之后,需要有一個冒號,告訴 python 接下來就是函數的具體內容(稱為函數體)。

函數的功能就是通過函數體中的語句來實現的。注意到,函數體中的語句 (第2, 3 行) 和 def 所在的行 (第 1 行) 相比,要往右縮進了一些。Python 正是通過縮進來判斷哪些語句是屬于函數體中的語句(類似前面教程中談到的,Python 用縮進來判斷哪些語句屬于循環體)。通常,我們用 4 個空格符來表示一級的縮進。

好了,讓我們仔細看看 line_without_moving 的函數體(第 2, 3 行),看看這個函數實現的是什么功能? turtle.forward(100) 前進 100 個單位距離, turtle.backward(100) 后退 100 個單位的距離,這一進一退,小海龜又回到了原來的位置,這不等于啥也沒干嗎?No No No!海龜雖然又回到的原來的位置,但它在爬行過程中,會在屏幕上留下痕跡,即畫出線條。因此,line_without_moving 這個函數的作用就是讓海龜沿著當前方向繪制一條長度為 100 個單位的線條,然后還要回到起始的位置,同時保持龜頭的方向不變。

上面的代碼,僅僅是定義了函數 line_without_moving。光定義函數是看不到直接的效果的,函數需要被使用(即被調用),函數體中的代碼才能被執行,我們才能看到效果。例如,下面的代碼,我們在 line_without_moving 函數定義之后,調用了它(第 7, 9, 11, 13 行)。調用方式為函數名之后,跟一個小括號。這樣,我們就能看到函數調用之后的效果了。

1 import turtle 2 3 def line_without_moving(): 4 turtle.forward(100) 5 turtle.backward(100) 6 7 line_without_moving() 8 turtle.right(90) 9 line_without_moving() 10 turtle.right(90) 11 line_without_moving() 12 turtle.right(90) 13 line_without_moving() 14 15 turtle.exitonclick()

運行上面的代碼,我們可以看到一個十字型的圖案。

類似循環可以嵌套一樣,函數也可以嵌套。上面畫十字型的代碼,還可以改寫成下面的形式。

1 import turtle 2 3 def line_without_moving(): 4 turtle.forward(100) 5 turtle.backward(100) 6 7 def draw_cross(): 8 line_without_moving() 9 turtle.right(90) 10 line_without_moving() 11 turtle.right(90) 12 line_without_moving() 13 turtle.right(90) 14 line_without_moving() 15 16 draw_cross() 17 18 turtle.exitonclick()

第 7-14 行,定義了一個新的函數 draw_cross。第 16 行,調用 draw_cross 函數畫十字,而 draw_cross 函數內部又調用了 line_without_moving 函數(第? 8, 10, 12, 14 行),即函數嵌套函數。

進一步觀察,我們發現 8-14 行的代碼有許多是重復的。第 8, 9 行的代碼,重復了 4 次。結合前面咪博士講的循環,聰明的你是不是已經想到了如何進一步簡化代碼了呢?下面是咪博士給出的參考代碼,是不是和你想的一樣呢?

1 import turtle 2 3 def line_without_moving(): 4 turtle.forward(100) 5 turtle.backward(100) 6 7 def draw_cross(): 8 for i in range(4): 9 line_without_moving() 10 turtle.right(90) 11 12 draw_cross() 13 14 turtle.exitonclick()

【練習】

嘗試編寫函數繪制出蜂窩的圖案

【提示】

  • 蜂窩是由一系列的正六邊形構成的,先編寫一個繪制正六邊的函數,再通過多次函數調用的方式繪制出多個正六邊形
  • 設計正六邊形函數的時候,要讓海龜在畫完正六邊形之后,再次回到起始的位置,并保持龜頭方向不變,這樣方便我們拼接多個正六邊形構成蜂窩的圖案
  • 在考慮如何用多個正六邊形構成蜂窩時,請忽略繪制正六邊形的細節(請忘記龜頭轉了幾度,海龜前進了多少距離等細節 ),只需要知道海龜在繪制單個正六邊形時的旋轉方向(順時針還是逆時針),并且海龜在繪制正六邊形之后,會回到起始的位置,并保持龜頭方向不變
  • 在函數調用時忽略函數內部的細節,這事實上就是一種抽象的思維,函數不僅是程序員“偷懶”的工具,更是程序員通過抽象思維,實現復雜邏輯的利器

原文鏈接:http://www.ipaomi.com/2017/11/20/python-零基礎-快速入門-趣味教程-咪博士-海龜繪圖-turtle-4-函/

轉載于:https://www.cnblogs.com/ipaomi/p/7878087.html

總結

以上是生活随笔為你收集整理的Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。