一、编程题
1、36.当前,我国正在开展新型冠状病毒疫苗接种,自今年 2 月份以来,许多学校的教职员工积极利用空余时间,到当地卫健部门指定的接种点去接种,为了帮助政教员小叶排摸全校教职员工接种情况,根据每天汇总的接种登记表(包含全校教职员工的姓名、组别、年龄、是否接种等信息,已转换为csv格式,见图1”),小徐利用 Python 编写了一个统计程序,方便向校领导汇报各教研组接种情况及全校接种比例等。该程序运行的部分界面如图2所示,请在程序划线处填入合适的代码。
import csv
f = open("/data/vi.csv", "r")
Vac_T = {"语文组": 0, "数学组": 0, "英语组": 0, "物理组": 0, "化学组": 0, "生物组": 0, "政治组":0,"历史组":0,"地理组":0,"技术组":0,"体音美组":0,"后勤组":0,"政教组": 0}
Vac_F = {"语文组": 0, "数学组": 0, "英语组": 0, "物理组": 0, "化学组": 0, "生物组": 0, "政治组":0,"历史组":0,"地理组":0,"技术组":0,"体音美组":0,"后勤组":0,"政教组": 0}
list1 =[]
zrs = 0
zu_max = 0
line = f.readline()
while line:
line = line.strip('\n')
data = line.split(",")
list1.append(data)
①
print(list1[:5])
print("--------------------------------------------")
f.close()
num = len(list1)
for i in range(num):
line_list = list1[i]
if ② :
Vac_T[line_list[1]] += 1
else:
Vac_F[line_list[1]] += 1
for i in Vac_T:
zu_per = Vac_T[i]/(Vac_T[i]+Vac_F[i])
if zu_per > zu_max:
zu_max = zu_per
zu = i
③
tot_per = int(zrs/num*10000+0.5)/100
print("各组接种人数:", Vac_T)
print("各组未接种人数:", Vac_F)
print("全校接种比例:", tot_per)
print("接种疫苗比例最高的组:", zu)
参考答案:
略
解析:【喵呜刷题小喵解析】:本题是一道编程题,需要根据给出的Python代码和提示,在划线处填入合适的代码。首先,需要读取csv文件,这里可以使用csv模块的reader函数。将csv文件读入后,通过遍历每一行数据,判断该行是否接种,如果是,则将对应组别的已接种人数加一,否则将对应组别的未接种人数加一。然后,需要找出接种比例最高的组,可以使用max函数和lambda表达式来实现。max函数可以找出字典中值最大的项,lambda表达式可以定义一个匿名函数,用于计算每个组别的接种比例。最后,将接种比例最高的组名输出即可。因此,划线处填入的代码为:```pythonreader = csv.reader(f)for row in reader:if row[3] == "是":Vac_T[row[1]] += 1else:Vac_F[row[1]] += 1print("接种比例最高的组:", max(Vac_T.items(), key=lambda x: x[1]/(x[1]+Vac_F[x[0]]))[0])```其中,row[3]表示csv文件中的第4列,即是否接种的列,如果是"是",则表示已接种,否则未接种。max函数和lambda表达式用于找出接种比例最高的组,并将其组名输出。
2、37.小强建立了一个简易的学生信息系统,使用SQlite进行数据的增加记录和修改记录操作,存储数据,每位学生的记录包含id、name和age这3个字段。程序运行界面如图所示。
程序运行时,显示数据库students.db中的数据表users中的所有记录,用户输入1表示增加记录,输入id、name和age后,记录将增加到数据库中。用户输入2表示修改记录,输入id、name和age后,根据id修改对应的name 和age的值。
程序代码如下:
import sqlite3
con = sqlite3.connect('students.db')
cursor = con.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS users( id int(8) primary key,
name varchar(18),
age int(8))
''')
cursor.close()
con.commit()
con.close()
def user_insert(user_id, user_name, user_age):
con = sqlite3.connect('students.db')
cursor = con.cursor()
cursor.execute("insert into users (id,name,age) values (?,?,?)", (user_id, user_name, user_age))
cursor.close()
con.commit()
con.close()
def user_select():
con = sqlite3.connect(' ① ')
cursor = con.cursor()
② ('select * from users')
print(cursor.fetchall())
cursor.close()
con.close()
def user_update(user_id, user_name, user_age):
con = sqlite3.connect('students.db')
cursor = con.cursor()
cursor.execute('UPDATE users SET name=?,age=? WHERE id =?',(user_name, user_age,user_id))
cursor.close()
con.commit()
con.close()
print("------------学生信息系统样例------------")
while True:
③
s = int(input("请输入操作符:1-增加记录,2-修改记录,3-退出系统"))
if ④ :
break
user_id = int(input("请输入id:"))
user_name = input("请输入name:")
user_age = input("请输入age:")
if s == 1: # 增加记录
⑤
print("插入成功!")
elif s == 2: # 修改记录
user_update(user_id, user_name, user_age)
print("修改成功!")
请在画线处填入正确的代码。
参考答案:
略
解析:【喵呜刷题小喵解析】这个Python程序是用来建立一个简易的学生信息系统的,它使用SQLite进行数据的增加、修改和显示操作。根据题目中的代码和描述,我们需要填入一些空白部分来完善这个程序。首先,`user_select()`函数是用来显示数据库中所有记录的。我们需要在这个函数中指定数据库名(`students.db`),并调用`cursor.execute()`执行SQL查询语句(`select * from users`)。然后,在`while True:`循环中,程序会提示用户输入操作符(1-增加记录,2-修改记录,3-退出系统)。根据用户输入的操作符,程序会执行相应的操作。如果用户输入3,程序会跳出循环,结束运行。在增加记录的操作中,程序会调用`user_insert()`函数,将用户输入的学生信息(id、name和age)插入到数据库中。在修改记录的操作中,程序会调用`user_update()`函数,根据用户输入的id,修改对应的name和age的值。注意,在`user_select()`函数中,数据库连接、游标创建、SQL查询语句执行、结果打印、游标关闭和数据库关闭等操作都封装在函数内部,这样可以保证代码的可读性和可维护性。同样,在`user_insert()`和`user_update()`函数中,也采用了类似的处理方式。在`while True:`循环中,程序使用了`if s == 3:`来检查用户是否输入了3,如果是,则跳出循环,结束运行。这样可以保证程序在用户选择退出时能够正常退出。另外,这个程序没有考虑用户输入错误的情况,例如用户输入了非数字字符或者输入的id不存在等情况。在实际使用中,可能需要增加一些错误处理机制,例如输入验证、异常处理等,来提高程序的健壮性。
3、38.编程定义一个类,实现求长方体体积,并输出当长方体的长度、宽度和高度分别为10、20和30时的体积,请保留小数点后两位数字。
请补全代码:
class Box():
def __init__( ① ):
② =length1
③ =width1
④ =height1
def volume(self):
return ⑤
my_box=Box(10,20,30)
print("长方体体积是%.2f"%my_box.volume())
参考答案:
略
解析:【喵呜刷题小喵解析】在定义类时,通常使用`__init__`方法作为类的构造函数,用于初始化对象的属性。在`__init__`方法中,我们通过参数接收长方体的长度、宽度和高度,并使用`self`关键字将这三个属性分别绑定到对象上。在本题中,我们需要在`__init__`方法中定义三个参数:`length1`、`width1`和`height1`,并将它们分别赋值给对象的属性`length`、`width`和`height`。在`volume`方法中,我们直接返回三个属性的乘积,即长方体的体积。最后,我们创建一个`Box`对象`my_box`,并传入长、宽、高分别为10、20和30的参数。然后,我们调用`my_box.volume()`方法获取长方体的体积,并使用格式化字符串输出保留小数点后两位的结果。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!