Head Firtst Python 读书笔记(1)



     自己目前在读两本python中的书,采取双循环的模式。读完一本,接着读另一本, 同时开始补充自己的书。


     Head First  Python    


        知识点:  列表

                            列表是一个对象,可有子列表,可有元组,可有字典。


                         for循环

                                 for循环, 通常来解决迭代问题。


                        递归:

                                 用简单的方法,解决和尚讲故事的问题


   python 如何查看版本

                                 Python -V   大写v

 BIF命令---isinstance()

                                     stance: 态度,立场,英文解释。  instance例子

                                     内置命令。

                                     isinstance  (object,class-or-type-or-tuple)  返回bool


        补充知识点: 1:如何查看isinstance的帮助------help(isinstance)

         2:如何查看内置命令  dir(__bulitins__)

                               3: idle输入is, 按table,直接按空格确认命令后, 不需要退格,直接输入就可以



       代码:

       

__author__ = 'lixiang'
name = ['恐怖邮轮',['沉默羔羊','红龙','少年汉尼拔']]

for each_item in name:
    if isinstance(each_item,list):
        for next_item in each_item:
            print(next_item)
    else:
        print(each_item)


      接下来,有个问题, 如果有第三个, 第四个子列表应该怎么办?


      书中的思路, 继续分析代码。


         外面for: 处理外围列表。

        里面for: 处理内部列表。


        那应该怎么办呢?

              以下是我的第一次代码:

          

__author__ = 'lixiang'
name = ['恐怖邮轮',['沉默羔羊','红龙',['少年汉尼拔1',['测试','测试2']]]]

def printlist(item):
    if isinstance(item,list):
        for next in item:
             print(next)
    else:
        print(item)


for each_item in name:
    if isinstance(each_item,list):
        for next_item in each_item:
           printlist(next_item)
    else:
        print(each_item)


   但是第一个发现,  自己这样做, 只是让程序分开了, 没有让程序更加简单, 也没有做到嵌套,没有解决问题。。   

    大致看了看书, 书中说的是递归。


    到底是什么是递归呢?

     
             “从前有座山,山里有个老和尚,老和尚给小和尚讲故事,从前有座山...”

            突然方丈出现,故事讲完了,如果方丈不出现,那就一直出现

            方丈做了什么,故事就完了呢?这个就要问你了……  

  

 落实解释问题, 就是函数是来解决外部输入简单,递归是用来解决内部调用。 看看这个代码怎么写。

def stroy():
    print ("从前有座山")
    print("山里有个故事")
    print("老和尚和小和尚讲故事")
    stroy()


直接调用看看, 调用成功,但是发现调用次数有限,书中说深度不超过100.  回到习题中呢。

__author__ = 'lixiang'
name = ['恐怖邮轮',['沉默羔羊','红龙',['少年汉尼拔1',['测试','测试2']]]]

def printlist(list_name):

    for each_item in list_name:
        if isinstance(each_item,list):
            printlist(each_item)
        else:
            print(each_item)


printlist(name)


看到了吗?  很简单,  其实  递归 用来解刨列表, print(each_item) 用来打印。

 在想想,为什么需要函数, 解决递归调用, 没这个,没法递归。  还有 就是  计算机编程是人机交互的, 如果你做的程序,就自己能写,还要求别人都懂,是不是太麻烦了, 不如给一个这样的函数,让人家直接用。

printlist(name)

这也是为什么要学习python的原因吧, 调用别人的函数。

想到之前在learn python the hard way ,  sudo pip install... , 不就是这个作用吗?







     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值