引言
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 模块解释
-
类定义:
class Dog:
定义了一个名为Dog
的类count = 0
是一个类变量,它属于整个类而不是某个特定的实例。这个变量用于记录创建了多少个Dog
实例
-
构造函数:
def __init__(self, name):
是Dog
类的构造函数,当创建一个新的Dog
实例时会调用它self.name = name
将传入的名字赋值给实例变量name
Dog.count += 1
每次创建一个新的Dog
实例时,将类变量count
增加 1
-
创建实例并打印
count
:black_dog = Dog('小黑')
创建了一个Dog
实例black_dog
,名字为 ‘小黑’。此时count
变为 1print(Dog.count)
打印类变量count
,输出 1print(black_dog.count)
打印black_dog
实例的count
。注意,这里实际上访问的是类变量count
,因为black_dog
实例并没有自己的count
属性
-
创建更多的实例并打印
count
:white_dog = Dog('老白')
创建了另一个Dog
实例white_dog
,名字为 ‘老白’。此时count
变为 2print(Dog.count)
打印类变量count
,输出 2print(white_dog.count)
打印white_dog
实例的count
,输出 2
-
继续创建实例并打印
count
:red_dog = Dog('小红')
创建了第三个Dog
实例red_dog
,名字为 ‘小红’。此时count
变为 3print(Dog.count)
打印类变量count
,输出 3print(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.count
和 instance.count
都是相同的,因为它们都引用了同一个类变量 count
。在 Python 中,如果实例没有自己的属性,那么访问该属性时会查找类中的同名属性
通过这种方式,可以跟踪和管理创建的
Dog
实例数量。这对于需要统计或限制实例数量的应用场景非常有用
二、游戏更新分数
2.1 题目
定义一个游戏类 Game , 包含实例属性 玩家名字( name )
- 要求记录游戏的最高分( top_score 类属性),
- 定义方法: show_help 显示游戏的帮助信息 输出 这是游戏的帮助信息
- 定义方法: show_top_score , 打印输出游戏的最高分
- 定义方法: 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__
:- 接收两个参数
name
和top_score
self.name
存储玩家的名字self.top_score
存储游戏的最高分
- 接收两个参数
-
方法
show_help
:- 打印一条帮助信息
-
方法
show_top_score
:- 打印当前游戏的最高分
-
方法
start_game
:- 打印玩家开始游戏的信息。
- 生成一个 10 到 100 之间的随机整数
r
- 如果
r
大于或等于当前的最高分self.top_score
,则更新self.top_score
为r
- 打印本次游戏的实际得分
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条件判断实现分数的更新