简答编程复习题参考
randrange是前闭后开,randint是前闭后闭
A = [1,2,3,3,4,4,5,5,5]
A = list(set(A))
print(A)
import random
tmp = ""
for i in range(4):
n = random.randrange(0,2)
if n == 0:
tmp += chr(random.randrange(65,91))
else:
tmp += str(random.randrange(0,10))
print(tmp)
error_num = 0
while True:
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'seven' and password == '123':
print("登录成功")
break
else:
print("登录失败")
error_num += 1
if error_num == 3:
print("已输错三次")
exit()
else:
continue
a = 2
sum = 0
while(a<=100):
if a%2 ==0:
sum += a
else:
sum -= a
a+= 1
print(sum)
12、写代码,有如下列表,按照要求实现每一个功能(所有练习题同样适用于元组)
li = ['alex','eric','rain']
a.计算列表长度并输出
b.列表中追加元素"seven",并输出添加后的列表
c.请在列表的第1个位置插入元素 "Tony",并输出添加后的列表
d.请修改列表第2个位置的元素为 "Kelly",并输出修改后的列表
e.请删除列表中的元素"eric",并输出修改后的列表
f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
g.请删除列表中的第3个元素,并输出删除元素后的列表
h.请删除列表中的第2至4个元素,并输出删除元素后的列表
i.请将列表所有的元素反转,并输出反转后的列表
j.请使用for、len、range 输出列表的索引
k.请使用enumrate输出列表元素和序号(序号从 100 开始)
l.请使用for循环输出列表的所有元素
li = ['alex','eric','rain']
# a.计算列表长度并输出
print(len(li))
# b.列表中追加元素"seven",并输出添加后的列表
li.append("seven")
print(li)
# c.请在列表的第1个位置插入元素 "Tony",并输出添加后的列表
li.insert(0,"Tony")
print(li)
# d.请修改列表第2个位置的元素为 "Kelly",并输出修改后的列表
li[1] = "Kelly"
print(li)
# e.请删除列表中的元素"eric",并输出修改后的列表
li.remove("eric")
print(li)
# f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
tmp = li.pop(1)
print(tmp)
print(li)
# g.请删除列表中的第3个元素,并输出删除元素后的列表
li.pop(2)
print(li)
# h.请删除列表中的第2至4个元素,并输出删除元素后的列表
li = li[0:1] + li[4:]
print(li)
# i.请将列表所有的元素反转,并输出反转后的列表
li.reverse()
print(li)
# j.请使用for、len、range 输出列表的索引
for i in range(len(li)):
print(i)
# k.请使用enumrate输出列表元素和序号(序号从 100 开始)
for index, val in enumerate(li, 100):
print(index," ",val)
# l.请使用for循环输出列表的所有元素
for i in li:
print(i)
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
# a. 请循环输出所有的 key
for i in dic:
print(i)
# b. 请循环输出所有的 value
for i in dic:
print(dic[i])
# c. 请循环输出所有的 key 和 value
for i in dic:
print("key:",i,"value:",dic[i])
# d. 请在字典中添加一个键值对, "k4":"v4",输出添加后的字典
dic.setdefault("k4","v4")
print(dic)
# e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
dic["k1"] = "alex"
print(dic)
# f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
dic["k3"].append(44)
print(dic)
# g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic["k3"].insert(0,18)
print(dic)
li = ["alex", "seven"]
dict = {}
for i, name in enumerate(li,10):
dict[i] = name
print(dict)
a = {"k1":"v1","k2":"v2"}
b = {"k3":"v3"}
a.pop("k1")
a.update(b)
print(a)
25、 map()函数第一个参数是fun,第二个参数是一般是list,第三个参数可以写list,也可以不写,根据需求
a = [1,2,3,4,5]
def fn(x):
return x**2
res = map(fn,a)
res = [i for i in res if i > 10]
print(res)
import re
str = '
res = re.findall(r'
print(res)
24、字典根据键从小到大排序dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
list = sorted(dict.items(),key=lambda i:i[0],reverse=False)
print("按键排序后的列表:",list)
new_dict = {}
for i in list:
new_dict[i[0]] = i[1]
print("新字典:",new_dict)
26、字符串a = "not 404 found 张三 99 深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
import re
a = "not 404 found 张三 99 深圳"
list = a.split(" ")
res = re.findall("\d+|[a-zA-Z]+",a)
# print(res)
for i in res:
if i in list:
list.remove(i)
print(list)
new_str = " ".join(list)
print(new_str)
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = [i for i in a if(i%2==1)]
print(res)
str = str(input())
tmp = list(str)
tmp.reverse()
re_str = "".join(tmp)
print(re_str)
或者
str = str(input())
re_str = str[::-1]
print(re_str)
6、一行代码实现对列表a中的偶数位置的元素进行加3后求和
sums=sum(map(lambda x:x+3,list[1::2]))
7、List = [-2, 1, 3, -6],如何实现以绝对值大小从小到大将 List 中内容排序
List = [-2, 1, 3, -6]
List.sort(key=abs)
print(List)
8、合并两个list:
a = [1,2,3]
b = [4,5,6]
c = a+b
print(c)
9、什么是lambda函数?它有什么好处?另外python在函数编程方面提供了些什么函数和语法?
lambda是Python中的匿名函数。它语法简单,简化代码,不会产生命名冲突,污染命名空间。Python提供了map,reduce,filter等函数方法,提供了装饰器,闭包等语法
10、详细说说tuple、list、dict的用法,它们的特点
tuple 元祖,固定长度不可变的顺序容器,访问效率高,是和存储一些常量数据,可以作为字典的键使用
list 列表,是长度可变有序的数据存储容器,。可以通过下标索引取到相应的数据
dict 字典,长度可变的hash字典容器。存储的方式为键值对,可以通过相应的键获取相应的值,key支持多种类型
alist.sort(key=lambda x:x['age'], reverse=True)
题目3: 设计一个函数,统计字符串中英文字母和数字各自出现的次数
def count_letter_number(string):
letter_count = 0
digit_count = 0
for ch in string:
if 'a' <= ch <= 'z' or 'A' <= ch <= 'Z':
letter_count += 1
elif '0' <= ch <= '9':
digit_count += 1
return letter_count, digit_count
题目5: 设计一个函数,计算字符串中所有数字序列的和
import re
def sum_num_seq(string):
mylist = re.findall('\d+',string)
my_sum = 0
for num in mylist:
my_sum += int(num)
return my_sum
题目6:从一组单词库中,随机抽取一个单词,打乱顺序后输出,提示用户猜测正确单词,允许猜测最大次数为5次。单词库如下:
Wordlist=(‘pumpkin’,‘potato’,‘grape’,‘sandwich’,‘cupcake’,‘juice’,‘study’)
---------------------
import random
Wordlist = ('pumpkin','potato','grape','sandwich','cupcake','juice','study')
word = Wordlist[random.randrange(0,len(Wordlist))]
cor_word = word
re_word = ""
for i in range(len(word)):
tmp = random.randrange(0,len(word))
re_word += word[tmp]
word = word[0:tmp]+word[tmp+1:]
sum_number = 0
print(re_word)
while(True):
cai = input()
if cai == cor_word:
print("恭喜你猜对了!")
break
else:
print("很可惜,你猜错了!")
sum_number += 1
if sum_number >=5:
print("你已经猜5次了!")
break
题目7:购物车功能要求:
要求用户输入总资产,例如: 2000
显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。购物车列表如下:
carts=[
{"name":"电脑","price":1999,”num”:1},
{"name":"鼠标","price":10, ”num”:2},
{"name":"游艇","price":20, ”num”:1}
]。
---------------------
carts=[
{"name":"电脑","price":1999,"num":1},
{"name":"鼠标","price":10, "num":2},
{"name":"游艇","price":20, "num":1}
]
sum = 0
for i in carts:
sum += int(i["price"]) * int(i["num"])
money = int(input())
if money >= sum:
print("购买成功!")
else:
print("余额不足")
题目8:编程实现抽奖小程序:从学号1-60号的同学中随机抽取一位同学,再从1到4等奖中随机抽取一个奖项,奖品信息保存在元组中(1等奖笔记本,2等奖苹果手机,3等奖kindle,4等奖迷你音响)。最后输出:学号和中奖情况,例如:中奖号码:20号,奖品:2等奖 苹果手机一部。
---------------------
import random
reward = ("1等奖 笔记本一部","2等奖 苹果手机一部","3等奖 kindle一部","4等奖 迷你音响一个")
sno = random.randint(1,60)
reward_no = random.randint(0,3)
print("中奖号码:",sno,"号,奖品:",reward[reward_no])
Numpy:高效数据处理
Pandas:数据探索和数据分析
Pygame:游戏开发
Matplotlib:作图,可视化分析
Request:网络爬虫,获取网页
Scipy:数值分析,矩阵计算
Json:json解码,转换
Time:时间访问、转换
Random:生成伪随机数
Os:操作系统接口
Sys:系统相关函数和参数
1、确定目标
2、数据取样:随机取样、等距取样、分层取样、从起始顺序取样、分类抽样
3、数据探索:异常值分析、缺失值分析、相关性分析和周期分析
4、数据预处理:数据筛选、数据变量转换、缺失值处理、坏数据处理、数据标准化、主成分分析、属性选择、物选择规约
5、数据建模:model(分类、聚类、关联规则、时序模式或者智能推荐)
6、模型评价:找出最好的模型
plot() 绘制线性二维图,折线图
pie() 绘制饼图
hist() 绘制直方图
boxplot() 绘制箱形图 Pandas
数据质量分析:缺失值,异常值分析,
数据特征分析:分布分析,对比分析,周期分析,贡献度分析,统计量分析,相关性分析
1-数据清洗,
1)缺失值处理,三种方法:删除记录、数据插补、不处理
2)异常值处理,四种方法:删除含有异常值的记录、视为缺失值、平均值修正、不处理。
2-数据集成
(1) 实体识别:同名异义、异名同义、单位不统一
(2) 冗余属性识别,可利用相关性分析对属性进行检测
3-数据变换:
1) 简单函数变换:平方、开放、取对数、差分运算
2) 规范化:最小-最大规范化、零-均值规范化、小数定标规范化
3) 连续属性离散化: 等宽法、等频发、基于聚类分析方法
4) 属性构造
5) 小波变换:信号分析手段,小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用
4-数据规约
mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。
1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型 与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性
2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成
3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用