Python课程学习记录_16周作业

  • 1. 设计一个将两个有序列表合并成一个有序列表的函数:给定两个列表,从小到大排列,每个列表没有重复元素。将这两个列表合并成一个从小到大的列表,它包含输入的所有元素,但是没有重复元素。
    请按照要求实现下列函数,并将其定义为模块merge, 即存储在merge.py中:
    def merge(aList, bList):
    """aList and bList are two integer lists in ascending order.
    The function returns a new integer list in ascending order with all elements in aList and bList but no repetitions.
    for example, merge([2,3, 4,5],[1,3,5]) returns [1,2,3,4,5].
    """
    def merge(aList, bList):
    	l,r = 0,0
    	result=[]
    	while l<len(aList) and r<len(bList):
    		if aList[l] < bList[r]:
    			result.append(aList[l])
    			l += 1
    		else:
    			result.append(bList[r])
    			r += 1
    	result += aList[l:]
    	result += bList[r:]
    	result2=list(set(result))
    	return result2

    可参照内容中MIT幕课关于归并排序的归并实现录像。这里的归并与录像中的归并的区别是没有重复元素。
    2. 实现下列函数, 并将其定义为模块selection, 即存储在selection.py中:
    def selection(aList, i):
    """exchange aList[i] with the first smallest element in aList[i:], where i is a valid index. Don't change other elements. """
    函数的进一步解释请参照内容中的录像selection.mp4.
    def selection(aList, i):
    	temp_list=aList
    	smallest = i
    	for j in range(i+1,len(temp_list)):
    	#如果找到比当前值小的index,则进行两值交换
    		if(temp_list[j]<temp_list[smallest]):
    			smallest=j
    	tmp = temp_list[i]
    	temp_list[i] = temp_list[smallest]
    	temp_list[smallest]=tmp
    	return temp_list

    3. 实现下列函数, 并将其定义为模块getnums, 即存储在getnums.py中:
    def getnums(filename):
    """filename is a text file which contains many integers separated by white spaces and commas.
    The function read the file filename and returns a list of all the integers in filename in the order of their occurrences.
    """"
    如果一个文件不是很大,在内存放得下,可以用readlines()方法一次读入内存,即用一个列表存储文件内容,然后对列表进行处理:
    f = open(filename, 'r') #返回文件对象
    lines = f.readlines() #lines是filename中各行字符串构成的列表。lines只是个变量名,可取任何变量名。
    f.close() # 关闭文件对象
    接着在这里处理lines, 返回所需要的结果。比如,
    for line in lines: #这里line当然只是一个变量,可以用任何名称。
    你的处理语句
    你可能需要str类型对象的方法split()和strip()。
    一个数据文件例子 numbers.txt , getnums('numbers.txt')将返回列表 [12, 34, 23, 45, 11, 23, 48, 56, 50, 123, 100]。
    假定参数表示的文件filename与脚本getnums.py在同一个目录。
    def split4list(numberlist):
    	totallist = []
    	for item in numberlist:
    		sublist = item.strip().strip(',').split(' ')
    		for i in sublist:
    			res=i.strip(',')
    			if res.isdigit():
    				totallist.append(res)
    	return totallist
    
    def getnums(filename):
    	result=[]
    	f = open(filename, 'r') #返回文件对象
    	#lines是filename中各行字符串构成的列表。lines只是个变量名,可取任何变量名。
    	lines = f.readlines()  
    	result=split4list(lines)
    	return result

    最后一题的输出还有点问题,就是列表的每个元素前后都会带着单引号,所以还没有实现去除单引号的输出。

python作业 一、Turtle创意大PK 自拟题目,完成一个利用Python程序的创意绘图,采用turtle库绘图为主,不少于50行代码,可选采用其他库。 (滑稽绘制) 二、程序练习 2.1 问题描述(10分) 人们常常提到"一万小时定律",就是不管你做什么事情,只要坚持一万小时,应该都可以成为该领域的专家。那么,10000小时是多少年多少天呢? 2.2 问题描述(10分)0380031003800341590145037657 编写计算从n到m和的函数‬,函数名为sum(n,m)‬,函数返回值为n到m所有数据的和‬,使用该函数计算输入数据x,y之间所有数据的和。 2.3 问题描述(15分) 编写函数judgeTri(a,b,c),判断以参数a,b,c的值为边长能否构成三角形并判断三角形的形状;若是锐角三角形,返回R;若是直角三角形,返回Z;若是钝角三角形,返回D;若三边长不能构成三角形,返回ERROR。 2.4 问题描述(15分) 用户输入一个字符串,分别统计其中小写字母、大写字母、数字、空格和其他字符的个数,并在一行内输出小写字母、大写字母、数字、空格和其他字符的个数。 2.5 问题描述(20分) 程序的功能: (1) 使用随机库功能,生成一个包含10个不重复且小于200的正整数列表ls1,输出ls1。‬ (2) 使用列表排序方法,对ls1按奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变进行排序,再输出ls1。‬ (3) 使用列表排序方法,对ls1按元素字符长度降序进行排序,输出ls1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值