《Python编程从入门到实践》——学习python的第十二天

python学习的第十二天

  • 前言
    • 函数

前言

上次是讲到了在函数中使用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中搜索都可以。

如果有那里有出错,请务必指出来纠正我,并且有更好的想法也可以在评论区说出来,谢谢!

你可能感兴趣的:(新手,python学习)