上次是讲到了在函数中使用return来返回字典,函数的内容还有很多,咱们话不多说,直接上干货吧。认真看注释!认真看注释!认真看注释!
结合函数和while使用
def get_formatted_name(first_name,last_name):#定义函数,含有两个形参
"""返回整洁的姓名"""
full_name = f"{first_name}{last_name}"#定义一个新变量,其中含有的是两个形参
return full_name.title()#return返回的结果是首字母大写的结果
#这是一个无限循环
while True:
print("\nPlease tell me your name:")
print("(enter 'q' at any time to quit)")
f_name = input("First name:")#用户输入
if f_name == 'q':
break
I_name = input("Last name:")#用户输入
if I_name == 'q':
break
formatted_name = get_formatted_name(f_name,I_name)#用一个新变量等效于函数的结果,两个形参由用户输入了,这里实现了函数的梦幻联动和whlie的
print(f"\nHello,{formatted_name}!")、
结果:
Please tell me your name:
(enter ‘q’ at any time to quit)
First name:yin
Last name:yang
Hello,Yinyang!
Please tell me your name:
(enter ‘q’ at any time to quit)
First name:zhang
Last name:jin yu
Hello,Zhangjin Yu!
Please tell me your name:
(enter ‘q’ at any time to quit)
First name:q
字典在函数中使用
def make_album(singer,name_album):
infor = {
'name':singer,'mingzi':name_album}#这里键用的是字符串,值用的是参数
return infor
information = make_album('zhangjie','zhejiushiai')#需要个新的变量来引导出函数中的字典
print(information)
结果:
{‘name’: ‘zhangjie’, ‘mingzi’: ‘zhejiushiai’}
传递列表
这里是向函数传递列表
def greet_users(names):
"""向列表中的每位用户发出简单的问候。"""
for name in names:
msg = f"Hello,{name.title()}!"
print(msg)
usernames = ['hannah','ty','margot']
greet_users(usernames)
#总结:先是定义了一个函数,形参是’names‘,在函数里面names定义为了列表,并进行遍历的操作,再重新定义一个变量为列表,然后将其输入为实参
结果:
Hello,Hannah!
Hello,Ty!
Hello,Margot!
在函数中修改列表
没有使用函数列表的情况下
#首先创建一个列表,其中包含一些要打印的设计
unprinted_designs = ['人','机器人','动物']
completed_modles = []
#模拟打印每个设计,知道没有打印的设计为止
#打印每个设计后,都将其移到列表completed_modles中
while unprinted_designs:
current_design = unprinted_designs.pop()
print(f"Printing model:{current_design}")
completed_modles.append(current_design)
#显示打印好的所有模型。
print("\nThe following models have been printed:")
for completed_modle in completed_modles:
print(completed_modle)
#总结:这他妈的是再没有函数的情况下进行的,我他妈的刚刚忘了,现在刚好可以复习一下,定义两个列表,一个空的、一个有值的、然后利用pop函数和append函数
#进行删除值和扩充值
结果:
Printing model:动物
Printing model:机器人
Printing model:人
The following models have been printed:
动物
机器人
人
使用函数列表的情况下
def print_models(unprinted_designs,completed_modles):#定义了两个列表一个是未打印列表,一个是已打印列表
"""
模拟打印每个设计,直到没有未打印的为止
打印好每个设计后,都将其移到列表completed_modles中
"""
while unprinted_designs:#这些变量都是形参
current_design = unprinted_designs.pop()#利用pop对列表末尾进行一个一个的删除
print(f"Printing model:{current_design}")#显示正在打印的设计
completed_modles.append(current_design)#将已经删除的值加入到已打印列表
def show_completed_models(completed_models):#定义一个新函数,里面有已完成的列表
"""显示所有打印好的模型"""
print("\nThe following models have been printed:")
for completed_model in completed_models:
print(completed_model)
unprinted_designs = ['人','小动物','机器人']#直接定义新变量,列表
completed_models = []#这里也是直接定义新变量
print_models(unprinted_designs,completed_models)#新变量当作实参
show_completed_models(completed_models)
结果:
Printing model:机器人
Printing model:小动物
Printing model:人
The following models have been printed:
机器人
小动物
人
相比之下的好处是:如果需要改动的话,函数这边可以修改的次数更少,更容易扩展和修复,更加的灵活
禁止函数修改列表
为什么要禁止函数修改列表,一般用于保留原来的文件。
def print_models(unprinted_designs,completed_modles):#定义了两个列表一个是未打印列表,一个是已打印列表
"""
模拟打印每个设计,直到没有未打印的为止
打印好每个设计后,都将其移到列表completed_modles中
"""
while unprinted_designs:#这些变量都是形参
current_design = unprinted_designs.pop()#利用pop对列表末尾进行一个一个的删除
print(f"Printing model:{current_design}")#显示正在打印的设计
completed_modles.append(current_design)#将已经删除的值加入到已打印列表
def show_completed_models(completed_models):#定义一个新函数,里面有已完成的列表
"""显示所有打印好的模型"""
print("\nThe following models have been printed:")
for completed_model in completed_models:
print(completed_model)
unprinted_designs = ['人','小动物','机器人']#直接定义新变量,列表
completed_models = []#这里也是直接定义新变量
print_models(unprinted_designs[:],completed_models)#新变量当作实参,这里将利用函数的格式调为了 function_name(list_name[:])的形式因此可以保证列表中的元素不被删除
show_completed_models(completed_models)
print(unprinted_designs)
结果:
The following models have been printed:
机器人
小动物
人
[‘人’, ‘小动物’, ‘机器人’]
这种情况下函数只是利用了复件并没有利用原件,但是在一般情况下,是不适用该方法的,因为这样会花时间和内存创建副本
今天的内容就到这里了,如果没看懂,请一定要认真看我在代码中的注释,如果有不懂的可以私信我或者去csdn中搜索都可以。
如果有那里有出错,请务必指出来纠正我,并且有更好的想法也可以在评论区说出来,谢谢!