Head First Python 读书笔记

第一章:基础知识

IDLE集成开发环境

  • 是一个REPL环境(read-eval-print-loop)交互式编程工具,python内置的IDE,通过python解释器去运行代码,一般一次运行一条语句,对于了解python语句的语法非常的方便
  • 如果想输入多条语句咋办?在打开的IDLE中,新建一个文件,然后在新建的文件中输入代码,保持,按 F5 运行,就可以在IDLE中看到结果
    python shell

  • 变量的声明,不需要事先告知数据类型,python中的变量会根据所赋值的对象类型得到变量的数据类型(动态)

  • 导入模块:
    • from 模块 import 函数 | 把指定的函数导入你的程序命名空间里面, 直接使用该函数
    • import 模块 | 只导入模块,然后 模块 . 函数 使用
  • in 操作符 检查一个对象是否在另一个对象中
  • 代码不用大括号分开,靠缩进 区分 作为一个代码块,有 :的地方,代码必须缩进
  • 迭代处理一个对象序列的三种典型方法

    序列是一个有序的对象集合

  • for循环 知道循环次数

    
    #  循环数字列表,迭代变量 x 指的是被迭代对象中的item
    
    for  x  in  [1,2,3]:      
          print(x)  # 1,2,3
    
    
    # 循环字符串 
    
    for  char   in  "icessun !":
             print(char)
    
    
    # 迭代指定次数  range() 函数
    
    for  num  in  range(5):
        print("Hi  icessun!")   # 输出5遍 Hi icessun!

    range函数

  • 查看某一个对象或者模块的属性 dir(),某一个属性的帮助文档help()

dir()  &&  help() 的使用方法

  • 让程序暂停指定的秒数:
import  time,random   # from time  import  sleep  导入sleep函数,直接使用
time.sleep(random.randint(1,5))  # 随机从[1,5]中产生一个整数,睡眠秒数
  • range函数中的参数:range [start , stop , step] ;这三个参数可以截取任意Python中的序列

    • start 控制范围从哪里开始,默认是从0开始
    • stop 控制范围何时结束(上限值,不包含在范围内)stop值小于start的值的时候,返回一个空
    • step 可选的步长值,默认为1,可以设置为负值,来调整生成的方向(倒序)
      range函数

range函数的用法
- 三元表达式:

 # 如果y>3 则x=10,否则 x=20
x=10 if y>3 else 20
# x与y值之间进行交换
x,y = y,x

案例一

# 需求:if  else  语句执行 5 次 终止,每次显示消息之间暂停的随机秒数
from datetime import datetime
import time,random

odds = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59]

for i in range(5):
    right_this_minute = datetime.today().minute

    if right_this_minute in odds:
        print("This minute seems  a little odd.")

    else:
        print("Not  an  odd  minute.")
    time.sleep(random.randint(1,6))

### 案例二

# 啤酒儿歌
word = "bottles"

for beer_num in range(99,0,-1):
    print(beer_num,word,"of beer on the word.")
    print(beer_num,word,"of beer.")
    print("take  one  down.")
    print("pass it around.")
    if beer_num == 1:
        print("No more bottles of beer on the wall.")

    else:
        new_num = beer_num -1
        if new_num == 1:
            word = "bottle"
        print(new_num,word,"of beer on the wall.")
    print()

第二章:列表数据

程序的主要功能就是:获取数据,处理数据,理解数据;一切皆对象。
- python中的内置数据结构:列表[ list],元组(truple ),字典{dict} k-v,集合{set}

列表 [ list ]

  • 有序的,可变对象集合
  • 查看列表的方法:help(list)
  • 类似于其他语言中的数组,但是列表是动态的,是异构的,可以混入其他的数据类型的值(包括列表本身),默认从 0 开始
  • 空列表:price = [ ]
  • 里面的对象使用逗号隔开;len(price):长度;price.append('icessun'):列表后面追加,没有返回值
  • 删除操作:price.remove():传入要删除的对象值,不是索引值,没有返回值,针对你知道想要删除的对象的值。price.pop():传入要删除对象的索引值,返回被删除的对象;不传,默认是最后一个对象的索引值,返回最后一个对象

  • 列表扩展:price.extend([4,'icessun']):传入一个对象列表(可以传入空列表,最好是不要传入),将其追加到前一个调用列表的后面,没有返回值

  • 列表插入:price.insert(0,1):传入插入对象在列表中的索引位置和插入对象,没有返回值,
    列表操作

  • 列表复制:price.copy():返回被复制对象的副本,可以用来进行其他操作,而原始列表不受到影响。如果想让一个变量引用现有列表,使用赋值操作(=)

  • 列表切片:price[start:stop:step]:其中三个值都是可选的,start没有,默认为0,可以为负值;stop没有,默认是列表允许的最大值,start值一定要绝对值大于stop值,才能获取到切片后的值,否则返回空列表;step没有,默认为1 ,改变取值的方向和跨度;返回切片的对象;列表转字符串使用' '.join(list);列表切片是非破坏性的,保持原对象不变;但是列表的方法会改变一个列表的状态

>>> letter="do not panic!"
>>> letters = list(letter)
>>> letters
['d', 'o', ' ', 'n', 'o', 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
>>> print(letters[0:10:3])
['d', 'n', ' ', 'n']
>>> print(letters[3:])
['n', 'o', 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
>>> print(letters[:10])
['d', 'o', ' ', 'n', 'o', 't', ' ', 'p', 'a', 'n']
>>> print(letter[::2])
d o ai!
>>> type(letter[::2])
<class 'str'>
# 数组倒序
>>> print(letter[::-1])
!cinap ton od
# 列表倒序
>>> print(letters[::-1])
['!', 'c', 'i', 'n', 'a', 'p', ' ', 't', 'o', 'n', ' ', 'o', 'd']

>>> print(letters[-10:-1:1])
['n', 'o', 't', ' ', 'p', 'a', 'n', 'i', 'c']
# start值一定要绝对值大于stop值
>>> print(letters[-1:-10:1])
[]
# 列表转字符串
>>> ''.join(letters[0:3])
'do '

案例一

# 列表方法的使用
phrase = "Don't panic!"
plist=list(phrase)  # 转为列表
print(phrase)
print(plist)
for i in range(4):
    plist.pop()
plist.pop(0)
plist.remove("'")
plist.extend([plist.pop(),plist.pop()])
plist.insert(2,plist.pop(3))
new_phrase=''.join(plist)
print(plist)
print(new_phrase)

##############
Don't panic!
['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
['o', 'n', ' ', 't', 'a', 'p']
on tap

案例二

phrase = "Don't panic!"
plist=list(phrase)
print(phrase)
print(plist)

new_pharse = ''.join(plist[1:3])
new_pharse = new_pharse + ''.join([plist[5],plist[4],plist[7],plist[6]])
print(plist)
print(new_pharse)

##############
Don't panic!
['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
['o', 'n', ' ', 't', 'a', 'p']
on tap

元组 ()

  • 有序的,不可变的对象集合
  • 元组赋值了,就把你改变,可以认为是一个常量列表,其他与列表相似
  • 有序的方法呈现数据,那么元组和列表就很合适。

字典 { }

  • 无序的,可变的,键值对集合
  • 其中两名的 是不可变类型
  • 空字典:found = { },往里面添加元素的时候:found['A']=0
  • 字典的键必须初始化,in 操作符去检查键值是否存在,
  • for in 迭代字典的时候,迭代变量就是字典中的键值
  • 指定字典输出的顺序按照:字母顺序 ;for k in sorted(found),但是一般都首选found.item()----->返回一个键值对列表去迭代字典
# 接受items()返回的键值对列表
for k,v  in sorted(found,items()):
        print(k,'was  found ',v,'times.')

案例一

集合 { }

  • 无序的,唯一的对象集合,避免重复
  • 可以完成集合运算(并集,交集,差集)

猜你喜欢

转载自blog.csdn.net/icessunt/article/details/80887622