截止日期:
要求:
- 下周實驗課前上交,做好后在實驗課上檢查可獲取平時分。
- 做出進階或選做的的請用清晰的標致標識出來,方便老師批改
- 本次作業:可提交也可不提交。作業算平時成績。
- 本次作業內容量較大,請組隊合作完成(每個隊2-3人)
實驗目標
- 函數的定義與使用
- 循環,for, range
- 結合使用函數、循環與turtle繪制圖形
實驗內容
任務1.IPO及函數
TempStr = input("請輸入帶有符號的溫度值: ")
if TempStr[-1] in ['F','f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("轉換后的溫度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("轉換后的溫度是{:.2f}F".format(F))
else:
print("輸入格式錯誤")
上面程序中,if..elif..else
程序塊負責處理傳入的帶溫度標志的字符串並打印相應的提示信息,嘗試定義一個函數TempConvert(ValueStr)
取代上面的if..elif..else
程序塊。以后只需要調用TempConvert(ValueStr)函數,就可執行這段處理代碼:
def TempConvert(valueStr):
#下面放置你的代碼
if 輸入的的溫度是華氏:
#轉換代碼
return "轉換后的溫度是{:.2f}C".format(C)
#elif 輸入的溫度是攝氏度:
#轉換代碼
return "轉換后的溫度是{:.2f}F".format(F)
else:
return "輸入格式錯誤"
#調用剛才定義的函數#調用剛才定義的函數
x = input("請輸入帶有符號的溫度值: ")
TempConvert(x) #並沒有輸出,為什么?
任務2.range的使用
range代表范圍,可以產生一系列的整數。請看如下參考代碼:
for i in range(10):
print(i) #從幾開始輸出到幾?
for i in range(1,10):
print(i) #從幾開始輸出到幾?
for i in range(1,10,2):
print(i) #從幾開始輸出到幾?2是什么意思
for i in range(10,1, -1):
print(i) #從幾開始輸出到幾?-1是什么意思
嘗試完成如下題目:使用for e in range
循環求得1到n之間所有奇數的和?
提示:加入變量temp暫存運行結果。
怎樣求得從1開始到n之間所有偶數的和?
作業1:
1.1 手寫或打印代碼,然后為每行加注釋。
1.2 嘗試使用for e in range循環,輸入n個人的成績,最后輸出n個人成績的平均值。
3.繪制等邊三角形。可指定參數(海龜初始角度、邊長、畫筆顏色),並用IPO分析該函數。
turtle可以用來繪圖,常見的turtle用法如下:
import turtle #導入turtle,僅需導入1次
turtle.pensize(5)
turtle.fd(40) #前進40
turtle.left(120) #轉向120度
turtle.fd(40)
turtle.penup() #筆抬起
turtle.fd(100)
turtle.pendown() #筆放下
turtle.fd(20)
3.1 繪制一個等邊三角形。注意:不要在循環里import turtle
。
3.2 定義一個繪制等邊三角形的函數。輸入參數:邊長。
3.3 改造2的函數。輸入參數:邊長、海龜初始方向、畫筆顏色。
3.4 從控制台動態輸入三角形的邊長進行繪制。注意:可使用eval()或float()函數。
4.繪制圓形
4.1 繪制一個圓。
4.2 定義函數繪制一個圓。輸入參數:半徑,海龜初始方向
4.3 使用循環調用上面2定義的函數繪制9個圓,會碰到什么問題?如何在此基礎上進行修改。實現本題要求。
作業2. 閱讀代碼
打印或手寫改題代碼,並總結自己是如何實現繪制同心圓?碰到什么問題?怎么解決?
5.特別考核:改造上次實驗的圓形生成器程序。可以根據自由輸入的n個r值,繪制n個圓。
6. 繪制出該六角形。
特別考核:使用畫兩個三角形的方式(調用前面的繪制三角形的函數),繪制出該六角形。
7. 繪制如下圖所示的正方形螺旋線
7.1 不用循環進行繪制。
7.2 考核:使用循環進行繪制。