python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

news2024/12/23 6:22:36

学习内容:《python编程:从入门到实践》第二版

知识点:类、random、while循环、把while循环和类结合起来

练习内容:

练习9-13:骰子

创建一个Die类,它包含一个名为sides的属性,该属性的默认值为6。编写一个名为roll_die()的方法,它打印位于1和骰子面数之间的随机数。创建一个6面的骰子再掷10次。

我的代码&运行结果:没想到尝试了一下意外成功了,这次的作业有3种答案,不断优化,你可以试试

第一种
class Die:
    def __init__(self, sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        sides = randint(1, self.sides)
        print(f"这个数是{sides}")

print("当面数是6时,掷10次:")
roll1 = Die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()

print("当面数是10时,掷10次:")
roll2 = Die(10)
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()

print("当面数是20时,掷10次:")
roll3 = Die(20)
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()

运行结果如图: 

 第二种 加入while循环

每个都要掷10次,我原本想要再加一个方法,调用10次函数,times的次数也是一个未知数,但调用不知道应该怎么表示,无果,最后采用了另一种方式,如下

class Die:
    def __init__(self,sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        sides = randint(1, self.sides)
        print(f"这个数是{sides}")


print("当面数是6时,掷10次:")
roll1 = Die()
current_num = 1
while current_num <= 10:
    roll1.roll_die()
    current_num += 1

print("当面数是10时,掷10次:")
roll2 = Die(10)
current_num = 1
while current_num <= 10:
    roll2.roll_die()
    current_num += 1

print("当面数是20时,掷10次:")
roll3 = Die(20)
current_num = 1
while current_num <= 10:
    roll3.roll_die()
    current_num += 1

 运行没有问题哦

 第三种 加入while循环,并把掷骰子次数也加入类的方法中
class Die:
    def __init__(self,times,sides=6):
        self.sides = sides
        self.times = times

    def roll_die(self):
        from random import randint
        sides = randint(1, self.sides)
        print(f"这个数是{sides}")

    def roll_time(self):
        current_num = 1
        times = self.times
        while current_num <= times:
            rollx = Die(self.times, self.sides)
            rollx.roll_die()
            current_num += 1


print("当面数是6时,掷10次:")
roll1 = Die(10)
roll1.roll_time()

print("当面数是10时,掷10次:")
roll2 = Die(10,10)
roll2.roll_time()

print("当面数是20时,掷10次:")
roll3 = Die(10,20)
roll3.roll_time()

练习

注意点:

1.第一次使用pycharm,使用过程中方便很多,比如“引号、(括号等,pycharm会自动填充,体验非常好。

2.pycharm 自查报错第一次看有很多不懂,可以完整写完后运行试试。

3.最后一个意外成功了,因为我一开始rollx还不知道怎么办,还尝试把roll1=rollx,显示rollx没有定义,我都快放弃了,没想到成功了!挺意外的

总结&问题:

1.要举一反三,把知识用起来

2.简洁

3.循环总觉得还有更好的方法

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件&#xff08;文件大小分别为 1.7M&#xff0c;5.1M&#xff0c;3.4M&#xff0c;6.8M&#xff09; 1. 第一种情况&#xff0c;默认分片&#xff1a;不修改程序代码&#xff0c;直接使用 WordCount 源程序 2…

kali Linux基本命令(超全)_kali linux命令

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

【UE 网络】RPC远程过程调用 入门篇

目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&#x1f4a5; 标题&#xff1a;【UE 网络】RPC远程过程调用 入门篇❣️ 寄语…

【JavaScript】JavaScript简介

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 JavaScript入门&#xff08;1&#xff09;————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…

UE5材质之HLSL:深度

UE4/5的Custom节点&#xff1a;在VScode使用HLSL&#xff08;新手入门用&#xff09;_vscode写hlsl-CSDN博客 效果&#xff1a; 材质节点&#xff1a; 自定义节点代码&#xff1a; float3 rayStepViewDir*-1; float4 inputTexTexture2DSample(TexObject,TexObjectSampler,uv)…

yolov8obb角度预测原理解析

预测头 ultralytics/nn/modules/head.py class OBB(Detect):"""YOLOv8 OBB detection head for detection with rotation models."""def __init__(self, nc80, ne1, ch()):"""Initialize OBB with number of classes nc and la…

(笔记)Error: qemu-virgl: Failed to download resource “qemu-virgl--test-image“解决方法

错误&#xff1a; > Downloading https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/FD12FLOPPY.zip curl: (22) The requested URL returned error: 404Error: qemu-virgl: Failed to download resource "qemu-virgl--test-image" D…

基于QT开发的气体成分检测数据记录软件

1、软件概述 气体成分检测数据记录软件用于实现多种气体分析仪及相关设备实时数据的获取、存储和传送。目前支持的设备主要有气体分析仪、多通道进样阀箱、冷阱处理系统和气体采样处理系统。   气体成分检测数据记录软件可以根据实际应用需要进行配置&#xff0c;以实现不同应…

【PyQt】20-QTimer(动态显示时间、定时关闭)

QTimer 前言一、QTimer介绍二、动态时间展示2.1 代码2.2 运行结果 三、定时关闭3.1 介绍他的两种用法1、使用函数或Lambda表达式2、带有定时器类型&#xff08;高级&#xff09; 3.2 代码3.3 运行结果 总结 前言 好久没学习了。 一、QTimer介绍 pyqt里面的多线程可以有两种实…

使用 MongoDB 剖析开放银行:技术挑战和解决方案

开放银行&#xff08;或开放金融&#xff09;在银行业掀起了一股颠覆性浪潮&#xff0c;它迫使金融机构&#xff08;银行、保险公司、金融科技公司、企业甚至政府机构&#xff09;迎接一个透明、协作和创新的新时代。这种模式转变要求银行与第三方提供商&#xff08;TPP&#x…

RAID0、RAID1、RAID5、RAID10、软RAID

硬盘 连续空间 无法 扩容 每个raid对应每个raid卡&#xff0c;没有阵列卡就不能用raid lvm 非连续空间 可以动态扩容 raid 备份&#xff0c; 提高读写性能&#xff0c;不能扩容 raid 是磁盘的集合&#xff0c;按照排列组合的方法不 一&#xff0c;给 raid 去了不同的名字…

Webpack: 构建微前端应用

Module Federation 通常译作“模块联邦”&#xff0c;是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式&#xff0c;理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…

[OtterCTF 2018]Closure

既然你从内存中提取了密码&#xff0c;你能解密rick的文件吗&#xff1f; 密码是知道了&#xff0c;加密文件 &#xff1f; flag 文件&#xff1f;dump 出来 已知这个勒索软件为HiddenTear&#xff0c;直接在网上找到解密程序HiddenTearDecrypter先将加密文件的末尾多余的0去掉…

javaScript利用indexOf()查找字符串的某个字符出现的位置

1 创建字符串 2 利用indexof()查询字符串的字符 3 利用while循环判断indexOf是否等于-1&#xff0c;不等于-1就打印一次并且索引号1去查下一个字符 //创建字符串var str1234567812311231;var indexstr.indexOf(1);//查询该字符while(index !-1)//indexOf()没有查到会返回-1{…

右键新建没有TXT文本文档的解决办法

电脑右键新建&#xff0c;发现没有txt了&#xff0c;我查网上办法都有点复杂&#xff0c;诸如注册表的&#xff0c;但是其实很简单&#xff0c;重启windows资源管理器就可以了。 点击重新启动&#xff0c;之后新建就有txt文档了。

基于Spring Boot的药房信息管理系统

1 项目介绍 1.1 研究的背景及意义 随着社会的飞速进步和药房行业竞争的白热化&#xff0c;传统的手工管理模式已难以适应药房信息管理的现代化需求。在计算机科学技术日臻完善的背景下&#xff0c;药房信息管理者们日益认识到运用计算机技术进行信息管理的迫切性和重要性。计…

昇思MindSpore学习总结五——网络构建

1、网络构建 神经网络模型是由神经网络层和Tensor操作构成的&#xff0c;mindspore.nn提供了常见神经网络层的实现&#xff0c;在MindSpore中&#xff0c;Cell类是构建所有网络的基类&#xff0c;也是网络的基本单元。一个神经网络模型表示为一个Cell&#xff0c;它由不同的子C…

创新探析:我国AIGC产业规模有望在2030年破万亿,创意设计行业或迎来全面革新

在科技日新月异的今天&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;与创意设计行业的结合正以前所未有的速度推动着产业变革。随着技术的不断突破和市场需求的日益增长&#xff0c;我国AIGC产业规模有望在2030年突破万亿元大关&#xff0c;这一宏伟目标不仅是对技…

VUE-CLI脚手架项目的初步创建与配置

首先创建一个VUE项目&#xff0c;注意选择版本为 2.6.10 打开APP.vue文件&#xff0c;并且删除APP.vue中多余的代码 创建index.vue文件 在此文件中写入如下图片中的代码来初步创建页面 创建router目录&#xff0c;并且创建index.js 文件如下 在终端输入npm run serve 运行 然后…

代码随想录-Day43

52. 携带研究材料&#xff08;第七期模拟笔试&#xff09; 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等…