【python实操】python小程序之计算对象个数、游戏更新分数

引言

python小程序之计算对象个数、游戏更新分数

文章目录

  • 引言
  • 一、计算对象个数
    • 1.1 题目
    • 1.2 代码
    • 1.3 代码解释
      • 1.3.1 代码结构
      • 1.3.2 模块解释
      • 1.3.3 解释输出
  • 二、游戏更新分数
    • 2.1 题目
    • 2.2 代码
    • 2.3 代码解释
      • 2.3.1 定义 `Game` 类
      • 2.3.2 创建 `Game` 实例并调用方法
  • 三、思考
    • 3.1 计算对象个数
    • 3.2 游戏更新分数

一、计算对象个数

1.1 题目

定义一个 Dog 类, 定义一个类属性 count,用来记录创建该类对象的个数. (即每创建一个对象,count 的值就要加1)实例属性 name

1.2 代码

class Dog:
    count = 0

    def __init__(self, name):
        self.name = name
        Dog.count += 1


black_dog = Dog('小黑')
print(Dog.count)
print(black_dog.count)

white_dog = Dog('老白')
print(Dog.count)
print(white_dog.count)

red_dog = Dog('小红')
print(Dog.count)
print(red_dog.count)

输出结果:
在这里插入图片描述

1.3 代码解释

这段代码定义了一个 Dog 类,并使用类变量 count 来记录创建的 Dog 实例的数量

1.3.1 代码结构

class Dog:
    count = 0  # 类变量,用于记录 Dog 实例的数量

    def __init__(self, name):
        self.name = name  # 实例变量,存储狗的名字
        Dog.count += 1  # 每次创建一个新的 Dog 实例时,增加 count 的值

# 创建 Dog 实例并打印 count
black_dog = Dog('小黑')
print(Dog.count)  # 打印类变量 count
print(black_dog.count)  # 打印实例 black_dog 的 count

white_dog = Dog('老白')
print(Dog.count)  # 打印类变量 count
print(white_dog.count)  # 打印实例 white_dog 的 count

red_dog = Dog('小红')
print(Dog.count)  # 打印类变量 count
print(red_dog.count)  # 打印实例 red_dog 的 count

1.3.2 模块解释

  1. 类定义:

    • class Dog: 定义了一个名为 Dog 的类
    • count = 0 是一个类变量,它属于整个类而不是某个特定的实例。这个变量用于记录创建了多少个 Dog 实例
  2. 构造函数:

    • def __init__(self, name):Dog 类的构造函数,当创建一个新的 Dog 实例时会调用它
    • self.name = name 将传入的名字赋值给实例变量 name
    • Dog.count += 1 每次创建一个新的 Dog 实例时,将类变量 count 增加 1
  3. 创建实例并打印 count:

    • black_dog = Dog('小黑') 创建了一个 Dog 实例 black_dog,名字为 ‘小黑’。此时 count 变为 1
    • print(Dog.count) 打印类变量 count,输出 1
    • print(black_dog.count) 打印 black_dog 实例的 count。注意,这里实际上访问的是类变量 count,因为 black_dog 实例并没有自己的 count 属性
  4. 创建更多的实例并打印 count:

    • white_dog = Dog('老白') 创建了另一个 Dog 实例 white_dog,名字为 ‘老白’。此时 count 变为 2
    • print(Dog.count) 打印类变量 count,输出 2
    • print(white_dog.count) 打印 white_dog 实例的 count,输出 2
  5. 继续创建实例并打印 count:

    • red_dog = Dog('小红') 创建了第三个 Dog 实例 red_dog,名字为 ‘小红’。此时 count 变为 3
    • print(Dog.count) 打印类变量 count,输出 3
    • print(red_dog.count) 打印 red_dog 实例的 count,输出 3

1.3.3 解释输出

  • 第一次创建 Dog 实例 black_dog 后,count 变为 1
  • 第二次创建 Dog 实例 white_dog 后,count 变为 2
  • 第三次创建 Dog 实例 red_dog 后,count 变为 3

每次打印 Dog.countinstance.count 都是相同的,因为它们都引用了同一个类变量 count。在 Python 中,如果实例没有自己的属性,那么访问该属性时会查找类中的同名属性

通过这种方式,可以跟踪和管理创建的 Dog 实例数量。这对于需要统计或限制实例数量的应用场景非常有用

二、游戏更新分数

2.1 题目

定义一个游戏类 Game , 包含实例属性 玩家名字( name )

  1. 要求记录游戏的最高分( top_score 类属性),
  2. 定义方法: show_help 显示游戏的帮助信息 输出 这是游戏的帮助信息
  3. 定义方法: show_top_score , 打印输出游戏的最高分
  4. 定义方法: start_game , 开始游戏, 规则如下:
    4.1 使用随机数获取本次游戏得分 范围 (10 - 100 )之间
    4.2 判断本次得分和最高分之间的关系
    4.2.1 如果本次得分比最高分高,修改最高分
    4.2.2 如果分数小于等于最高分,则不操作
    4.3 输出本次游戏得分

2.2 代码

import random
class Game:
    def __init__(self, name, top_score):
        self.name = name
        self.top_score = top_score

    def show_help(self):
        print('这是游戏的帮助信息')

    def show_top_score(self):
        print(f'游戏的最高分是:{self.top_score}')

    def start_game(self):
        print(f'{self.name}开始游戏')
        r = random.randint(10, 101)
        if r >= self.top_score:
            self.top_score = r
        print(f'{self.name}本次游戏得分是:{self.top_score}')


test_game = Game('test', 50)
test_game.show_help()
print('-'*30)
test_game.show_top_score()
print('-'*30)
test_game.start_game()

输出结果:
在这里插入图片描述

2.3 代码解释

这段代码定义了一个名为 Game 的类,并创建了一个 Game 类的实例 test_game

2.3.1 定义 Game

import random  # 导入 random 模块以生成随机数

class Game:
    def __init__(self, name, top_score):
        self.name = name          # 初始化游戏的名字
        self.top_score = top_score  # 初始化游戏的最高分

    def show_help(self):
        print('这是游戏的帮助信息')  # 显示帮助信息

    def show_top_score(self):
        print(f'游戏的最高分是:{self.top_score}')  # 显示当前游戏的最高分

    def start_game(self):
        print(f'{self.name} 开始游戏')  # 打印玩家开始游戏的信息
        r = random.randint(10, 101)  # 生成一个 10 到 100 之间的随机整数(包括 10 和 100)
        if r >= self.top_score:      # 如果这次的游戏得分大于或等于历史最高分
            self.top_score = r       # 更新最高分
        print(f'{self.name} 本次游戏得分是:{r}')  # 打印本次游戏的实际得分
  • 构造函数 __init__:

    • 接收两个参数 nametop_score
    • self.name 存储玩家的名字
    • self.top_score 存储游戏的最高分
  • 方法 show_help:

    • 打印一条帮助信息
  • 方法 show_top_score:

    • 打印当前游戏的最高分
  • 方法 start_game:

    • 打印玩家开始游戏的信息。
    • 生成一个 10 到 100 之间的随机整数 r
    • 如果 r 大于或等于当前的最高分 self.top_score,则更新 self.top_scorer
    • 打印本次游戏的实际得分 r

2.3.2 创建 Game 实例并调用方法

test_game = Game('test', 50)  # 创建 Game 类的一个实例,名字为 'test',初始最高分为 50
test_game.show_help()         # 调用 show_help 方法显示帮助信息
print('-'*30)                 # 打印一行分割线
test_game.show_top_score()    # 调用 show_top_score 方法显示当前最高分
print('-'*30)                 # 再打印一行分割线
test_game.start_game()        # 调用 start_game 方法开始游戏
  • 创建 Game 实例:

    • test_game = Game('test', 50) 创建了一个 Gam 类的实例 test_game,设置了玩家名字为 'test',并且设置初始最高分为 50
  • 调用 show_help 方法:

    • test_game.show_help() 调用 show_help 方法来显示游戏的帮助信息
  • 打印分割线:

    • print('-'*30) 打印一行由破折号组成的线,作为视觉上的分隔
  • 调用 show_top_score 方法:

    • test_game.show_top_score() 调用 show_top_score 方法来显示游戏的当前最高分
  • 再次打印分割线:

    • print('-'*30) 再次打印一行分割线
  • 调用 start_game 方法:

    • test_game.start_game() 调用 start_game 方法来开始一次游戏过程。这将:
      • 打印玩家开始游戏的信息
      • 生成一个随机分数
      • 如果新产生的分数高于或等于之前的最高分,那么最高分将会被更新
      • 打印本次游戏的实际得分

在这个例子中,test 的本次游戏得分为 53,超过了初始最高分 50,因此最高分被更新为 53

通过这种方式,可以看到如何使用类和方法来组织和实现一个简单的游戏逻辑

三、思考

3.1 计算对象个数

  • 在类中添加count属性,实现跟踪和管理创建的 Dog 实例数量

3.2 游戏更新分数

  • 初始化分数,并且通过if条件判断实现分数的更新

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

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

相关文章

安卓13禁止锁屏 关闭锁屏 android13禁止锁屏 关闭锁屏

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 设置 =》安全 =》屏幕锁定 =》 无。 我们通过修改系统屏幕锁定配置,来达到设置屏幕不锁屏的配置。像网上好多文章都只写了在哪里改,改什么东西,但是实际上并未写明为什么要改那…

RabbitMQ 高级特性——死信队列

文章目录 前言死信队列什么是死信常见面试题死信队列的概念:死信的来源(造成死信的原因有哪些)死信队列的应用场景 前言 前面我们学习了为消息和队列设置 TTL 过期时间,这样可以保证消息的积压,那么对于这些过期了的消…

数据结构-4.6.KMP算法(旧版下)-朴素模式匹配算法的优化

一.绪论: 当主串字符和模式串字符不匹配时会执行jnext[j]来改变模式串的指针,但主串的指针不变。 二.求模式串的next数组: 1.例一: 如模式串abcabd,当第六个字符d匹配失败时,此时主串中前五个字符abcab都…

连锁店线下线上一体化收银系统源码

近年来线下线上一体化已经成为很多连锁门店追求的方向。其中,线下门店能够赋予品牌发展的价值依然不可小觑。在线下门店中,收银系统可以说是运营管理的关键工具,好的收银系统能够为品牌门店赋能。对于连锁品牌而言,对收银系统的要…

软媒市场新蓝海:软文媒体自助发布与自助发稿的崛起

在信息时代的浪潮中,软媒市场以其独特的魅力和无限的潜力,成为了企业营销的新宠。随着互联网的飞速发展,软文媒体自助发布平台应运而生,为企业提供了更加高效、便捷的营销方式。而自助发稿功能的加入,更是让软媒市场的蓝海变得更加广阔。 软媒市场的独特价值 软媒市场之所以能…

Android Studio Koala中Kotlin引入序列化Parcelable

找了一堆资料没有新构建序列化的方法,踩坑经历如下: 前提是使用Kotlin创建的项目 之前的build.gradle版本写法如下: 但是新版Android Studio Koala使用序列化模式发生了改变,如下: 测试成功如下: 发出来…

【万字长文】Word2Vec计算详解(三)分层Softmax与负采样

【万字长文】Word2Vec计算详解(三)分层Softmax与负采样 写在前面 第三部分介绍Word2Vec模型的两种优化方案。 【万字长文】Word2Vec计算详解(一)CBOW模型 markdown行 9000 【万字长文】Word2Vec计算详解(二&#xff0…

PyCharm+ssh跳板机+服务器

PyCharmssh跳板机服务器 文章目录 PyCharmssh跳板机服务器准备工作登录服务器查看CUDA查看conda创建虚拟环境 前言配置ssh免密登录设置ssh隧道配置pycharm测试第一种第二种 传输数据 准备工作 登录服务器 直接ssh连接就行,在终端(命令行)直接输入下面命令: 跳板机&#xff1…

windows系统更新升级node指定版本【避坑篇!!!亲测有效】(附带各版本node下载链接)一定看到最后!不用删旧版!

Node.js 是一个开源、跨平台的 JavaScript 运行时环境,广泛应用于服务器端和网络应用的开发。随着 Node.js 版本的不断更新,我们可能需要升级到特定版本以满足项目需求或修复安全漏洞。又或者是学习开发另外一个新项目,新项目对Node版本要求更…

数学建模算法与应用 第12章 现代优化算法

目录 12.1 粒子群优化算法 Matlab代码示例:粒子群优化算法求解函数最小值 12.2 遗传算法 Matlab代码示例:遗传算法求解函数最小值 12.3 蚁群算法 Matlab代码示例:蚁群算法求解旅行商问题 12.4 Matlab 遗传算法工具 使用遗传算法工具箱…

基于Python+sqlite3实现(Web)图书管理系统

项目名称:LibraryManagementSystem 一、系统目标 使用了Python作为语言,以django为后台,sqlite3作为数据库,UI基于bootstrap的图书管理系统,模拟图书管理的真实场景,考虑客观需求,界面简洁、操作方便&…

Android Studio实现安卓图书管理系统

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 171安卓小说 1.开发环境 android stuido3.6 jak1.8 2.功能介绍 安卓端: 1.注册登录 2.图书列表 3.图书借阅 4.借阅列表 3.系统截图

Go编译为可执行文件

在window下打包成其他系统可运行的文件 1.在window下打包成window下可执行文件 在项目main.go同级目录下,逐条执行以下命令 set CGO_ENABLED0 set GOOSwindows set GOARCHamd64 go build -o main-windows.exe main.go 2.在window下打包成linux 在项目main.go同级目…

appium中的uiautomatorviewer显示的界面为横屏解决方法

uiautomatorviewer显示的界面为横屏解决方法 解决方法: 修改模拟器的分辨率,比如540:900就可解决了

鸿蒙NEXT开发-面试题库(最新)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

智能化叉车作业安全高效监控管理系统方案

在物流作业中,智能叉车管理系统的引入,不仅极大地提升了作业效率,还显著增强了作业安全性,为物流行业的现代化转型注入了强劲动力。 1、产品简介 2023A智能叉车管理系统是用于工业车辆安全监控管理的车载终端,具有快…

【数据结构与算法】线性表顺序存储结构

文章目录 一.顺序表的存储结构定义1.1定义1.2 图示1.3结构代码*C语言的内存动态分配 二.顺序表基本运算*参数传递2.1建立2.2初始化(InitList(&L))2.3销毁(DestroyList(&L))2.4判断线性表是否为空表(ListEmpty(L))2.5求线性表的长度(ListLength(L))2.6输出线性表(DispLi…

根据请求错误的状态码判断代理配置问题

SafeLine,中文名 “雷池”,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…

如何高效撰写和发表SCI论文

第一章、论文写作准备即为最关键 1、科技论文写作前期的重要性及其分类 2、AI工具如何助力学术论文 3、研究主题确定及提高创新性 兴趣与背景:选择一个您感兴趣且有背景知识的研究领域。 创新性:选题和研究设计阶段如何提高学术创新性的方法。 研究缺…

yolov5-7.0模型DNN加载函数及参数详解(重要)

yolov5-7.0模型DNN加载函数及参数详解(重要) 引言yolov5(v7.0)1,yolov5.h(加载对应模型里面的相关参数要更改)2,main主程序(1)加载网络(2)检测推理&#xff0…