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 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()

部分展示:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC 中的常用注解和用法

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 注解 1. MVC定义2. 注解2.1 RequestMappin…

【python基础学习11课_异常机制】

一、异常 1、异常的定义 异常&#xff1a;程序无法继续执行异常会中断程序执行异常处理&#xff0c;是为了不中断程序执行。而不是避免错误。有些代码是报错就是要暴露出来有了异常机制&#xff0c;错误的代码报错后抛出异常&#xff0c;代码从上到下&#xff0c;报错代码后面…

AI嵌入式CanMV-K230项目(1)-简介

文章目录 前言一、嘉楠的产品体系二、开发板介绍三、应用领域总结 前言 前一些列文章我们介绍了K210的使用方法&#xff0c;近期嘉楠科技发布了最新一版的K230芯片&#xff0c;下面我们来了解下这款芯片&#xff0c;后续我们将介绍该款芯片开发板的使用方法。 一、嘉楠的产品体…

javascript操作BOM的方法

目录 1.window.alert() 2.window.confirm() 3.window.prompt() 4.window.location() 5.window.navigator() 6.window.screen() 7.window.history() 8.window.setTimeout() 和 window.clearTimeout() 9.window.setInterval() 和 window.clearInterval() BOM&#xff08…

基于51单片机的万年历-心率脉搏计仿真及源程序-保存心率记录

基于51单片机的万年历-心率脉搏计仿真及源程序-保存心率记录 一、系统方案 1、本设计采用51单片机作为主控器。 2、液晶1602显示。 3、DS1302万年历&#xff0c;测心率&#xff0c;按键设置万年历、心率上下限&#xff0c;不在范围蜂鸣器报警。 4、心率测量值保存3组数据。 二、…

C语言内存优化实用指南

一、引言 在C语言编程中&#xff0c;内存管理是一项至关重要的任务。有效的内存优化可以提升程序的性能&#xff0c;减少资源消耗&#xff0c;并防止可能出现的内存泄漏和溢出问题。以下是一些关于C语言内存优化的实用指南。 二、理解内存管理 在C语言中&#xff0c;程序员需…

蓝桥杯物联网竞赛_STM32L071_11_知识体系的查漏与补缺

太久没学单片机了&#xff0c;再重新过一遍查漏补缺&#xff0c;对其中之前没怎么在意的&#xff0c;而现在又发觉的问题进行再分析与补充 1. debug serial wire是干什么用的 这个东西我勾选不勾选都对我的程序没有什么影响&#xff0c;我很好奇是干什么用的&#xff0c;网上查…

蓝桥杯(3.5)

789. 数的范围 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int q sc.nextInt();int[] res new int[n];for(int i0;i<n;i)res[i] sc.nextInt();while(q-- ! 0) {int…

精准测试(针对人工执行的测试用例和自动化测试脚本)

在软件测试中&#xff0c;我们常常碰到两个基本问题&#xff08;困难&#xff09;&#xff1a; 很难保障无漏测&#xff1a;我们做了大量测试&#xff0c;但不清楚测得怎样&#xff0c;对软件上线后会不会出问题&#xff0c;没有信心&#xff1b;选择待执行的测试用例&#xf…

[网络安全] PKI

一、PKI 概述 名称; 公钥基础设施 (Public Key Facility) 作用: 通过加密技术和数字签名保证信息安全 组成: 公钥机密技术、数字证书、CA、RA 二、信息安全三要素 机密性&#xff1a;确保仅信息发收双方 能看懂信息 完整性&#xff1a; 确保信息发收完整&#xff0c;不被破坏 …

深入浅出(二)MVVM

MVVM 1. 简介2. 示例 1. 简介 2. 示例 示例下载地址&#xff1a;https://download.csdn.net/download/qq_43572400/88925141 创建C# WPF应用(.NET Framework)工程&#xff0c;WpfApp1 添加程序集 GalaSoft.MvvmLight 创建ViewModel文件夹&#xff0c;并创建MainWindowV…

一款非常适合老中医用的《书剑中医电子处方软件简明版》

上了年纪的老中医&#xff0c;虽然经验丰富&#xff0c;但是电脑的基础都比较差&#xff0c;而开处方的软件通常又设计的太复杂&#xff0c;想用电脑开处方就非常困难&#xff0c;所以只好坚持手写开处方。最近&#xff0c;小编找到了一款非常简单的《书剑中医电子处方软件简明…