上海交通大学python期末考试样题加解析_上海交通大学python期末考试样题加解析...

该程序设计包括两个部分:一是使用分而治之和递归方法生成序列的全排列,例如序列[1,2,3]的全排列;二是读取文件A中的数值行,并计算每行数值的平均值,将结果写入文件B。全排列算法通过递归地交换序列元素来实现,文件处理部分则实现了读取、计算平均值和写入新文件的功能。
摘要由CSDN通过智能技术生成

五、程序设计:15分.

(1) 用分而治之(divide and conquer)和递归方法设计程序:产生并打印一个序列的全排列.

例如,序列[1,2,3]的全排列123,132,213,231,312,321可以这样获得:

1为前缀, 后接[2,3]的全排列 2为前缀, 后接[1,3]的全排列 3为前缀, 后接[1,2]的全排列 而[2,3]等序列的全排列依此类推.

下面给出了这个程序的部分代码,在理解上述算法的基础上补足所缺的代码. # 函数perm(list,k,m):产生前缀为list[0:k]后接list[k:m+1]的全排列 def perm(list,k,m):

if k == m: for i in range(m+1)① : print list[i], print else:

for i in range(k,m+1) ② : list[k],list[i] = list[i],list[k] perm(list,k+1,m) ③ list[k],list[i] = list[i],list[k] myList = input(“Input a list([1,2,3,...]): “) perm(myList,0, len(myList)-1 ④ )

(2) 编写程序: 输入一个文件A, A中每行包含若干数值.生成文件B, B中每行是A中对应行的数值的平均值. Import string

fileA = raw_input(“Enter a data file: ”) infile = open(fileA,?r?) outfile = open (?B.dat?,?w?)

line = infile.readline() while line != “”: sum = 0.0 count = 0 for xStr in string.split(line): sum = sum + eval(xStr) count = count + 1 avg = sum/count outfile.write(str(avg)+?n?) line = infile.readline()

infile.close() outfile.close()

A 卷 总 5 页 第 5 页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值