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

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

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

练习内容:

练习9-13:骰子

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

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

第一种
class Die:def __init__(self, sides=6):self.sides = sidesdef roll_die(self):from random import randintsides = 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 = sidesdef roll_die(self):from random import randintsides = randint(1, self.sides)print(f"这个数是{sides}")print("当面数是6时,掷10次:")
roll1 = Die()
current_num = 1
while current_num <= 10:roll1.roll_die()current_num += 1print("当面数是10时,掷10次:")
roll2 = Die(10)
current_num = 1
while current_num <= 10:roll2.roll_die()current_num += 1print("当面数是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 = sidesself.times = timesdef roll_die(self):from random import randintsides = randint(1, self.sides)print(f"这个数是{sides}")def roll_time(self):current_num = 1times = self.timeswhile current_num <= times:rollx = Die(self.times, self.sides)rollx.roll_die()current_num += 1print("当面数是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.mzph.cn/bicheng/37803.shtml

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

相关文章

汽车电子行业知识:什么是电子后视镜

文章目录 1.什么是电子后视镜2.有哪些汽车用到了电子后视镜3.电子后视镜的原理及算法4.电子后视镜的优点5.电子后视镜的未来市场将继续增长 1.什么是电子后视镜 电子后视镜是一种集成了电子元件和显示屏的汽车后视镜&#xff0c;用于替代传统的机械后视镜。它通过内置的摄像头捕…

C++期末练习

1. 多态 要求 动态多态性 题目描述 定义一个抽象类shape&#xff0c;用于代表几何图形&#xff0c;设置计算几何图形体积的外部接口&#xff1b;由shape类派生出圆柱类cylinder、球sphere&#xff1b;圆柱体类型有私有数据成员半径r&#xff0c;高h&#xff1b;球类有私有数…

外星人存在的观点

以下是一些具体的证据来支持外星人存在的观点&#xff1a; 一、宇宙中的生命适宜条件 行星多样性&#xff1a;宇宙中存在着数以亿计的恒星和行星&#xff0c;其中许多行星位于恒星宜居带内&#xff0c;拥有适宜的温度和液态水等生命必需条件。例如&#xff0c;开普勒-452b行星…

数字信号处理实验一(离散信号及离散系统的MATLAB编程实现)

实验要求&#xff1a; 离散信号及离散系统的MATLAB编程实现&#xff08;2学时&#xff09; 要求&#xff1a; 编写一程序&#xff0c;输出一定长度&#xff08;点数&#xff09;&#xff0c;具有一定幅度、&#xff08;角&#xff09;频率和初始相位的实&#xff08;或复&…

grpc学习golang版( 一、基本概念与安装 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、基本介绍1.1 什么是rpc1.2 什么是grpc1.3 grpc的作用1.4 grp…

PG备份与恢复

一、开启WAL归档 1、创建归档目录 我们除了存储数据目录pgdata之外&#xff0c;还要创建backups&#xff0c;scripts&#xff0c;archive_wals文件 mkdir -p /home/mydba/pgdata/arch mkdir -p /home/mydba/pgdata/scripts mkdir -p /home/mydba/backups chown -R mydba.myd…

docker网络功能介绍

一、 网络启动过程二、 修改容器dns和主机名① 临时处理&#xff08;容器终止或重启后不会保存&#xff09;② 通过参数指定 三、 容器内访问控制① 容器访问外部网络② 容器间互相访问&#xff08;1&#xff09;访问所有端口&#xff08;2&#xff09;访问指定端口 四、 docke…

解读环境工程乙级资质中对专业技术人员职称与执业资格的双重要求

1. 职称要求 职称是中国专业技术人员职业资格的一种体现&#xff0c;反映了个人在某一专业领域的学术水平、专业技能和工作经验。职称分为初级&#xff08;助理级&#xff09;、中级、副高级&#xff08;高级&#xff09;和正高级&#xff08;教授级&#xff09;。在环境工程乙…

SpringDataJPA系列(1)JPA概述

SpringDataJPA系列(1)JPA概述 SpringDataJPA似乎越来越流行了&#xff0c;我厂的mysql数据库和MongoDB数据库持久层都依赖了SpringDataJPA。为了更好的使用它&#xff0c;我们内部还对MongoDB的做了进一步的抽象和封装。为了查漏补缺&#xff0c;温故而知新&#xff0c;整理下…

工作中常用的linux命令整理-文本和文件处理

VI 显示行号“: set number”统计查找字符串“ORA”个数&#xff1a;“:%s/ORA//gn”复制&#xff1a;yy粘贴&#xff1a;p删除: dd删除第一行到第十行: :1,10d删除第5行至最后一行: :5,$d跳转到指定行&#xff1a;“:n”跳转到最后一行&#xff1a;ShiftGS向下查找&#xff1…

Dataway,又一款告别 Controller、Service、Dao...的神器

Dataway 让 Spring Boot 不再需要 Controller、Service、DAO、Mapper... Dataway介绍 Dataway 是基于 DataQL 服务聚合能力&#xff0c;为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 D…

统计分析利器:深入解读卡方检验与单因素方差分析的应用案例【练习题】

一、卡方检验 1.对400人进行问卷调查&#xff0c;询问对于教学改革的看法&#xff0c;调查结果如下表所示&#xff0c;请问不同学科不同性别的人意见是否相同。 学科 男生 女生 工科 80 40 理科 120 160 &#xff08;性别&#xff0c;学科均无序分类>卡方检验&am…

grpc学习golang版( 二、入门示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、环境二、编写protobuf文件三、编写server服务端四、编写Clie…

前端路由管理

前端路由管理简介&#xff1a; 当谈到前端路由管理时&#xff0c;通常指的是在单页面应用程序&#xff08;SPA&#xff09;中管理页面间导航和URL的过程。路由管理器是一个工具&#xff0c;可以帮助前端开发者定义应用程序的不同视图之间的关系&#xff0c;同时能够响应URL的改…

深入理解SQL中的LEFT JOIN操作

深入理解SQL中的LEFT JOIN操作 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是LEFT JOIN&#xff1f; 在SQL中&#xff0c;JOIN操作用于合并两个或多个…

Uboot重定位

Uboot重定位 一、重定位的意义二、介绍一些重定位相关的表项结构(节)三、uboot的重定位过程:一、重定位的意义 uboot的重定位有两次,第一次是在编译成镜像后,在makefile中调用进行处理的,其调用tools/riscv_prelink.c的代码进行重定位处理(主要就是对重定位表中的R_RIS…

如何快速使用JNI

文章目录 1_JNI是什么&#xff1f;2_使用3_扩展 1_JNI是什么&#xff1f; JNI 是Java Native Interface的缩写&#xff0c;通过JNI&#xff0c;允许Java代码与其他语言&#xff08;通常是C或C&#xff09;编写的本地应用程序或库进行交互。简而言之就是&#xff0c;Java可以通…

Leetcode40 无重复组合之和

题目描述&#xff1a; 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 思路分析 这个题是…

VUE的快速使用

使用步骤 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

二进制常用知识整理<java>

1、进制转换&#xff1a; int转二进制&#xff1a; public static void main(String[] args) {int a 0b100;//0b表示后面的为二进制表示&#xff0c;0开始表示八进制System.out.println(a);System.out.println(Integer.toBinaryString(a));System.out.println(Integer.toStr…