python-13-零基础学python 函数的运用

学习内容:《python编程:从入门到实践》第二版

知识点:

函数、列表、pop()移除、列表副本(复制、切片list[:])、列表元素的移动

两个函数套用、调用函数、for和while遍历

练习内容:

练习8-9:消息

创建一个列表,其中包含一系列简短的文本消息。将该列表传递给一个名为show_messages()的函数,这个函数会打印列表中的每条文本消息。

练习8-10:发送消息

在你为完成练习8-9而编写的程序中,编写一个名为send_messages()的函数,将每条消息都打印出来并移到一个名为sent_messages的列表中。调用函数send_messages(),再将两个列表都打印出来,确认正确地移动了消息。

练习8-11:消息归档

修改你为完成练习8-10而编写的程序,在调用函数send_messages()时,向它传递消息列表的副本。调用函数send_messages()后,将两个列表都打印出来,确认保留了原始列表中的消息。

我的代码&运行结果:

练习8-9

创建一个列表,其中包含一系列简短的文本消息。将该列表传递给一个名为show_messages()的函数,这个函数会打印列表中的每条文本消息。

def show_messages(lists):
    for list in lists:
        print(list)
        
lists =['Hello','Byebye','Nice to meet you']
show_messages(lists)

 

注意点:

1.print(list)是一条条打印,print(lists)打印出来是一整个列表

2.我感觉,list_new 是主程序,def是定义的操作

3.题干中,打印每条文本消息,不用给消息再加东西。

 

练习8-10:发送消息

在你为完成练习8-9而编写的程序中,编写一个名为send_messages()的函数,将每条消息都打印出来并移到一个名为sent_messages的列表中。调用函数send_messages(),再将两个列表都打印出来,确认正确地移动了消息。

def show_messages(lists):
    for list in lists:
        print(list)

def send_messages(lists,sent_messages):
    print(f"目前的消息是:")
    msg = show_messages(lists)
    print(msg)
    while lists:
        send_message = lists.pop()
        print(f"{send_message}正在发送")
        sent_messages.append(send_message)
    print(f"已发送信息有:")
    for send_message in sent_messages:
        print(send_message)
        
lists =['Hello','Byebye','Nice to meet you']       
sent_messages =[]       
send_messages(lists,sent_messages)

 

注意点:

1.纠结打印出列表怎么打

——不用,用for in打印出单个,前面加个print解释的内容即可,又清晰,又方便

一开始想要把列表打出来,无语了一直打印不对!!!

2.两个函数怎么衔接

——msg= show_messages(lists)直接调用前面加个=,再print出来即可

这个部分会比较纠结到底列表和集合放在哪个位置合适,在两个def中间还是什么,最后觉得主程序就是要清晰的数据库和函数调用过程,所以放在最后主程序里,其他的放在每个函数里,就像书里所说,每个函数一个功能,函数外主程序看起来也更加简洁。

3.while +列表,表示的是遍历列表中每一个元素,根据结果来看,如果没有的话,会自动显示none

4.def和def都放在前面,这个框架是

def1遍历lists,并打印每条消息

def2打印现有,遍历现有lists,移除lists中的元素到新表里,打印列表

5.重要重要!!!不要试图把每一步都在前端呈现,用户不需要很多信息,只需要呈现他们需要的内容即可,函数里面的一些操作就像是这个步骤。

练习8-11:消息归档

修改你为完成练习8-10而编写的程序,在调用函数send_messages()时,向它传递消息列表的副本。调用函数send_messages()后,将两个列表都打印出来,确认保留了原始列表中的消息。

def show_messages(lists):
    for list in lists:
        print(list)

def send_messages(lists,sent_messages):
    print(f"目前的消息是:")
    msg = show_messages(lists)
    print(msg)
    while lists:
        send_message = lists.pop()
        print(f"{send_message}正在发送")
        sent_messages.append(send_message)
    print(f"已发送信息有:")
    for send_message in sent_messages:
        print(send_message)
        
m_lists =['Hello','Byebye','Nice to meet you']       
sent_messages =[]       
send_messages(m_lists[:],sent_messages)

print(m_lists)
print(m_lists[:])
print(sent_messages)  

 

注意点:

1.有个问题:就是为啥print(m_list[:])不是显示[]空或者none呢?是因为pop只是暂时移除的原因么? 我把书上的练习用程序运行试了一下 ,结果和我的一样,所以如果练习遇到这个情况,可以不用担心了 你没错。

def print_models(unprinted_designs,completed_models):
    while unprinted_designs:
        current_design = unprinted_designs.pop()
        print(f"Printing model:{current_design}")
        completed_models.append(current_design)

def show_completed_model(completed_models):
    print(f"\n The following models have been printed:")
    for completed_model in completed_models:
        print(completed_model)

unprinted_designs = ['phone case','robot pendant','dodecahedron']
completed_models= []

print_models(unprinted_designs[:],completed_models)
show_completed_model(completed_models)

print(unprinted_designs)
print(unprinted_designs[:])
print(completed_models)

 

pop在书中介绍时,有提到,pop是移除后还可以使用👇有的就是一句话,真正到用的时候,才突然想起!!!

方法pop()删除列表末尾的元素,并让你能够接着使用它。

——《python编程:从入门到实践》第三章

 

总结&问题:

1.不同列表的命名要清晰,注意实参和形参的命名尽量要不同,否则特别容易混淆,不仅会错,最后还会晕😵

2.副本的使用是对前序内容的复习,调用函数中使用[:],注意def函数中不需要修改,我愚蠢的全部改一遍,最后发现不对,副本是数据库而已,def函数的模板不用改变,自己对其中的每一个板块的定位要很清楚。

3.要像书里说的一样,有意识的数理一些让程序清晰有层次的理念

4.在练习过程中发现问题,最后回归基础,会发现书上没有一句废话orz,以前以为理解的知识点,可能没有理解,但因为发现问题会深入理解。

不要小看基础知识,自学虽然很慢,但也在前进。

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值