一、编程题
1、电视类问题
编写一个电视类,包括电视的品牌、型号、尺寸、价格等属性和开关电视、调节音量、切换频道等方法。再继承电视类创建一个智能电视类的子类,并分别创建它们的实例,测试它们的属性和方法。
class TV:
def①(self,brand,model,size,price):
self.brand=brand#品牌
self.model=model#型号
self.size=②#尺寸
self.price=price#价格
self.power=False
self.volume=50#体积
self.channel=1
def power_on(self):
self.power=True
def power_off(self):
self.power=False
def adjust_volume(self,volume):#调整体积大小
self.volume=volume
def switch_channel(self,channel):#切换频道
self.channel=channel
class SmartTV(TV):
def __init__(self,brand,model,size,price):
super().__init__(brand,model,size,price)
self.internet=False
def connect_internet(self):#开启联网
self.internet=True
def disconnect_internet(self):#关闭联网
③
def watch_online(self,url):#是否能看网络资源
if④:#判断是否联网
print("正在观看:",url)
else:
print("请先连接网络")
#创建普通电视和智能电视实例
tv1=TV("创维","LCD",55,3999)
tv2=⑤("小米","OLED",65,4999)
#测试普通电视的属性和方法
tv1.power_on()
tv1.adjust_volume(60)
tv1.switch_channel(3)
print("电视品牌:{},电视型号:{},电视尺寸:{}英寸,电视价格:{}元,电视状态:{},音量:{},频道:{}".format(tv1.brand,tv1.model,tv1.size,tv1.price,tv1.power,tv1.volume,tv1.channel))
#测试智能电视的属性和方法
tv2.power_on()
tv2.adjust_volume(70)
tv2.switch_channel(5)
tv2.connect_internet()
tv2.watch_online("https://www.cctv.com")
print("电视品牌:{},电视型号:{},电视尺寸:{}英寸,电视价格:{}元,电视状态:{},音量:{},频道:{},是否连接网络:{}".format(tv2.brand,tv2.model,tv2.size,tv2.price,tv2.power,tv2.volume,tv2.channel,tv2.internet))
参考答案:1. 在`TV`类的构造函数中,`①`处应填写`__init__`,表示类的初始化方法。2. `②`处应填写`size`,表示电视的尺寸。3. 在`SmartTV`类的`disconnect_internet`方法中,`③`处应填写`self.internet=False`,表示断开网络连接。4. 在`watch_online`方法中,`④`处应填写`self.internet`,表示判断电视是否连接网络。5. 在创建`SmartTV`实例时,`⑤`处应填写`SmartTV`,表示创建智能电视的实例。
解析:【喵呜刷题小喵解析】:
根据题目要求,我们需要编写一个电视类`TV`,包括电视的品牌、型号、尺寸、价格等属性和开关电视、调节音量、切换频道等方法。然后,我们需要继承电视类创建一个智能电视类的子类`SmartTV`,并分别创建它们的实例,测试它们的属性和方法。
在`TV`类中,我们需要定义构造函数`__init__`来初始化电视的属性,包括品牌、型号、尺寸、价格等。同时,我们还需要定义方法`power_on`、`power_off`、`adjust_volume`和`switch_channel`来分别实现电视的开关、调节音量和切换频道功能。
在`SmartTV`类中,我们需要继承`TV`类,并在其构造函数中初始化智能电视的属性,如联网状态等。同时,我们还需要定义方法`connect_internet`和`disconnect_internet`来分别实现智能电视的联网和断网功能。最后,我们还需要定义方法`watch_online`来测试智能电视是否能观看网络资源。
在创建实例和测试属性和方法时,我们需要按照题目要求分别创建`TV`和`SmartTV`的实例,并调用它们的属性和方法来进行测试。在测试时,我们需要按照题目要求输出相应的信息,以验证我们的代码是否正确实现了题目要求的功能。
2、学生基本情况
1.准备工作及功能实现
(1)建立一个空数据库Studase.db,按照如图所示的表机构,创建学生基本情况表students;
(2)为表students添加数据,内容是“学号——20210267、班级——1、姓名——孙玉洁、性别——女、身高——167”;
(3)删除表students中1班的学生信息;
(4)查询并输出表students的内容
根据要求,请不全代码。(本题无需运行通过,写入代码即可)
2.程序
import sqlite3
conn= ① ('Studase.db')
cursor=conn.cursor()
cursor.execute(''' ② students
(学号 ③ NOT NULL,
班级 INTEGER,
姓名 TEXT(10)NOT NULL,
性别 TEXT(1)NOT NULL,
身高 INTEGER);''')
cursor.execute("④('20210267',1,'孙玉洁','女',167)")
conn.commit()
cursor.execute("⑤ where 班级=1")
conn.commit()
cursor.execute("SELECT*FROM students")
for i in ⑥
print(i)
conn.close()
参考答案:1. 建立一个空数据库Studase.db,按照题目中所示的表结构,创建学生基本情况表students的代码为:```pythonconn = sqlite3.connect('Studase.db')cursor = conn.cursor()cursor.execute('''CREATE TABLE students(学号 TEXT NOT NULL,班级 INTEGER,姓名 TEXT(10) NOT NULL,性别 TEXT(1) NOT NULL,身高 INTEGER);''')conn.commit()```2. 为表students添加数据的代码为:```pythoncursor.execute("INSERT INTO students(学号,班级,姓名,性别,身高) VALUES ('20210267',1,'孙玉洁','女',167)")conn.commit()```3. 删除表students中1班的学生信息的代码为:```pythoncursor.execute("DELETE FROM students where 班级=1")conn.commit()```4. 查询并输出表students的内容的代码为:```pythoncursor.execute("SELECT * FROM students")for i in cursor.fetchall():print(i)```
解析:【喵呜刷题小喵解析】:
本题要求使用Python的sqlite3模块来操作数据库。首先,需要建立一个名为Studase.db的数据库,并在其中创建一个名为students的表,该表包含学号、班级、姓名、性别和身高五个字段。然后,向该表中插入一条数据,数据内容为学号20210267、班级1、姓名孙玉洁、性别女、身高167。接着,删除班级为1的学生信息。最后,查询并输出表students的内容。
在Python中,使用sqlite3模块来操作数据库的基本步骤包括:
1. 连接到数据库:使用sqlite3.connect()函数连接到数据库,返回一个连接对象。
2. 创建游标对象:使用连接对象的cursor()方法创建一个游标对象,用于执行SQL语句。
3. 执行SQL语句:使用游标对象的execute()方法执行SQL语句,如创建表、插入数据、删除数据等。
4. 提交事务:使用连接对象的commit()方法提交事务,将SQL语句的修改保存到数据库中。
5. 关闭连接:使用连接对象的close()方法关闭连接,释放资源。
根据题目要求,我们需要填写相应的SQL语句和Python代码。其中,SQL语句中的表名、字段名和值需要根据题目要求填写,Python代码中的变量需要用具体的值替换。在本题中,我们使用了学号、班级、姓名、性别和身高作为字段名,并将学号20210267、班级1、姓名孙玉洁、性别女、身高167作为插入数据的内容。在删除数据时,使用了班级为1作为条件。在查询数据时,使用了SELECT * FROM students作为查询语句。在输出数据时,使用了for循环遍历游标对象返回的结果,并使用print()函数输出每个结果。
3、随机列表问题
随机生成一个长度为 100 的整数列表,其元素范围为 1~100,将该列表以每10 个一行(元素之间以空格分隔)写入一个文本文件("record.txt"),将文本文件("record.txt")中的数字读入一个列表,并按数字的升序输出该列表。
注:enumerate()取出的两个值,一个为数的索引,一个为数的值
from random import randint
lis=[]
for i in range(100):
lis.append(randint(1,100))
with open("record.txt","①")as f:
str=""
for i,v in enumerate(lis):
str=str+"{}".format(v)
if②==0:
b=③(str+"\n")
str=""
lis_date=[]
with open("record.txt")as f:
for line in④:
line=line.strip()
data=line.split()
for v in data:
lis_date.append(eval(v))
last_date=⑤(lis_date)
print(last_date)
参考答案:根据题目要求,我们可以修改和完善给出的代码片段。以下是修正后的代码:```pythonimport random# 生成长度为100的整数列表lis = [random.randint(1, 100) for _ in range(100)]# 将列表以每10个数字为一行写入文本文件with open("record.txt", "w") as f:for i in range(0, len(lis), 10):f.write(" ".join(map(str, lis[i:i+10])) + "\n")# 从文本文件中读取数字并放入列表lis_date = []with open("record.txt") as f:for line in f:lis_date.extend(map(int, line.strip().split()))# 按数字升序输出列表last_date = sorted(lis_date)print(last_date)```
解析:【喵呜刷题小喵解析】:
1. 首先,我们导入了`random`模块,用于生成随机数。
2. 生成长度为100的整数列表,使用列表推导式,`random.randint(1, 100)`生成1到100之间的随机整数,`for _ in range(100)`循环100次。
3. 将列表以每10个数字为一行写入文本文件。使用`with open("record.txt", "w")`打开文件,使用`for i in range(0, len(lis), 10)`循环10个数字为一行,使用`f.write(" ".join(map(str, lis[i:i+10])) + "\n")`将数字写入文件,每个数字之间用空格分隔,每行末尾添加换行符。
4. 从文本文件中读取数字并放入列表。使用`with open("record.txt") as f`打开文件,使用`for line in f`循环读取每一行,使用`line.strip()`去除行末的空白字符,使用`line.split()`将行分割成数字列表,使用`map(int, line.strip().split())`将字符串列表转换为整数列表,使用`lis_date.extend()`将整数列表添加到`lis_date`列表中。
5. 按数字升序输出列表。使用`sorted(lis_date)`将列表排序,使用`print(last_date)`输出排序后的列表。
注意:题目中给出的代码片段存在语法错误和逻辑错误,例如`with open("record.txt","①")`中的`"①"`是无效的语法,`if②==0:`中的`②`也是无效的语法,`b=③(str+"\n")`中的`③`是无效的语法,`for line in④:`中的`④`是无效的语法,`last_date=⑤(lis_date)`中的`⑤`也是无效的语法。修正后的代码使用`with open("record.txt", "w")`打开文件以写入模式,使用`with open("record.txt") as f`打开文件以读取模式,使用`f.write()`写入文件,使用`f.read()`读取文件,使用`line.strip().split()`分割行,使用`map()`和`list()`将字符串列表转换为整数列表,使用`sorted()`对列表进行排序。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!