一、简答题
1、36.士兵瑞恩
按照需求填空:
1)士兵瑞恩有一把AK47
2)士兵有枪就可以开火
3)枪能够把子弹发射出去,每射击一次,子弹减少一个
4)枪能够装填子弹 --增加子弹的数量
class Gun():
def ① (self,model):
self.model = model self.bullet_count = 0 def add_bullet(self,count):
self.bullet_count += count
def shoot( ② ):
if self.bullet_count <= 0:
print('%s没有子弹' %(self.model))
else: self.bullet_count ③ 1
print('%s的子弹数量为%s' %( ④ ,self.bullet_count))
class Soldier():
def __init__(self,name):
self.name =name
self.gun = None
def fire(self):
if self.gun == None: print('%s没有枪' %(self.name))
else: self.gun.add_bullet(5)
⑤
ak47 = Gun('AK47')
ak47.add_bullet(10)
ak47.shoot()
ruien = Soldier('RE')
ruien.gun = ak47
ruien.fire()
解析:
:
根据题目描述,我们需要实现一个关于枪和士兵的类设计。首先定义了一个Gun类来表示枪,然后定义了一个Soldier类来表示士兵。接下来我们按照题目的描述填充代码。
对于Gun类:
__init__
方法用于初始化枪的属性,包括型号(model)和子弹数量(bullet_count)。根据题目描述,我们可以设置初始的子弹数量为0。所以填入__init__
方法,并设置self.bullet_count = 0
。add_bullet
方法用于增加枪的子弹数量。题目描述中提到每射击一次子弹数量减少一个,但这里我们暂时不考虑射击时的子弹消耗,所以直接增加子弹数量。因此填入self.bullet_count += count
。shoot
方法用于射击并显示当前的子弹数量。如果子弹数量大于0,则减少一个子弹并显示当前子弹数量;如果子弹数量为0,则显示没有子弹的信息。因此填入相应的逻辑代码。其中,③处应为-=
操作符表示减少子弹数量;④处应填入枪模型的名称和当前子弹数量,即self.model
和self.bullet_count
或self.gun.model
和self.gun.bullet_count
等。
对于Soldier类:
__init__
方法用于初始化士兵的属性,包括姓名(name)和持有的枪(gun)。根据题目描述,士兵瑞恩持有一把AK47枪,所以在实例化Soldier时为其设置枪属性。fire
方法用于触发士兵的射击动作。首先检查士兵是否有枪,如果有则调用枪的add_bullet
方法增加子弹数量(这里题目描述有误,应为增加子弹而不是射击),然后调用枪的shoot
方法进行射击。因此填入相应的逻辑代码。⑤处应调用已设置的枪支实例的射击方法,如self.gun.shoot()
或ak47.shoot()
等。
2、37.成绩统计
(1)在D盘根目录下建立一个空数据库Cjdata.db,按照如图所示的表结构,创建学生基本情况表cj;
(2)为表cj添加数据,内容是”学号—— 20210919、班级——4、姓名——赵雨乐、性别——女、成绩——98“;
(3)查询并输出表cj中成绩低于100的数据。
请根据要求,补全代码。(本题无需运行通过,写入代码即可)
import sqlite3
conn = ①
cursor = conn.cursor()
cursor.execute('''CREATE TABLE cj
( ② ,
班级 INTEGER,
姓名 TEXT(10) NOT NULL,
性别 TEXT(1) NOT NULL,
成绩 REAL);''')
cursor.execute(" ③ ('20210919',4,'赵雨乐','女',98)")
conn.commit()
cursor.execute(" ④ ")
for i in ⑤ :
print(i)
conn.close()
解析:
(1)首先,我们需要建立与数据库的连接。使用sqlite3模块,通过sqlite3.connect()方法连接数据库,这里数据库文件路径为’D:/Cjdata.db’。所以①处应填写sqlite3.connect(‘D:/Cjdata.db’)。
(2)然后,根据题目要求,我们需要创建表cj。在创建表的时候,需要定义表的各个字段及其属性。题目中给出的表结构包括学号、班级、姓名、性别和成绩。其中,学号应为主键,因此我们在定义学号字段后加上PRIMARY KEY。考虑到学号可能是文本类型,且长度可能超过普通文本字段的默认长度,我们将其定义为TEXT(20) NOT NULL PRIMARY KEY。所以②处应填写学号 TEXT(20) NOT NULL PRIMARY KEY。
(3)接下来,我们要向cj表中插入数据。使用cursor.execute()方法执行SQL插入语句,将数据插入到cj表中。插入语句的格式为INSERT INTO 表名 VALUES(值1,值2,…)。所以③处应填写INSERT INTO cj VALUES (‘20210919’,4,‘赵雨乐’,‘女’,98)。
(4)然后,我们需要查询并输出表cj中成绩低于100的数据。使用cursor.execute()方法执行SQL查询语句,查询语句的格式为SELECT * FROM 表名 WHERE 条件。所以④处应填写SELECT * FROM cj WHERE 成绩 < 100。
(5)最后,我们使用cursor.fetchall()方法获取查询结果,然后通过循环输出查询结果。所以⑤处应填写cursor.fetchall()。
3、38.家庭记录
假设有一个任务是帮助你的家庭记录每日的支出。每天结束时,你会记录下今天的日期、购买的物品以及花费的金额。这个信息将被保存在一个名为ledger.txt的文本文件中。编写一段Python代码来完成以下的操作:
(1)在文件末尾追加新的消费记录;
(2)需要查看当前所有的消费记录。
为了简化问题,假设每条记录只包含日期、物品和金额,使用逗号分隔。
def append_record(date, item, amount):
with open("ledger.txt", " ① ") as file:
file.write(f"{date},{item},{amount}\n")
def read_records():
with open(" ② ", "r") as file:
records = file. ③ ()
for record in records:
print(record, end="")
\# 示例操作
append_record("2023-04-05", "Groceries", 35.20)
append_record("2023-04-06", "Internet Bill", 50)
④ ()
解析:
这是一个关于文件操作的简答题,要求编写Python代码以记录家庭的每日支出并查看消费记录。
- 第一个空在文件末尾追加新的消费记录,需要使用"追加模式"打开文件,所以填"a"。
- 第二个空需要填写要操作的文件名,即"ledger.txt"。
- 第三个空要读取文件的所有行,应使用file.readlines(),所以填写readlines()。
- 第四个空是为了查看当前的消费记录,所以需要调用read_records()函数。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!