初入
代碼1(繪制同心圓):
import turtle
turtle.pensize(2)
turtle.circle(10)
turtle.circle(40)
turtle.circle(50)
turtle.circle(60)
turtle.circle(80)
turtle.circle(100)
方法2
import turtle
turtle.showturtle()
for i in range(1,5):
turtle.penup()
turtle.goto(-150,-20*i)
turtle.pendown()
turtle.circle(20*i)
for i in range(1,5):
turtle.penup()
turtle.goto(100,-20*i)
turtle.pendown()
turtle.circle(40*i)
turtle.hideturtle()
turtle.done()
運(yùn)行效果:
代碼2(繪制五角星):
from turtle import *
color('red','green')
begin_fill()
for i in range (5):
fd(200)
rt(144)
end_fill()
done()
運(yùn)行效果:
代碼3(華氏度和攝氏度的轉(zhuǎn)換)
TempStr = input('請(qǐng)輸入帶有符號(hào)字符的溫度值:')
if TempStr[-1] in ['f','F']:
C =(eval(TempStr[0:-1]) - 32)/1.8
print('轉(zhuǎn)換后的溫度是{:.2f}C'.format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8 * eval(TempStr[0:-1]) + 32
print('轉(zhuǎn)換后的溫度是{:.2f}F'.format(F))
else:
print('輸入格式錯(cuò)誤')
運(yùn)行效果:
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入帶有符號(hào)字符的溫度值:82F
轉(zhuǎn)換后的溫度是27.78C
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入帶有符號(hào)字符的溫度值:82C
轉(zhuǎn)換后的溫度是179.60F
eval: 評(píng)估函數(shù) (去掉參數(shù)最外側(cè)的引號(hào)鸭叙,并執(zhí)行余下語句的函數(shù),我的理解是把字符串轉(zhuǎn)掉并且可以自行計(jì)算)
代碼任務(wù):
獲得用戶輸入的一個(gè)整數(shù)耀态,參考該整數(shù)值难裆,打印輸出"Hello World"脆荷,要求:
如果輸入值是0哮洽,直接輸出"Hello World"
如果輸入值大于0闽瓢,以兩個(gè)字符一行方式輸出"Hello World"(空格也是字符)
如果輸入值小于0义钉,以垂直方式輸出"Hello World"
代碼:
x = int(input(''))
if x ==0:
print('Hello World')
elif x > 0:
print('He\nll\no \nWo\nrl\nd')
else:
for x in "Hello World": #可以采用for循環(huán)遍歷每一個(gè)字符達(dá)到垂直的效果
print(x)
效果展示:
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入一個(gè)值:5
He
ll
o
Wo
rl
d
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入一個(gè)值:0
Hello World
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入一個(gè)值:-2
H
e
l
l
o
W
o
r
l
d
>>>
代碼任務(wù)
獲得用戶輸入的一個(gè)字符串鄙麦,格式如下:
M OP N
其中盯荤,M和N是任何數(shù)字馋吗,OP代表一種操作,表示為如下四種:+, -, *, /(加減乘除)
根據(jù)OP秋秤,輸出M OP N的運(yùn)算結(jié)果宏粤,統(tǒng)一保存小數(shù)點(diǎn)后2位。
注意:M和OP灼卢、OP和N之間可以存在多個(gè)空格绍哎,不考慮輸入錯(cuò)誤情況。
代碼(思路方法1):
n=input('請(qǐng)輸入計(jì)算表達(dá)式子:')
print("{:.2f}".format(eval(n)))
運(yùn)行效果:
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入計(jì)算表達(dá)式子:5+2
7.00
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入計(jì)算表達(dá)式子:5/2
2.50
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入計(jì)算表達(dá)式子:6+7/8*3-4
4.62
>>>
代碼(思路方法2)
while (True):
n=input('請(qǐng)輸入數(shù)學(xué)表達(dá)式子:')
if not n:
break
print(round(eval(n),2))
print('不好意思鞋真,程序暫時(shí)不能理解')
運(yùn)行效果:
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
請(qǐng)輸入數(shù)學(xué)表達(dá)式子:5+10
15
請(qǐng)輸入數(shù)學(xué)表達(dá)式子:100/55-54*1.666
-88.15
請(qǐng)輸入數(shù)學(xué)表達(dá)式子:
代碼(思路3)
x=input('請(qǐng)輸入一個(gè)度數(shù) ')
if x[-1] in ['f','F']:
C=(eval(x[0:-1]) - 32 ) / 1.8
print(round(C,2),'C')
elif x[-1] in ['c','C']:
F = eval(x[0:-1]) * 1.8 + 32
print(round(F,2),'F')
n = input('請(qǐng)輸入')
if n[-1] in ['p','P']:
C=(eval(n[0:-1])-32)/18
print('C{:.2f}'.format(C))
代碼任務(wù):
獲得用戶輸入的一個(gè)正整數(shù)輸入崇堰,輸出該數(shù)字對(duì)應(yīng)的中文字符表示。
0到9對(duì)應(yīng)的中文字符分別是:零一二三四五六七八九
代碼:
template = "零一二三四五六七八九"
s = input()
for c in s: #遍歷每一個(gè)s輸入的數(shù)字
print(template[eval(c)], end="") #索引
#print()中增加end=""參數(shù)表示輸出后不增加換行涩咖,多個(gè)print()可以連續(xù)輸出海诲。
代碼任務(wù):
人民幣和美元是世界上通用的兩種貨幣之一,寫一個(gè)程序進(jìn)行貨幣間幣值轉(zhuǎn)換檩互,其中:
人民幣和美元間匯率固定為:1美元 = 6.78人民幣特幔。
程序可以接受人民幣或美元輸入,轉(zhuǎn)換為美元或人民幣輸出盾似。人民幣采用RMB表示敬辣,美元USD表示,符號(hào)和數(shù)值之間沒有空格零院。
注意:
(1) 這是一個(gè)OJ題目溉跃,獲得輸入請(qǐng)使用input() ;
(2) 不提示輸出格式錯(cuò)誤告抄,結(jié)果小數(shù)點(diǎn)后保留兩位撰茎。
CurStr = input()
if CurStr[:3] == "RMB": #選到第三位
print("USD{:.2f}".format(eval(CurStr[3:])/6.78))
elif CurStr[:3] in ['USD']:
print("RMB{:.2f}".format(eval(CurStr[3:])*6.78)) #從第三位開始
'''這個(gè)代碼是實(shí)例1的一個(gè)擴(kuò)展,注意以下3點(diǎn):
(1) eval()函數(shù)將字符串轉(zhuǎn)換成數(shù)字打洼,不能省略龄糊;
(2) == 表示 "等于"逆粹,in 表示成員包含,對(duì)于這個(gè)題目炫惩,由于只允許輸入采用全大寫方式僻弹,兩種方法均可;
(3) :.2f輸出小數(shù)點(diǎn)后兩位他嚷。
'''
示例1:RMB123
示例2:USD20
輸出
示例1:USD18.14
示例2:RMB135.60
繪制蟒蛇
代碼:
import turtle 引入海龜庫
turtle.setup(650,350,200,200) 設(shè)置窗體大小
turtle.penup() 抬起畫筆飛行
turtle.fd(-250) 海龜?shù)雇诵羞M(jìn)(由于海龜飛起蹋绽,所以沒有痕跡)
turtle.pendown() 將海龜落下
以上的代碼讓海龜離開默認(rèn)的中心的去到左側(cè)的某個(gè)位置
從這里開始對(duì)海龜做準(zhǔn)備工作,對(duì)海龜樣式/尺寸進(jìn)行設(shè)置
turtle.pensize(25) 調(diào)整腰圍筋蓖,畫筆的寬度
turtle.pencolor('purple') 改顏色
turtle.seth(-40) 調(diào)準(zhǔn)絕對(duì)方向卸耘,準(zhǔn)備啟動(dòng)繪制
4次循環(huán)繪制蟒蛇的4個(gè)身體部分
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
繪制蟒蛇脖子部分
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180) 回頭
turtle.fd(40*2/3) 行進(jìn)
turtle.done() 程序不會(huì)退出,要手動(dòng)關(guān)閉窗體粘咖,
如果想自動(dòng)關(guān)閉窗體蚣抗,去掉這行代碼就行
效果:
turtle 庫基本介紹:
turtle(海龜)庫是turtle繪圖體系的Python實(shí)現(xiàn),是一種繪圖方式瓮下,是Python語言的標(biāo)準(zhǔn)庫之一翰铡,是入門級(jí)的圖形繪制函數(shù)庫。
相應(yīng)的函數(shù):
turtle.goto(x,y) 指定坐標(biāo):讓海龜去哪個(gè)地方震缭。
實(shí)例代碼:
import turtle
turtle.goto(100,100) #記住開始海龜中心點(diǎn)是默認(rèn)在(0,0),從中心點(diǎn)開始畫
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0) #回到中心點(diǎn)
圖析:
控制海龜?shù)暮瘮?shù):
turtle.bk( 單位:像素 ) 表示沿著海龜?shù)姆捶较蜻\(yùn)行拣宰。
turtle.fd( 像素 ) 表示沿著海龜?shù)恼胺竭\(yùn)行。
turtle.circle( ) 表示以海龜?shù)漠?dāng)前位置烦感,左側(cè)的某一個(gè)點(diǎn)為圓心巡社,進(jìn)行曲線運(yùn)行。
turtle.seth(45) #45°轉(zhuǎn)彎
turtle.seth(-135) #朝向反向的135°轉(zhuǎn)彎
實(shí)例:(繪制Z型曲線)
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
效果:小結(jié):
練習(xí)
1.繪制正方形
import turtle
turtle.pensize(10)
turtle.color("pink")
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
方法2:
import turtle as t
t.pensize(2)
for i in range(4):
t.fd(150) 連續(xù)左轉(zhuǎn)4次晌该,距離150PX
t.left(90)
效果:2.繪制六邊形
import turtle
turtle.pensize(5)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
方法2
import turtle
for i in range(1,7):
turtle.pensize(5)
turtle.fd(100)
turtle.right(60)
效果
3.八邊形
import turtle
for i in range(1,9):
turtle.pensize(5)
turtle.fd(100)
turtle.right(45) 一圈360/8條邊
4.八角星繪制
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(150)
t.left(135) 參數(shù)135剛好為八角
計(jì)算循環(huán)和角度的乘積,應(yīng)該為360的整數(shù)倍绿渣。
5.五角星
import turtle
for i in range(5):
turtle.pensize(5)
turtle.fd(100)
turtle.right(145)
5.繪制一個(gè)疊邊形朝群,其中,疊邊形內(nèi)角為100度
import turtle as t
t.pensize(2)
for i in range(9):
t.fd(150)
t.left(80) #720/9
一共9條邊中符,共2圈姜胖,每次左轉(zhuǎn)角度為80度(720/9)。
7.風(fēng)車
import turtle as t
t.pensize(2)
for i in range(4):
t.seth(90*i)
t.fd(150)
t.right(90)
t.circle(-150, 45)
t.goto(0,0)
turtle 程序語法元素分析
庫引用
例如:
import turtle import <庫名>
turtle.fd(45) <庫名> . <函數(shù)名> (函數(shù)參數(shù))
畫筆控制函數(shù)
運(yùn)動(dòng)控制函數(shù)
走直線fd,走曲線circle
方向控制函數(shù)
課外拓展:
繪制奧林匹克的五環(huán)標(biāo)志
import turtle
colors=('blue','black','red','yellow','green')
xs=(-110,0,110,-55,55)
ys=(-25,-25,-25,-75,-75)
radius=45
for i in range(len(colors)):
turtle.color(colors[i])
turtle.penup()
turtle.goto(xs[i],ys[i])
turtle.pendown()
turtle.circle(radius)
turtle.hideturtle()
turtle.done()
繪制填充圖形
#繪制填充圖形
#思考:除了下面的逐個(gè)畫的方式,還有別的更有效的方式編寫代碼嗎凄诞?
#比如:循環(huán)圆雁?后面將學(xué)到的函數(shù)?
#如果使用循環(huán)帆谍,那么如何設(shè)計(jì)循環(huán)伪朽?
import turtle
#這里是畫填充三角形
turtle.penup()
turtle.goto(-200,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('red')
turtle.circle(40,steps=3)
turtle.end_fill()
#這里是畫填充正角形
turtle.penup()
turtle.goto(-100,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('blue')
turtle.circle(40,steps=4)
turtle.end_fill()
#這里是畫填充五邊形
turtle.penup()
turtle.goto(0,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('green')
turtle.circle(40,steps=5)
turtle.end_fill()
#這里是畫填充六邊形
turtle.penup()
turtle.goto(100,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('purple')
turtle.circle(40,steps=6)
turtle.end_fill()
#這里是畫填充圓形
turtle.penup()
turtle.goto(200,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('black')
turtle.circle(40)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
繪制乘法表
import turtle
turtle.showturtle()
for i in range(1,10,1): #控制行
for j in range(1, i+1, 1): #控制列
#打印i*j的乘積信息,后面跟個(gè)Tab鍵控制對(duì)齊
print(i,'*',j,'=',i*j,'\t',end='')
s=str(i)+'*'+str(j)+'='+str(i*j)
turtle.penup()
turtle.goto(-300+j*40,200+i*(-20)) #整張乘法表的左上角起點(diǎn)位置是(-300,200)
turtle.pendown()
turtle.write(s)
print() #每行末尾的換行,turtle就不需要換行了
#畫完乘法表隱藏小烏龜
turtle.hideturtle()
turtle.done()
方法2
import turtle
turtle.showturtle()
for i in range(1,10,1): #控制行
for j in range(1, i+1, 1): #控制列
#打印i*j的乘積信息汛蝙,后面跟個(gè)Tab鍵控制對(duì)齊
#print(i,'*',j,'=',i*j,'\t',end='')
s=str(i)+'*'+str(j)+'='+str(i*j)
turtle.penup()
turtle.goto(-300+j*40,200+i*(-20)) #整張乘法表的左上角起點(diǎn)位置是(-300,200)
turtle.pendown()
turtle.write(s)
#print() #每行末尾的換行,turtle就不需要換行了
#畫完乘法表隱藏小烏龜
turtle.hideturtle()
turtle.done()
繪制愛心
import turtle
from turtle import *
def curvemove():
for i in range(200):
right(1)
forward(1)
color('red','pink')
begin_fill()
left(140)
forward(111.65)
curvemove()
left(120)
curvemove()
forward(111.65)
end_fill()
done()
繪制sin 函數(shù)
#打印sin函數(shù)
import turtle,math
turtle.showturtle()
#以下是寫出坐標(biāo)O
turtle.penup()
turtle.goto(20,-30)
turtle.pendown()
turtle.write('O')
#以下是畫出x軸
turtle.penup()
turtle.goto(-300,0)
turtle.pendown()
turtle.goto(300,0)
turtle.goto(290,10)
turtle.goto(300,0)
turtle.goto(290,-10)
turtle.penup()
turtle.goto(300,-20)
turtle.write('x')
#以下是畫出y軸
turtle.penup()
turtle.goto(0,-300)
turtle.pendown()
turtle.goto(0,300)
turtle.goto(10,290)
turtle.goto(0,300)
turtle.goto(-10,290)
turtle.penup()
turtle.goto(20,300)
turtle.write('y')
#以下是畫出sin函數(shù)的曲線
turtle.color('blue')
turtle.pensize(3)
turtle.penup()
turtle.goto(-175,50*math.sin((-175/100)*2*math.pi))
turtle.pendown()
for x in range(-175,176):
turtle.goto(x,50*math.sin((x/100)*2*math.pi))
turtle.hideturtle()
turtle.done()
方法2
#打印sin函數(shù)
import turtle,math
#隱藏小烏龜
turtle.hideturtle()
#以下是寫出坐標(biāo)O
turtle.penup()
turtle.goto(20,-30)
turtle.pendown()
turtle.write('O')
#以下是畫出x軸
turtle.penup()
turtle.goto(-300,0)
turtle.pendown()
turtle.goto(300,0)
turtle.goto(290,10)
turtle.goto(300,0)
turtle.goto(290,-10)
turtle.penup()
turtle.goto(300,-20)
turtle.write('x')
#以下是畫出y軸
turtle.penup()
turtle.goto(0,-300)
turtle.pendown()
turtle.goto(0,300)
turtle.goto(10,290)
turtle.goto(0,300)
turtle.goto(-10,290)
turtle.penup()
turtle.goto(20,300)
turtle.write('y')
#以下是畫出y=2*x+50的曲線
turtle.penup()
turtle.color('red')
turtle.pensize(3)
x=-100
turtle.goto(x,2*x+50)
turtle.pendown()
for x in range(-100,100):
turtle.goto(x,2*x+50)
turtle.hideturtle()
turtle.done()
20.建立坐標(biāo)系
import turtle as t
t.pensize(2)
t.ht()
t.pu()
t.goto(-250,0)
t.pd()
t.fd(500)
t.left(150)
t.fd(15)
t.pu()
t.goto(250,0)
t.write('X')
t.pd()
t.right(300)
t.fd(15)
t.pu()
t.goto(0,-250)
t.pd()
t.right(120)
t.fd(500)
t.left(150)
t.fd(15)
t.pu()
t.goto(0,250)
t.pd()
t.left(60)
t.fd(15)
t.write('Y')
小結(jié):
詳情看python文件夾收藏的文檔
鏈接:https://www.icourse163.org/learn/BIT-268001?tid=1207014257#/learn/content?type=detail&id=1212094124&cid=1215248145