目录
[一、选择题 每题 3 分,共 30 分](#一、选择题 每题 3 分,共 30 分)
[二、编程题 (共 70 分)](#二、编程题 (共 70 分))
一、选择题 每题 3 分,共 30 分
1.print("ab" + "c"*2)的结果是?( C )
A. abc2
B. abcabc
C. abcc
D. ababcc
2.程序代码如下
try:
number = int(input("请输入数字:"))
print("number:",number)
print("=hello")
except Exception as e: # 报错错误日志
print("打印异常详情信息: ",e)
else:
print("没有异常")
输入的是 1a 结果是?(D) X 正确答案:B
A. number: 1 打印异常详情信息: invalid literal for int() with base 10:
'1a'
B. 打印异常详情信息: invalid literal for int() with base 10:'1a'
C. hello=== 打印异常详情信息: invalid literal for int() with base 10:
'1a'
D. 以上都不正确
3. 关于面向对象的继承,以下选项中描述正确的是?( C) X 正确答案:B
A. 继承是指一组对象所具有的相似性质
B. 继承是指类之间共享属性和操作的机制
C. 继承是指各对象之间的共同性质
D. 继承是指一个对象具有另一个对象的所有属性
4.下面的语句哪个会无限循环下去?( B)
A. for a in range(10): time.sleep(10)
B. while 1<10: time.sleep(10)
C. while True: break
D. a = [3,-1,','] for i in a:
continue 5.下面这段代码运行结果是? numbers = [1, 2, 3, 4]
numbers.append([5,6,7,8])
print(len(numbers)) ( B)
A. 4
B. 5
C. 6
D. 8
6.以下关于循环控制语句描述错误的是哪一项______。( B)
A、Python 中的 for 语句可以在任意序列上进行迭代访问,例如列表、字符串
和元组。
B、在 Python 中 if...elif...elif...结构中必须包含 else 子句。
C、在 Python 中没有 switch-case 的关键词,可以用 if...elif...elif...来等
价表达。
D、循环可以嵌套使用,例如一个 for 语句中有另一个 for 语句,一个 while 语
句中有一个
for 语句等。
7、关于 Python 程序格式框架的描述,以下选项中错误的是(B)。
A.判断、循环、函数等语法形式能够通过缩进包含一批 Python 代码,进而表达
对应的语义
B.Python 语言可以不采用严格的"缩进"来表明程序的格式框架
C.Python 单层缩进代码属于之前最临近的一行非缩进代码,多层缩进代码根据
缩进关系决
定所属范围
D.Python 语言的缩进可以使用 Tab 键实现
8.关于列表的说法,描述有错误的是(D
)。
A.list 是一个有序的列表,没有固定大小
B.list 可以存放任意类型的元素
C.使用 list 时,其下标可以是负数
D.list 是不可变长的
9、以下关于字典操作的描述中,错误的是( D)
A. del()用于删除字典或者元素
B. clear()用于清空字典中的数据
C. len()方法可以计算字典中键值对的个数
D. keys()方法可以获取字典的值视图
10.下列有关函数的说法中,正确的是(C
)。
A.函数的定义必须在程序的开头
B.函数定义后,其中的程序就可以自动执行
C.函数定义后需要调用才会执行
D.函数体与关键字 def 必须左对齐
二、编程题 (共 70 分)
1.对一个列表进行处理,将该列表中的邮箱用户的号进行提取,输出号列表,使
用通用做法。
附上所有代码,并将运行结果截图。(10 分)
list1=["567322456@qq.com","22948593@qq.com","sina4532214@163.com"]
输出:
['567322456', '22948593', 'sina4532214']
2.编写函数,传入一个名字列表,例如:name = ['王者智慧','李有钱'],将所
有人名进行
脱敏处理,使用*替换除第一个字以外的其他字,要求有多少个字被替换则显示
几个*,返回
列表并输出,使用通用做法。附上所有代码,并将运行结果截图。(10 分)
输出:['王***','李**']
name = [ ' 王者智慧 ' , ' 李有钱 ' ]
for i in name :
for j in i :
if j != i [ 0 ]:
i = i . replace ( j , '*' )
print ( name )
X 本人重写:
3.定义一个学校人员类 SchoolPerson,其中,属性:姓名 sname、密码 spwd;
方法:打印
信息的 print_info 方法。
创建学生类 Student,继承自 SchoolPerson 类,添加额外属性:学号 sno。 添加方法:打印学生的所有信息 print_info 方法。
定义学生类的对象。输出如下:
姓名是:周杰伦,密码是:123456,学号是:s001
姓名是:刘德华,密码是:888888,学号是:s002
附上所有代码,并将运行结果截图。(10 分)
python
class SchoolPerson:
sname=""
spwd=""
def print_info(self):
print(f"姓名是:{self.sname},密码是:{self.spwd}")
def __init__(self,sname,spwd):
self.sname=sname
self.spwd=spwd
class Student(SchoolPerson):
sno=""
def print_info(self):
print(f"姓名是:{self.sname},密码是:{self.spwd},学号是:
{self.sno}")
def __init__(self,sname,spwd,sno):
super().__init__(sname,spwd)
self.sno=sno
if __name__=="__main__":
zhoujielun=Student("周杰伦","123456","s001")
liudehua=Student("刘德华
","888888","s002")zhoujielun.print_info()
liudehua.print_info()
4.有已知文件 t1.txt
t1.txt
利用文件操作读取内容并处理后写入到文件 t2.txt 中。t2.txt 格式如下:
附上所有代码,并将运行结果截图。(15 分)
with open ( "D: \\ t1.txt" , mode = 'r' , encoding = 'UTF-8' ) as f :
result = f . read ()
f . close ()
list1 =[]
dict1 ={}
with open ( "D: \\ t1.txt" , mode = 'a' , encoding = 'UTF-8' ) as g :
for i in result :
for j in i :
if j == i [ 0 ]:
dict1 [ 'id' ]= j
elif j == i [ 1 ]:
dict1 [ 'name' ]= j
elif j == i [ 2 ]: dict1 [ 'age' ]= j
elif j == i [ 3 ]:
dict1 [ 'phone' ]= j
elif j == i [ 4 ]: dict1 [ 'job' ]= j
list1 . append ( dict1 )
X 参考答案:
python
info=""
with open("/root/python/t1.txt",mode="r",encoding="utf-8") as f:
info=f.readlines()
f.close()
with open("/root/python/t2.txt",mode="w",encoding="utf-8") as f:
f.write("[\n")
dict1={}
for i in info:
list1=i.split(",")#分割为列表
dict1["id"]=list1[0]
dict1["name"]=list1[1]
dict1["age"]=list1[2]
dict1["phone"]=list1[3]
dict1["job"]=list1[4].replace("\n","")
f.write(str(dict1)+"\n")
f.write("]")
f.close()
5、在第三题的基础上完成,已知数据库表及数据如下:
create table if not exists student(
sname varchar ( 20 ),
spwd varchar ( 20 ),
sno varchar ( 10 ) primary key
) ;
insert into student values ( '周杰伦' , '123456' , 's001' ) ;
insert into student values ( '刘德华' , '888888' , 's002' ) ;
使用三层架构+mysql+html+flask 完成登录功能,
效果如下:
账号密码正确则提示登录成功,错误则提示登录失败
附上所有代码,并将运行结果截图。(25 分)
X 参考答案:
DAL.py:
python
import pymysql
class DBHelper:
#方法
def openDB(self):
global conn
conn=pymysql.connect(host="192.168.159.129",user="root",password="root123456",
database="test",charset="utf8")
def self.closeDB(self):
baoma.close()
conn.close()
#数据增删改
def edit(self,sql):
self.openDB()
baoma=conn.cursor()
result=baoma.execute(sql)
conn.commit()
self.closeDB()
return result
#查询一条
def selectOne(self,sql):
self.openDB()
baoma=conn.cursor()
baoma.execute(sql)
result=baoma.fetchone()
self.closeDB()
return result
#查询多条
def selectAll(self,sql):
self.openDB()
baoma=conn.cursor()
baoma.execute(sql)
result=baoma.fetchall()
self.closeDB()
return result
class StudentDAL(DBHelper):
def login(self,xuesheng):
sql=f"select * from student where sno='{xuesheng.sno}' and
spwd='{xuesheng.spwd}'"
return self.selectOne(sql)
python
from flask import Flask,render_template, request
from DAL import StudentDAL
from Model import Student
db=StudentDAL()
app=Flask(__name__)
@app.route("/")def index():
return render_template("login.html")
@app.route("/loginSubmit",methods=['POST'])
def addSubmit():
sno=request.form.get("sno")
spwd=request.form.get("spwd")
xuesheng=Student("",spwd,sno)
result=db.login(xuesheng)
if result!=None:
return "登录成功"
else:
return "登录失败"
if __name__=="__main__":
app.run(host="127.0.0.1",port="5000",debug=True)
Login.html:
html
<html>
<head>
<title>登录</title>
<meta charset="utf-8"/>
</head>
<body>
<h1>*****登录*******</h1>
<form method="post" action="/login">
<p>
账号:<input type="text" name="sno"/>
</p>
<p>
密码:<input type="password" name="spwd"/>
</p>
<p>
<input type="submit" value="登录"/>
</p>
</form>
</body>
</html>
我考试前还一脸自信的,结果真考到知识盲区了,再加上VSCODE远程连接一直没连上,心态有点崩。考的很差,我会继续努力的。