读书笔记--Python基础教程 001

name = raw_input(‘please enter your name: ‘) or ‘<unknown>‘

换句话说,如果raw_input语句的返回值为真(不是空字符串),那么他的值就会赋给name,否则将默认的‘<unknown>’赋值给name。

这类短路逻辑可以用来实现C和Java中所谓的‘三元运算符’(或条件运算符)。

a if b else c

如果b为真,返回a,否则,返回c。(注意,这个运算符不用引入临时变量,就可以直接使用,从而得到与raw_input例子中同样的结果。)

while 循环

name = ‘‘

while not name:  #改为while not name.strip(): 是不是更合理呢?!

  name = raw_input(‘please enter your name: ‘)

print ‘Hello, %s!‘ %name

这个简单的while循环,让输入name,但是没有考虑到name 是空格的情况,是空格了虽然不报错,你也不知道名字啊啊啊啊,嘿嘿

for 循环

words = [‘this‘, ‘is‘, ‘an‘, ‘ex‘, ‘parrot‘]

for word in words:

  print word

因为迭代(循环的另外一种说法)某范围的数字是常见的,所以有个内建的范围函数供使用:

>>> range(0,10)  #话说此函数又下限(即0),但不包含上限()

[0,1,2,3,4,5,6,7,8,9]

_____________________________________________________

提示:如果能使用for循环,就尽量不要使用while 循环。

当然还有个xrange 函数,当迭代一个巨大的序列时 xrange函数 会更高效,不过一般就算了。

一些迭代工具:

并行迭代

names = [‘anne‘, ‘beth‘, ‘george‘, ‘damon‘]

ages = [12, 34,23,103]

如果想打印名字和对应的年龄,可以向下面这样做:

for i in range(len(names)):

  print names[i], ‘is‘, ages[i], ‘years old‘

而内建的 zip 函数就可以用来进行并行迭代,可以把两个序列‘压缩’在一起,然后返回一个元组的列表:

>>>zip(names, ages)

[(‘anne‘, 12), (‘beth‘, 34), (‘george‘, 23), (‘damon‘, 103)]

现在我可以在循环中解包元组:

for name, age in zip(names, ages):

  print name , ‘is‘, age, ‘years old‘

zip 函数也可以作用于任意多的序列。 关于它很重要的一点是zip可以处理不等长的序列,当最短的序列 “用完” 的时候就会停止。

for example #(容我卖弄风骚一下,呵呵)

>>>zip(range(5), xrange(10000000))

[(0,0), (1,1), (2,2), (3,3), (4,4)]

在上面的代码中,不推荐使用range 替换xrange ——尽管只需要前5个数字, 但是range会计算所有的数字,这要花费很长的时间。

而使用xrange就没有这个问题了,它只计算前5个数字。

for index, string in enumerate(strings):

  if ‘xxx‘ in string:

    string[index] = ‘[censored]‘

enumerate这个函数可以在提供索引的地方迭代 “索引-值” 对。

循环中的else子句

from math import sqrt

for n in range(99,81, -1):

  root = sqrt(n)

  if root == int(root):

    print n

    break

else:

  print ‘Didnt find it !‘

列表推导式——轻量级循环

列表推导式(list comprehension)是利用其它列表创建新列表(类似数学术语中的集合推导式)的一种方法。

>>>[x*x for x in range(10)]

[0,1,4,9,16,25,36,49,64,81]

>>>[x*x for x in range(10) if x%3 == 0 ]

[0,9,36,81]

也可以增加更多for 语句的部分:

>>>[(x,y) for x in range(3) for y in range(3)]

[(0,0), (0,1), (0,2), (1,0), (1,1), ……]

作为对比,下面的代码使用两个for 语句创建了相同的列表:

result = []

for x in range(3):

  for y in range(3):

    result.append((x,y))

pass、del、exec

时间: 2024-12-05 20:59:08

读书笔记--Python基础教程 001的相关文章

笔记-Python基础教程(第二版)第一章

第一章 快速改造:基础知识 01:整除.乘方 (Python3.0之前 如2.7版本) >>> 1/2 ==>0 1/2整除,普通除法: 解决办法1: 1.0/2.0  ==>0.5 解决办法2:from _future_ import division 1/2  ==>0.5 // 表示整除 >>>1//2 ==>0 浮点数//浮点数,结果依然是整除结果 >>>1.0//2.0 ==>0.0 实际操作截图: ** 表示乘

python基础学习笔记——Python基础教程(第2版 修订版)第11章(文件与素材)

#文件模式 open(name[.mode[.buffering]]) r w a b + f=open(r'c:\text\somefile') #基本文件方法 #对文件内容进行迭代 f=open('somefile.txt','w') #r是默认的 f.write('hello') f.read(4) f.close() #管式输出 $ cat somefile.txt|python somescript.py|sort #读写行 writelines readlines #关闭文件 #对文

python基础学习笔记——Python基础教程(第2版 修订版)第十章(充电时刻)

#模块 #包 #模块中有什么 dir l列出特性 #文档 print range.__doc__ #阅读源代码 print copy.__file__ #标准库 sys os fileinput #集合,堆和双端队列 set(range(10)) 集合 堆 数据结构 没有独立的 只有一个包含一些堆操作的模块,叫做heapq(6个函数) 双端队列 #time #random #shelve #re #包含对正则表达式的支持

python基础学习笔记——Python基础教程(第2版 修订版)第八章(异常)

#异常 类 #捕捉 try try: x=input(sds) y=input(sd) print x/y except ZeroDivisionError print(0sdf) except TypeErrpr except (ZeroDivisionError,TYpeError) #捕捉对象 except(Zerosion.)as e: print(e) #finally

python基础学习笔记——Python基础教程(第2版 修订版)第一章

#模块 import math math.floor(9) from math import sqrt sqrt(9) #无需使用前缀 import cmath cmath.sqrt(-1) #不能使用from...inport #转义和单双引号 >>>"\"hello,word\"she said" '"hello,word"she said' #使用print不显示引号 #拼接字符串  + #输入 input raw_inp

python基础学习笔记——Python基础教程(第2版 修订版)第12章(图形用户界面)

#丰富的平台 Tkinter wxpython ..... #wxpython import wx app=wx.App() win=wx/Frame(None) win.Show() app.MainLoop() #增加按钮a app=wx.App() win=wx.Frame(None) btn=wx.Button(win) win.Show() app.MainLoop() win=wx.Frame(None,title="simple Editor") loadButton=w

python基础学习笔记——Python基础教程(第2版 修订版)第三章(字符串)

#字符串 '%s plus %s equals %s'%(1,2,3) %10f %pi %10.2f %5s %'guido van poee %.*s %(5,'gjffuygv')%010.2 0000003.14%-10.2f #字符串方法 string.letters 包含所有字母的字符串 #find    title.find("sdf")  没有返回-1 #join  添加元素 #lower #replace("isj,"ss") #'1+2

python基础学习笔记——Python基础教程(第2版 修订版)第二章(列表和元祖)

#列表可修改,元祖不能 A=['sdsd',43] B=['sds',45] C=[A,B] #分片 : - #list函数 #分片赋值 #列表方法 lst.append(4) x.count(1) x.count([1,2]) a.extend(b) a.index("w") a.insert(3,"都")x.removex.reversex.sort #pop 移除列表元素,并返回值.实现数据结构-栈,LIFO(后进先出),x.append(x.pop()),先

python基础学习笔记——Python基础教程(第2版 修订版)第四章(字典)

#创建 phone={'alice':'12234','beth':'352235'} #dict使用 items=[('name','gumby'),('age',42)} d=dict(items) d=dict(name='gumby',age=42) #基本字典操作 lend(d) d[k] d[k]=v k in d x={} x[42]='foobae' x {42:'foobar'} people={'alice':{'phone':'123','addr':'foo drive3