一、编程题
1、36.打开一个由小写英文组成的文本文件'old.txt',将该文件中的每一个字母加密后写入到一个新文件'new.txt',加密的方法是:a变成b,b变成c……,z变成a,其它字符不变化(不考虑文件路径)
file=open("old.txt","r")
line=file. ①
list=[]
while line:
for i in range( ② ):
if line[i].islower():
jm= ③
list.append(chr(jm))
else:
list.append(line[i])
line=file.readline()
s=''.join(list)
file=open("new.txt","w+")
④
file.close()
参考答案:①readline()②len(line)③ord(line[i])+1④file.write(s)
解析:【喵呜刷题小喵解析】:
①:需要读取文件内容,故应该使用readline()函数,用于读取文件的一行。
②:由于要遍历行中的每个字符,所以应该使用len(line)来获取行中字符的数量。
③:根据题目要求,需要将小写字母进行加密,即将a变成b,b变成c,以此类推,z变成a。因此,可以使用ord(line[i])+1来获取加密后的ASCII码,然后将其转换为字符。
④:将加密后的字符串写入新文件,故应该使用file.write(s)函数。
2、37.使用Python的sqlite3库完成以下操作:
1.创建一个名为cpu的数据库文件,并创建一张Rate的表(表有三个字段:ID、Rate、updatetime)
2.记录下十秒钟cpu相关数据,并删除第id为1的数据。
import sqlite3
import datetime
import psutil #获取cpu当前占比
conn = sqlite3.connect(" ① ")
creatsql = "create table Rate(ID integer primary key, Rate float,updatetime time)"
②
cur.execute(creatsql)
conn.commit()
insertsql = "insert into Rate(ID,Rate,updatetime) values(%d,%f,'%s')"
checksql = "select * from Rate"
for x in range(0,10):
nowtime = datetime.datetime.now()
nowtime = nowtime.strftime('%Y-%m-%d %H:%M:%S')
cpu_per = float(psutil.cpu_percent(1))
cur. ③ (insertsql % (x,cpu_per,nowtime))
conn.commit()
cur.execute(checksql)
data = cur.fetchall()
delsql="delete from Rate where ID=%d"
cur.execute(delsql %1)
conn.commit()
④
conn.close()
参考答案:1. 创建一个名为cpu的数据库文件,并创建一张Rate的表(表有三个字段:ID、Rate、updatetime)```pythonconn = sqlite3.connect("cpu.db")creatsql = "create table Rate(ID integer primary key, Rate float,updatetime text)"cur.execute(creatsql)conn.commit()```2. 记录下十秒钟cpu相关数据,并删除第id为1的数据。```pythoncur = conn.cursor()insertsql = "insert into Rate(ID,Rate,updatetime) values(%d,%f,'%s')"for x in range(0,10):nowtime = datetime.datetime.now()nowtime = nowtime.strftime('%Y-%m-%d %H:%M:%S')cpu_per = float(psutil.cpu_percent(1))cur.execute(insertsql % (x,cpu_per,nowtime))conn.commit()cur.execute(checksql)data = cur.fetchall()delsql="delete from Rate where ID=?"cur.execute(delsql, (1,))conn.commit()conn.close()```
解析:【喵呜刷题小喵解析】:
首先,我们需要在Python中导入sqlite3库,用于与SQLite数据库进行交互。然后,我们创建一个名为"cpu.db"的数据库文件,并使用sqlite3.connect()函数建立与数据库的连接。
接着,我们创建一个名为"Rate"的表,该表有三个字段:ID(整数类型,主键)、Rate(浮点类型)、和updatetime(字符串类型,表示时间)。
然后,我们使用psutil库获取CPU的当前使用率,并使用datetime库获取当前时间。在循环中,我们依次插入10条数据,每条数据包括ID、CPU使用率、和时间。
在插入完所有数据后,我们执行一条查询语句,获取所有的数据,并删除ID为1的数据。最后,我们关闭数据库连接。
在解析过程中,我们注意到原始代码中存在一些错误,例如:
1. 数据库文件名未指定,我们将其指定为"cpu.db"。
2. 表结构定义中的"updatetime"字段类型错误,应为"text"类型,而不是"time"类型。
3. 在插入数据时,原始代码使用了字符串格式化,但这种方式容易引发SQL注入攻击,我们使用问号占位符和元组传递参数的方式,更加安全。
4. 在删除数据时,原始代码使用了字符串格式化,同样容易引发SQL注入攻击,我们同样使用问号占位符和元组传递参数的方式,更加安全。
3、38.创建一个学生类,存储学生的姓名、语文成绩、英语成绩和数学成绩,根据成绩计算相应的等级,成绩≥90为'A',成绩∈[80,90]为'B',成绩∈[60,80]为'C',成绩≤60为'D'。创建一个班级类,该类有班级名称和学生2个属性,显示班级所有学生的姓名及相应的等级。程序运行效果如下图所示。
程序代码如下:
class stu:
def __init__(self,name,chinese,english,math):
self.name=name
self.c= chinese
self.e= english
①
lis=[self.c,self.e,self.m]
self.lis=lis
def level(self):
for i in range(3):
if
②
:
self.lis[i]='A'
elif self.lis[i]>80:
self.lis[i]='B'
elif self.lis[i]>60:
self.lis[i]='C'
else:
self.lis[i]='D'
return self.lis
def show(self):
print(f'姓名:{self.name},等级:{
③
}')
class lesson:
def __init__(self, name, students=[]):
self.students = students
self.class_name = name
def show_student(self):
for stu in self.students:
④
students = [ stu('jack',90,80,90),
stu('candy',95,88,69),
stu('cindy',66,76,39),
stu('frank',61,87,44),
stu('tony',20,65,49)]
class1 = lesson("高一(1)班",students)
⑤
请在划线处填入正确的代码。
参考答案:br />①处代码应为:```pythonself.m = mathlis = [self.c, self.e, self.m]self.lis = lis```②处代码应为:```pythonif self.lis[i] >= 90:```③处代码应为:```pythonself.lis[i]```④处代码应为:```pythonstu.show()```⑤处代码应为:```pythonclass1.show_student()```
解析:【喵呜刷题小喵解析】
根据题目要求,我们需要创建一个学生类和一个班级类。学生类需要存储学生的姓名、语文成绩、英语成绩和数学成绩,并根据成绩计算相应的等级。班级类需要存储班级名称和学生列表,并显示班级所有学生的姓名及相应的等级。
在学生类中,我们首先定义了`__init__`方法来初始化学生的姓名和成绩,并将语文、英语和数学成绩存储到`self.c`、`self.e`和`self.m`属性中。然后,我们创建一个列表`lis`,将语文、英语和数学成绩存储到该列表中,并将该列表赋值给`self.lis`属性。
接下来,我们定义了一个`level`方法,用于计算学生成绩的等级。在方法中,我们使用一个循环遍历`self.lis`列表,根据成绩计算等级,并将结果存储到`self.lis`列表中。最后,我们返回`self.lis`列表。
然后,我们定义了一个`show`方法,用于显示学生的姓名和等级。在方法中,我们使用`print`函数输出学生的姓名和等级。
在班级类中,我们定义了`__init__`方法来初始化班级名称和学生列表。然后,我们定义了一个`show_student`方法,用于显示班级所有学生的姓名及相应的等级。在方法中,我们使用一个循环遍历学生列表,调用每个学生的`show`方法,显示学生的姓名和等级。
最后,我们创建了一个学生列表,并将该列表赋值给`students`变量。然后,我们创建了一个班级对象,将班级名称和学生列表作为参数传递给`__init__`方法,并将该对象赋值给`class1`变量。最后,我们调用`class1.show_student()`方法,显示班级所有学生的姓名及相应的等级。
根据题目要求,我们需要在划线处填入正确的代码。在①处,我们需要将`self.m`赋值给`self.m`属性,并将语文、英语和数学成绩存储到`lis`列表中,并将该列表赋值给`self.lis`属性。在②处,我们需要将条件判断语句修改为`if self.lis[i] >= 90:`。在③处,我们需要将`self.lis[i]`作为参数传递给`print`函数,输出学生的等级。在④处,我们需要调用每个学生的`show`方法,显示学生的姓名和等级。在⑤处,我们需要调用`class1.show_student()`方法,显示班级所有学生的姓名及相应的等级。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!