Day14(Python作业)
(Python作业来自qq群:651707058,欢迎任何程度的Python学习者)
题一:默认参数
请找出下面代码为什么会得出这样的结果。
'''
'现在我们来扩展一下列表相加,定义一个列表相加的函数,会给两个list后面都加一个None值作为结尾' \
'然后再相加'
'比如:L1 = [1,2] L2 = [3,4] 相加后变成 [1,2,None,3,4,None]' \
'L1 = [1,2] L2 = [] 相加后变成[1,2,None,None]' \
'L1 = [],L2=[],变成[None,None]'
def add_list(L1 = [],L2 = []):
L1.append(None)
L2.append(None)
return L1+L2
print(add_list())
print(add_list([1,2]))
print(add_list([1,2],[3,4]))
'''
在函数的默认参数中,最好不要使用可变的默认参数
因为一个函数的默认参数的值,只会保留一份。
而不是在调用函数的时候临时去创建一个值(如下面的列表),
在以后调用函数的时候,函数都会去用这个 创建函数时创建的默认参数值
所以这一份默认参数值,如果是可变对象的话,调用就不敢保证默认参数是否
已经发生了改变,从而引起了函数错误
所以在为函数定义默认参数的时候,一定要保证默认参数值是一个不可变对象
'''
题二:歌词
我们知道一些播放器有桌面歌词的功能,他会在桌面显示一行歌词,之后又换成下一行歌词显示。在这里,我们需要使用Python来实现简单的显示歌词功能。
大概是这样的一个过程:
显示一行歌词->暂停1秒->换下一行歌词->暂停1秒->换下一行歌词。。。。
from time import sleep
with open('my way enlish.txt','r',encoding='utf-8') as f:
words = f.readlines() #words是一个list,每个元素是一行
#以上只是一个打开文件的方式,下面是本题的具体做法
for line in words: