Chapter2
- 美元与人民币转换
- 美元与人民币转换(封装为函数)
- 美元与人民币转换(循环调用函数,直到N||n结束)
- 五角星绘制
- 太阳花绘制
- 正方形旋转绘制
- 正方形绘制(第四边重合)
- 正方形绘制(迷宫造型)
- 温度转换
- 温度转换函数版
- 温度转换循环函数版
- 等边三角形绘制
- Python 蟒蛇绘制
- 彩蛋 递归树
美元与人民币转换
string = input("请输入带符号的金钱数额:")
# 输入金额
if string[-1] == '$':
# 判断币种并进行转换
# 如果为美元则截取转换后将数值乘以汇率
rmb = eval(string[0:-1]) * 6
print("转换后的为{}¥".format(rmb))
elif string[-1] == '¥':
my = eval(string[0:-1]) / 6
print("转换后的为{}$".format(my))
else:
print("输入格式有误")
请输入带符号的金钱数额:12$
转换后的为72¥
美元与人民币转换(封装为函数)
def rmb2my(string):
if string[-1] == '$':
rmb = eval(string[0:-1]) * 6
print("转换后的为{}¥".format(rmb))
elif string[-1] == '¥':
my = eval(string[0:-1]) / 6
print("转换后的为{}$".format(my))
else:
print("输入格式有误")
money = input("请输入带符号的金钱数额:")
rmb2my(money)
请输入带符号的金钱数额:12¥
转换后的为2.0$
美元与人民币转换(循环调用函数,直到N||n结束)
def rmb2my(string):
if string[-1] == '$':
rmb = eval(string[0:-1]) * 6
print("转换后的为{}¥".format(rmb))
elif string[-1] == '¥':
my = eval(string[0:-1]) / 6
print("转换后的为{}$".format(my))
else:
print("输入格式有误")
money = input("请输入带符号的金钱数额,输入(N,n)结束程序:")
while money[-1] not in ['N', 'n']:
rmb2my(money)
money = input("请输入带符号的金钱数额,输入(N,n)结束程序:")
请输入带符号的金钱数额,输入(N,n)结束程序:12¥
转换后的为2.0$
请输入带符号的金钱数额,输入(N,n)结束程序:20$
转换后的为120¥
请输入带符号的金钱数额,输入(N,n)结束程序:N
五角星绘制
from turtle import *
fillcolor("red")
begin_fill()
while True:
forward(200)
right(144)
if abs(pos()) < 1:
break
end_fill()
太阳花绘制
from turtle import *
color("red", "yellow")
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
---------------------------------------------------------------------------
Terminator Traceback (most recent call last)
<ipython-input-1-3583bffe0b6f> in <module>
5 while True:
6 forward(200)
----> 7 left(170)
8 if abs(pos()) < 1:
9 break
D:\Anaconda3\lib\turtle.py in left(angle)
D:\Anaconda3\lib\turtle.py in left(self, angle)
1697 67.0
1698 """
-> 1699 self._rotate(angle)
1700
1701 def pos(self):
D:\Anaconda3\lib\turtle.py in _rotate(self, angle)
3274 for _ in range(steps):
3275 self._orient = self._orient.rotate(delta)
-> 3276 self._update()
3277 self._orient = neworient
3278 self._update()
D:\Anaconda3\lib\turtle.py in _update(self)
2658 return
2659 elif screen._tracing == 1:
-> 2660 self._update_data()
2661 self._drawturtle()
2662 screen._update() # TurtleScreenBase
D:\Anaconda3\lib\turtle.py in _update_data(self)
2644
2645 def _update_data(self):
-> 2646 self.screen._incrementudc()
2647 if self.screen._updatecounter != 0:
2648 return
D:\Anaconda3\lib\turtle.py in _incrementudc(self)
1290 if not TurtleScreen._RUNNING:
1291 TurtleScreen._RUNNING = True
-> 1292 raise Terminator
1293 if self._tracing > 0:
1294 self._updatecounter += 1
Terminator:
正方形旋转绘制
from turtle import *
import random
# 绘制正方形的方法
def square_drawing():
for j in range(4):
# 前进规定距离
fd(初始长度)
left(90)
初始长度 = eval(input("请输入正方形的边长:\n"))
正方形个数 = eval(input("请输入正方形的个数:\n"))
旋转角度 = 90 / 正方形个数
颜色 = ['red', 'green', 'yellow', 'blue']
speed(5)
for i in range(正方形个数):
# 设置颜色
pencolor(颜色[random.randint(0, 3)])
# 绘制正方形
square_drawing()
# 旋转
left(旋转角度)
done()
请输入正方形的边长:
20
请输入正方形的个数:
5
正方形绘制(第四边重合)
from turtle import *
chang = 0
col = ['red', 'green', 'blue', 'yellow']
for count in range(50):
pencolor(col[count % 4])
fillcolor(col[count % 4])
seth(90 * (count + 1))
if count % 3 == 0:
chang += 10
fd(chang)
continue
fd(chang)
done()
正方形绘制(迷宫造型)
from turtle import *
col = ['red', 'green', 'blue']
for count in range(50):
pencolor(col[count % 3])
seth(90 * (count + 1))
fd(10 * (count + 1))
done()
温度转换
TempStr = input("请输入带符号的温度值:")
# 判断最后的温度符号
if TempStr[-1] in ['F', 'f']:
# 进行公式转换截取第一个到符号位之前的数字并通过eval函数转换为python语句
C = (eval(TempStr[0:-1]) - 32) / 1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['c', 'C']:
F = eval(TempStr[0:-1]) * 1.8 + 32
print("转换后的温度是{:.2f}F".format(F))
else:
# 以上条件都不符合说明输入有问题
print("输入有误")
请输入带符号的温度值:20C
转换后的温度是68.00F
温度转换函数版
def temp_convert(value_str):
# 定义转换函数判断温度单位
if value_str[-1] in ['F', 'f']:
# 进行公式转换截取第一个到符号位之前的数字并通过eval函数转换为python语句
c = (eval(value_str[0:-1]) - 32) / 1.8
print("转换后的温度是{:.2f}C".format(c))
elif value_str[-1] in ['c', 'C']:
f = eval(value_str[0:-1]) * 1.8 + 32
print("转换后的温度是{:.2f}F".format(f))
else:
print("输入格式有误")
temp_str = input("请输入带符号的温度值:")
# 调用函数
temp_convert(temp_str)
请输入带符号的温度值:20C
转换后的温度是68.00F
温度转换循环函数版
def temp_convert(value_str):
if value_str[-1] in ['f', 'F']:
c = (eval(value_str[0:-1]) - 32) / 1.8
print("{:.2f}c".format(c))
elif value_str[-1] in ['c', 'C']:
f = 1.8 * eval(value_str[0:-1]) + 32
print("{:.2f}f".format(f))
else:
print("输入有误")
temp_str = input("请输入带符号的温度值:")
while temp_str[-1] not in ['N', 'n']:
temp_convert(temp_str)
temp_str = input("请输入带符号的温度值:")
等边三角形绘制
from turtle import *
fillcolor("red")
begin_fill()
while True:
fd(200)
right(120)
if abs(pos()) < 1:
break
end_fill()
Python 蟒蛇绘制
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 40)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()
彩蛋 递归树
from turtle import *
from random import *
from math import *
def tree(n, l):
pd() # 下笔
# 阴影效果
t = cos(radians(heading() + 45)) / 8 + 0.25
pencolor(t, t, t)
pensize(n / 3)
forward(l) # 画树枝
if n > 0:
b = random() * 15 + 10 # 右分支偏转角度
c = random() * 15 + 10 # 左分支偏转角度
d = l * (random() * 0.25 + 0.7) # 下一个分支的长度
# 右转一定角度,画右分支
right(b)
tree(n - 1, d)
# 左转一定角度,画左分支
left(b + c)
tree(n - 1, d)
# 转回来
right(c)
else:
# 画叶子
right(90)
n = cos(radians(heading() - 45)) / 4 + 0.5
pencolor(n, n * 0.8, n * 0.8)
circle(3)
left(90)
# 添加0.3倍的飘落叶子
if (random() > 0.7):
pu()
# 飘落
t = heading()
an = -40 + random() * 40
setheading(an)
dis = int(800 * random() * 0.5 + 400 * random()
* 0.3 + 200 * random() * 0.2)
forward(dis)
setheading(t)
# 画叶子
pd()
right(90)
n = cos(radians(heading() - 45)) / 4 + 0.5
pencolor(n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4)
circle(2)
left(90)
pu()
# 返回
t = heading()
setheading(an)
backward(dis)
setheading(t)
pu()
backward(l) # 退回
bgcolor(0.5, 0.5, 0.5) # 背景色
ht() # 隐藏turtle
speed(0) # 速度 1-10渐进,0 最快
tracer(0, 0)
pu() # 抬笔
backward(100)
left(90) # 左转90度
pu() # 抬笔
backward(300) # 后退300
tree(12, 100) # 递归7层
done()