Python实战小项目-骰子模拟器+Turtle绘图
- 骰子模拟器
- Turtle绘图
骰子模拟器
-
导入了
random
模块,该模块提供了生成随机数的功能。 -
定义了两个变量
min_val
和max_val
,分别表示骰子的最小值和最大值。在这个例子中,骰子的最小值为1,最大值为6。 -
定义了一个变量
roll_again
,用于控制是否继续掷骰子。初始值为"yes",表示开始时用户可以选择继续掷骰子。 -
进入一个循环,条件为
roll_again
等于"yes"或者"y"。这个循环会一直执行,直到用户输入的不是"yes"或者"y"为止。 -
在循环内部,首先打印出"开始掷骰子"和"骰子数值是:"的提示信息。
-
使用
random.randint(min_val, max_val)
函数生成一个介于最小值和最大值之间的随机整数,模拟掷骰子的过程。这里进行了两轮掷骰子的操作,每轮都会打印出生成的随机数。 -
通过
input()
函数询问用户是否继续掷骰子。如果用户输入的是"yes"或者"y",则继续执行循环;否则,退出循环。
import random# 设置最大值和最小值
min_val = 1
max_val = 6# 是否继续
roll_again = "yes"# 循环
while roll_again == "yes" or roll_again == "y":print("开始掷骰子")print("骰子数值是 :")# 第一轮print(random.randint(min_val, max_val))# 第二轮print(random.randint(min_val, max_val))# 是否继续roll_again = input("是否继续掷骰子?(是的话, 输入yes或者y)")
Turtle绘图
使Python的turtle库绘制分形树。首先导入turtle库,并创建一个Turtle对象和一个Screen对象。设置屏幕背景颜色为黑色,标题为"分形树"。然后设置画笔的初始位置和速度。
定义一个名为draw的递归函数,该函数接受一个参数l,表示树枝的长度。在函数内部,首先判断树枝长度是否小于10,如果小于10,则不进行绘制。否则,设置画笔的大小、颜色,向前移动l个单位,然后左转30度,继续绘制长度为3/4 * l的子树枝,右转60度,再绘制长度为3/4 * l的子树枝,最后左转30度,回到原来的位置。
接下来调用draw函数绘制20次,然后改变画笔的方向和速度,再次调用draw函数绘制40次。之后再次改变画笔的方向和速度,再次调用draw函数绘制60次。最后,当点击屏幕时,程序退出。
import turtle as turoo = tu.Turtle() # 创建对象
wn = tu.Screen() # 屏幕对象
wn.bgcolor("black") # 屏幕背景
wn.title("分形树")
roo.left(90) # 移动
roo.speed(20) # 速度def draw(l): # 以长度'l'作为参数的递归函数if l < 10:returnelse:roo.pensize(2) # 设置画笔大小roo.pencolor("yellow") # 画笔颜色roo.forward(l) # 朝向roo.left(30) # 移动draw(3 * l / 4) # 绘制roo.right(60) # 移动draw(3 * l / 4) # 绘制roo.left(30) # 移动roo.pensize(2)roo.backward(l) # 返回初始位置draw(20) # 绘制20次roo.right(90)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor("magenta") # magentaroo.forward(l)roo.left(30)draw(3 * l / 4)roo.right(60)draw(3 * l / 4)roo.left(30)roo.pensize(2)roo.backward(l)draw(20)roo.left(270)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor("red") # redroo.forward(l)roo.left(30)draw(3 * l / 4)roo.right(60)draw(3 * l / 4)roo.left(30)roo.pensize(2)roo.backward(l)draw(20)roo.right(90)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor('#FFF8DC') # whiteroo.forward(l)roo.left(30)draw(3 * l / 4)roo.right(60)draw(3 * l / 4)roo.left(30)roo.pensize(2)roo.backward(l)draw(20)########################################################def draw(l):if (l < 10):returnelse:roo.pensize(3)roo.pencolor("lightgreen") # lightgreenroo.forward(l)roo.left(30)draw(4 * l / 5)roo.right(60)draw(4 * l / 5)roo.left(30)roo.pensize(3)roo.backward(l)draw(40)roo.right(90)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(3)roo.pencolor("red") # redroo.forward(l)roo.left(30)draw(4 * l / 5)roo.right(60)draw(4 * l / 5)roo.left(30)roo.pensize(3)roo.backward(l)draw(40)roo.left(270)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(3)roo.pencolor("yellow") # yellowroo.forward(l)roo.left(30)draw(4 * l / 5)roo.right(60)draw(4 * l / 5)roo.left(30)roo.pensize(3)roo.backward(l)draw(40)roo.right(90)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(3)roo.pencolor('#FFF8DC') # whiteroo.forward(l)roo.left(30)draw(4 * l / 5)roo.right(60)draw(4 * l / 5)roo.left(30)roo.pensize(3)roo.backward(l)draw(40)########################################################
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor("cyan") # cyanroo.forward(l)roo.left(30)draw(6 * l / 7)roo.right(60)draw(6 * l / 7)roo.left(30)roo.pensize(2)roo.backward(l)draw(60)roo.right(90)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor("yellow") # yellowroo.forward(l)roo.left(30)draw(6 * l / 7)roo.right(60)draw(6 * l / 7)roo.left(30)roo.pensize(2)roo.backward(l)draw(60)roo.left(270)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor("magenta") # magentaroo.forward(l)roo.left(30)draw(6 * l / 7)roo.right(60)draw(6 * l / 7)roo.left(30)roo.pensize(2)roo.backward(l)draw(60)roo.right(90)
roo.speed(2000)# recursion
def draw(l):if (l < 10):returnelse:roo.pensize(2)roo.pencolor('#FFF8DC') # whiteroo.forward(l)roo.left(30)draw(6 * l / 7)roo.right(60)draw(6 * l / 7)roo.left(30)roo.pensize(2)roo.backward(l)draw(60)
wn.exitonclick()
部分展示: