函数:定义与调用
任务:定义一个函数,将一个二维列表拉直转化为一维列表(扁平化)。
测试输入:5,6
预期输出:
[-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 333, 334, 335, 336, 337, 338]
#任务:定义一个函数,将一个二维列表拉直转化为一维列表(扁平化)
def flatten(alist):
"""二维列表扁平化
"""
result=[]
# ********** Begin *********#
for i in range(2):
for j in range(len(alist[i])):
result.append(alist[i][j])
# ********** End **********#
return result
#创建一个二维列表
M=eval(input()) # eval将输入数据转回原来类型
N=eval(input())
matrix = [list(range(-10,M*2,2)), list(range(333,333+N))]
# ********** Begin *********#
#调用函数,结果保存到rs
rs=flatten(matrix)
# ********** End **********#
print(rs)
eval()函数作用:
我们在从键盘输入数据时,Python接收的是字符串类型,
这时我们可以使用eval()函数,将输入的数据进行还原。
1) 比如:键盘输入数字10
n = input() # 类型是str
m = eval(input()) # 这里用eval(),类型变回int
2)比如:输入列表[1,2,3]
n = input() # 类型是str
m = eval(input()) # 这里用eval(),类型变回list类型
3)输入元组(),也一样......
9)编写函数,生成fibonacci数列,并完成数值计算。
要求:1)定义一个函数,生成并返回fibonacci数列的前N项,[0,1,1,2,3,5,8…]
2) 求该数列前N项数据的和,结果保存在total中。
测试输入:7
预期输出:
[0, 1, 1, 2, 3, 5, 8]
20
"""
1)定义一个函数,生成并返回fibonacci数列的前N项,[0,1,1,2,3,5,8...]
2) 求该数列前N项数据的和,保存在total
"""
num=eval(input())
list=[]
total=0
def gen_list(N):
# ********** Begin *********#
a,b=0,1
for i in range(N):
list.append(a)
a,b=b,a+b
return list
# ********** End *********#
print(gen_list(num))
for j in list:
total=j+total
10)检查车牌
要求:实现一个检查函数:
要求车牌第一位必须是“苏”,第2位必须是A-Z大写字母中的一个;
要求车牌总长度为7,后续5位,由阿拉伯数字和大写字母构成
若合法,返回True,非法返回False。
测试输入:苏D1888
预期输出:
False
def check_license(vehicle_license):
# ********** Begin *********#
if vehicle_license[0] != '苏':
return False
elif len(vehicle_license) != 7:
return False
elif (vehicle_license[1] < 'A' and vehicle_license[1] > 'Z'):
return False
for i in range(2, len(vehicle_license)):
#print(vehicle_license[i])
if (vehicle_license[i] >= 'A' and vehicle_license[i] <= 'Z') or (vehicle_license[i] >= '0' and vehicle_license[i] <= '9'):
pass
else:
return False
return True
# ********** End *********#
license_js = input()
#print(len(license_js))
rs = check_license(license_js)
print(rs)
11)百钱买鸡
本关任务:编程求解百钱买百鸡问题。
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱。现在需要用100文钱买一百只鸡,其中公鸡,母鸡,小鸡每种至少一只。
求解所有的购买方案。
编程求解百钱买百鸡问题。要求打印输出全部方案,每个方案一行。按照公鸡、母鸡、小鸡的顺序,分别打印数值,数值间用一个空格分隔。
输出示例:
4 18 78
"""
编程实现:百钱买百鸡
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有
请打印输出全部方案
"""
money=100
# ********** Begin *********#
for i in range(1,100):
for j in range(1,100):
if ((i*5+j*3+(100-i-j)/3)==money):
print(f'{i} {j} {100-i-j}')
12)文本简单加密
加密方法:
每个字母,都用位于字母表中其后第2个位置的字母替换,即a用c换,b替换为d;
y替换为a,z替换为b;
大写字母类似处理,用后2位的大写字母替换
相关知识:
涉及字符ASCII知识。
ord()返回字母的ASCII码
chr()根据ASCII值返回对应字母
ASCII码可以进行数值计算
# #综合
# #任务,加密
# #提示:ord()返回字母的ascii码,chr()根据ascii值返回对应字母
scarborough_fair="""Are you going to scarborough fair
你要去斯卡布罗集市吗
Parsley sage rosemary and thyme
芜荽 鼠尾草 迷迭香和百里香
Remember me to one who lives there
给我捎个口信给一位居住在那里的人
He once was a true love of mine
他曾经是我真爱的恋人
Tell him to make me a cambric shirt
告诉他为我做一件细麻纱布衬衫
Parsley sage rosemary and thyme
芜荽 鼠尾草 迷迭香和百里香
Without no seams nor needle work
要做的天衣无缝
Then he'll be a true love of mine
那么他就是我真爱的人"""
# # ********** End *********##将歌词转为列表
song_list = scarborough_fair.split('\n')
# ********** Begin *********#
#提取歌词中的全部英文歌词,存入列表English中,每行歌词为一个列表元素
English = []
for i in range(len(song_list)):
if i % 2 == 0:
English.append(song_list[i])
print(English[-2:])
#加密变换
#每个字母,都用位于字母表中其后第2个位置的字母替换,即a用c换,b替换为d,
#y替换为a,z替换为b,大写字母类似处理,用后2位的大写字母替换
#按行打印变换后的结果
for i in range(len(English)):
for j in range(len(English[i])):
if English[i][j].isalpha():
if English[i][j] == 'y':
English[i] = English[i][:j] + 'a' + English[i][j+1:]
elif English[i][j] == 'z':
English[i] = English[i][:j] + 'b' + English[i][j+1:]
else:
English[i] = English[i][:j] + chr(ord(English[i][j])+2) + English[i][j+1:]
13)处理文件中的数据
根据提示,编码实现read_by_csv函数调用、单列数据的最大值、单列数据的平均值计算。
提示:
注意数据类型是否浮点数或者整数。
import csv
def read_by_csv(filename):
"""读取csv数据文件,文件的第一行是表头,舍弃,从第2行开始返回数据列表,
每行数据对应列表中一个元组
"""
content=[]
with open(filename,'r',newline='') as csvfile:
reader = csv.reader(csvfile,delimiter=',')
header = next(reader)
for line in reader:
content.append(line)
return content
MAX=0
AVG=0
# ********** Begin *********#
#调用read_by_csv函数,读取数据文件'step2/stocks.csv',结果保存到变量data
data=read_by_csv('step2/stocks.csv')
# ********** End **********#
print(data[-1])
# print(data)
MAX=0
sum=0
# ********** Begin *********#
#求最后一列数据中的最大值,赋给变量MAX
for i in range(6):
if float(data[i][5])> MAX:
MAX=float(data[i][5])
sum =sum+float(data[i][1])
AVG=sum/6
#求第二列数据的平均值,赋给变量AVG
# ********** End **********#
print('%.1f' %MAX)
print('%.10f' %AVG,end='')