Python实战小项目-骰子模拟器+Turtle绘图

Python实战小项目-骰子模拟器+Turtle绘图

  • 骰子模拟器
  • Turtle绘图

骰子模拟器

  1. 导入了random模块,该模块提供了生成随机数的功能。

  2. 定义了两个变量min_valmax_val,分别表示骰子的最小值和最大值。在这个例子中,骰子的最小值为1,最大值为6。

  3. 定义了一个变量roll_again,用于控制是否继续掷骰子。初始值为"yes",表示开始时用户可以选择继续掷骰子。

  4. 进入一个循环,条件为roll_again等于"yes"或者"y"。这个循环会一直执行,直到用户输入的不是"yes"或者"y"为止。

  5. 在循环内部,首先打印出"开始掷骰子"和"骰子数值是:"的提示信息。

  6. 使用random.randint(min_val, max_val)函数生成一个介于最小值和最大值之间的随机整数,模拟掷骰子的过程。这里进行了两轮掷骰子的操作,每轮都会打印出生成的随机数。

  7. 通过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 tu

roo = tu.Turtle()  # 创建对象
wn = tu.Screen()  # 屏幕对象
wn.bgcolor("black")  # 屏幕背景
wn.title("分形树")
roo.left(90)  # 移动
roo.speed(20)  # 速度


def draw(l):  # 以长度'l'作为参数的递归函数
    if l < 10:
        return
    else:
        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):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        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)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("red")  # red
        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)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        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)


########################################################

def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(3)
        roo.pencolor("lightgreen")  # lightgreen
        roo.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):
        return
    else:
        roo.pensize(3)
        roo.pencolor("red")  # red
        roo.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):
        return
    else:
        roo.pensize(3)
        roo.pencolor("yellow")  # yellow
        roo.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):
        return
    else:
        roo.pensize(3)
        roo.pencolor('#FFF8DC')  # white
        roo.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):
        return
    else:

        roo.pensize(2)
        roo.pencolor("cyan")  # cyan
        roo.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):
        return
    else:
        roo.pensize(2)
        roo.pencolor("yellow")  # yellow
        roo.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):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.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):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.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()

部分展示:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/437406.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二维码门楼牌管理系统应用场景:数据管理的智慧新选择

文章目录 前言一、数据管理部门的智慧工具二、助力决策制定与优质服务提供三、二维码门楼牌管理系统的优势四、展望未来 前言 随着科技的飞速发展&#xff0c;二维码门楼牌管理系统正逐渐成为城市管理的智慧新选择。该系统不仅提升了数据管理效率&#xff0c;还为政府和企业提…

blast原理与使用技巧,最全最详细

BLAST 序列比对 在生物信息学领域&#xff0c;序列比对是一项基础而关键的任务。它帮助研究人员识别基因、理解蛋白质功能&#xff0c;并揭示物种之间的进化关系。 本文旨在介绍BLAST&#xff08;Basic Local Alignment Search Tool&#xff09;的原理及其不同变体&#xff0c;…

买不到的数目c++

题目 输入样例&#xff1a; 4 7输出样例&#xff1a; 17 思路 一个字&#xff0c;猜。 一开始不知道怎么做的时候&#xff0c;想要暴力枚举对于特定的包装n, m&#xff0c;最大不能买到的数量maxValue是多少&#xff0c;然后观察性质做优化。那么怎么确定枚举结果是否正确呢…

「词令官网直达」网址导航分享5个最具权威的研究生考研信息平台官方网站

分享5个最具权威的研究生考研信息平台网站 1、中国研究生招生信息网 官网直达入口&#xff1a;打开「词令」关键词口令直达工具&#xff0c;输入词令「中国研究生招生信息网」搜索直达进入中国研究生招生信息网官方网站&#xff1b; 中国研究生招生信息网&#xff08;简称研…

npm ERR! code ERR_INVALID_URL报错解决

这个报错是URL错误&#xff0c;要排除两个点 npm的registry有没有搞错&#xff0c;也就是npm源有没有搞错 打开文件C:/User/<用户名>/.npmrc查看npm设置查看registry的设置有没有格式错误正确设置格式&#xff1a;registry"https://registry.npmmirror.com"或…

搜维尔科技:动作捕捉与数字时尚:Wondar Studios欧莱雅项目

来自意大利的Wondar Studios工作室&#xff0c;是一家制作与动作捕捉技术相关软件和内容的公司&#xff0c;其出品的三维角色动画均由专业动捕系统真实录制制作。 我们很高兴与大家分享Wondar Studios最新的动捕项目&#xff0c;该项目带来了身临其境的虚拟现实体验。他们与巴…

【Spring高级】第2讲:容器实现类

目录 BeanFactory实现BeanDefinition后置处理器单例bean创建后置处理器顺序总结 ApplicationContext实现ClassPathXmlApplicationContextFileSystemXmlApplicationContextAnnotationConfigApplicationContextAnnotationConfigServletWebServerApplicationContext BeanFactory实…

stable diffusion的额外信息融入方式

conditioning怎么往sd中添加&#xff0c;一般有三种&#xff0c;一种是直接和latent拼一下&#xff0c;另外很多是在unet结构Spatialtransformers上加&#xff0c;和文本特征一样&#xff0c;通过cross-attention往unet上加&#xff0c;这里还需要注意一点&#xff0c;在文本嵌…

2024主流测试工具测评,总有一款适合你!

大家好&#xff01;我是测试元宝~ 在软件开发周期中&#xff0c;测试是确保产品质量的关键环节。随着企业对于软件质量的要求日益提升&#xff0c;测试人员面临着前所未有的挑战&#xff0c;“工欲善其事必先利其器”&#xff0c;选择一款高效、实用的软件测试工具&#xff0c…

Vue.js 修饰符:精准控制组件行为

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

《幸运的基督徒》Python

题目描述 有15个基督徒和15个非基督徒在海上遇险&#xff0c; 为了能让一部分人活下来不得不将其中15个人扔到海里面去&#xff0c; 有个人想了个办法就是大家围成一个圈&#xff0c;由某个人开始从1报数&#xff0c; 报到9的人就扔到海里面&#xff0c;他后面的人接着从1开始报…

★【完全二叉树】【层序遍历】判断是否是完全二叉树

【完全二叉树】【层序遍历】判断是否是完全二叉树 解法1 层序遍历 **判断是不是完全二叉树思路&#xff1a;**:star: ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法1 层序遍历 判断是不是完全二叉树思路&#xff1a…

day28【LeetCode力扣】383.赎金信

day28【LeetCode力扣】383.赎金信 以后我们每期附张图啦&#xff5e;&#xff5e;&#xff5e; 1.题目描述 附上题目链接&#xff1a;赎金信 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以…

一篇文章教会你Python+selenium自动化生成测试报告

前言 批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导…

python创建和上传自己的PyPI库

文章目录 创建和上传自己的PyPI库pypi准备文件制作PyPI包在上传前&#xff0c;先本地验证注册PyPI账户上传pypi判断python包质量之 SourceRankLibraries.io 参考 创建和上传自己的PyPI库 pypi 官方地址&#xff1a;https://pypi.org/ Python中我们经常会用到第三方的包&…

使用nginx输入端口号显示404

输入对应的端口号显示404 先检查当前nginx文件夹的路径是没有中文的查看是否没有开启nginx&#xff1a;ctrlaltdelete打开任务管理器&#xff0c;看看有没有nginx.exe进程&#xff08;一般是有两个进程&#xff09;如果没有进程说明没有打开nginx&#xff0c;查看端口号是否被…

金三银四求职季,这个AI神器助你斩获高薪Offer!

金三银四将至&#xff0c;又到了求职的高峰季&#xff0c;不管是招聘方&#xff0c;还是求职者&#xff0c;肉眼可见都会忙到飞起。 过去准备招聘 JD 或求职简历&#xff0c;都依赖人工编辑和包装&#xff0c;而眼下已进入 AI 时代&#xff0c;善用 AI 的人&#xff0c;无形中…

可惜了微软将终止对 Android Windows 子系统(WSA)的支持。因此,自 2035 年 3 月 5 日起,Windows 上的 WSA拜拜啦

微软将终止对安卓子系统WSA的支持。因此自 2035 年 3 月 5 日起&#xff0c;Windows上依赖于 WSA 的所有应用程序和游戏将不再受支持 可惜了! 多么好用的功能! 微软决定放弃了&#xff01; 还没有好好用起来&#xff0c;就结束了… 世界变化太快&#xff0c;都来不及反应了…

【HTML】HTML基础2(一些常用标签)

目录 例子 首先是网页图标 然后是一些常用标签 插入图片 例子 <!DOCTYPE html> <html><head><link rel"icon" href"img/银河护卫队-星爵.png" type"image/x-icon"><meta charset"utf-8"><title>…

windows机U盘/硬盘直接连接虚拟机失败问题解决

0问题描述 物理机为Windows操作系统&#xff0c;安装VMare后加载了Ubuntu操作系统的虚拟机&#xff1b;外接存储插入电脑&#xff0c;想直接连接虚拟机向虚拟机中拷贝文件&#xff0c;但是连接失败。如图&#xff1a; 1&#xff09;在弹框中选择虚拟机然后点击确定&#xff1b…