2020-08-15 做测试
2020-08-15 本文已影响0人
波波要改变自己呀
考虑到自己学习是在是没有方向,不知道怎么系统去学。
同时也确实有一些数据分析岗位需要的知识没有掌握,决定报了一个班。
今天做了一套测试题,认识到自己很多东西没有运用都忘了。
想想自己才刚毕业7个多月,还是学的IT专业有点惭愧。
为了以后好好努力吧。
附上测试题以及笔记:
SQL:
基础检测部分:
- 查询在 SC 表存在成绩的学生信息,要求显示学号id、姓名、出生年月、性别、课程id、分数(10分)
【一次过】
select s.SId,s.Sname,s.Sage,s.Ssex,c.CId,c.score
from Student s right join SC c
on s.SId=c.SId;
答案
select
a.*,
b.*
from student a
inner join sc b
on a.sid=b.sid;
不会用 table.*
- 查询各个同学的总成绩和平均分(10分)
【一次过】
select s.SId,s.Sname,sum(c.score),avg(c.score) from
Student s right join SC c
on s.SId=c.SId
group by s.SId,s.Sname;
- 查询每门课都有几个学生(10分)
select c.CId,c.Cname,count(SC.score)
from Course c
join SC
on c.CId=SC.CId
group by c.CId,c.Cname;
第一次做的时候忘了用on
- 查询同时存在"01"课程和"02"课程的学生情况 (10分)
不会,附上答案
select
*
from sc a
inner join sc b
on a.sid=b.sid and a.cid='01' and b.cid='02';
知识漏洞:一个表的自连接
- 查询「李」姓老师的数量(like的用法)(20分)
select count(Tid)
from Teacher
where Tname like "李%";
- 查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩(20分)
select s.SId, s.Sname, avg(SC.score) as avgScore
from Student s
join SC
on s.Sid=SC.SId
group by s.SId, s.Sname
having avgScore>=60;
- 查询"01"课程比"02"课程成绩高的学生的信息及课程分数 (20分)
【错】
select * from
(select * from Student join SC on Student.SId=SC.SId where SC.CId="01") sone
join
(select * from Student join SC on Student.SId=SC.SId where SC.CId="02") stwo
on sone.Sid=stwo.Sid
where sone.score>stwo.score;
select
*
from sc a
left join student d
on a.sid=d.sid
inner join sc b
on a.sid=b.sid and a.cid='01' and b.cid='02'
where a.score>b.score;
知识漏洞:还是一个表的自连接
进阶部分:
此部分选做,完成上面部分即可,如果完成也一起计分
-
查询存在"01"课程但可能不存在"02"课程的情况(不存在时显示为 null ) (10分)
-
查询不存在"01"课程但存在"02"课程的情况(10分)
python:
基础检测部分:
- 定义一个列表:
array = [‘d’,’a’,’t’,’a’,’_’’f’,’r’,’o’,’g’],请使用空白字符把内容都拼接起来(列表 join 的用法)(20分)
(没看懂题目是要打印出来的意思)
array = ['d','a','t','a','_','f','r','o','g']
print(" ".join(array))
- 定义一个字典:
dict = {"english":60,"math":80,"music":100} ,请遍历字典按照 “englist的分数为:60” 的方式打印各科成绩(字典属性 items 的用法)(20分)
不会
dict = {"english":60,"math":80,"music":100}
for key,value in dict.items():
print("%s的分数是:%s"%(key,value))
- 求1-100 的累加和(while循环)(20分)
total=0
i=1
while i <=100:
total+=i
i+=1
print(total)
- 输出【1,100】 之间的偶数(for循环判断)(20分)
太久没用了都忘了余数用%,好难过都不敢说自己学过python了
for i in range(1,101):
if i%2!=1 :
print(i)
- 定义一个计算面积的 area 函数,函数有 width、height 长宽两个参数,使得传入长宽就可以打印出面积(函数的定义)(20分)
def area(width,height):
return width*height
area(3,2)
进阶部分:此部分选做,完成上面部分即可,如果完成也一起计分
- 打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数(100-999),其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。(10分)
for i in range(100,999):
if i == int(str(i)[0])**3+int(str(i)[1])**3+int(str(i)[2])**3:
print(i)
- 请用面对对象的思想编写一个小游戏,人狗大站,2个角色,人和狗,游戏开始后,生成2个人,3条狗,互相混战,人被狗咬了会掉血,狗被人打了也掉血,狗和人的攻击力,具备的功能都不一样。(定义 类+对象方法)(10分)
应该算是开放题,但是我觉得条件太少直接放弃了
class People():
agressivity = 10
life_value = 100
def __init__(self,name):
self.name = name
def attack(self,dog):
dog.life_value -= 10
def __str__(self):
return '人%s剩余生命值:%s,状态值%s'%(self.name,self.life_value,self.agressivity)
class Dogs():
agressivity = 15
life_value = 80
def __init__(self,name):
self.name = name
def attack(self,people):
people.life_value -= 10
def __str__(self):
return '狗%s剩余生命值:%s,状态值%s'%(self.name,self.life_value,self.agressivity)
p1 = People('Tom')
p2 = People('Jack')
d1 = Dogs('niker')
d2 = Dogs('geeker')
d3 = Dogs('chaox')
print(p1)
print(p2)
p1.attack(d1)
print(d1)
手动题:
- pandas 读取文件 order_info_utf.csv 保存到 mysql 库中(使用 read_csv +to_sql 函数)(10分)
mysql表结构为:
CREATE TABLE `orderinfo` (
`orderid` int(11) NOT NULL,
`userid` int(11) DEFAULT NULL,
`isPaid` varchar(100) DEFAULT NULL,
`price` float DEFAULT NULL,
`paidTime` varchar(30) DEFAULT NULL)
放弃了因为知道python怎么用pandas.read_csv(),但不会链接数据库
知识漏洞:不会python链接数据库
import pandas as pd
import sqlalchemy
engine=sqlalchemy.create_engine('mysql+pymysql://root:mysql@localhost:3306/data')
# 读取数据
df=pd.read_csv('order_info_utf.csv',names=['orderid','userid','ispaid','price','paidtime'])
# 写入数据到 mysql
# 还有参数if_exists,表示有则插入
df.to_sql('orderinfo',engine,index=False,if_exists='append')