python基础教程笔记(chapt.5) 语句

print 3.0版本要打括号是因为它变成了函数,而在2.0版本时时语句。

赋值技巧

1. 序列解包(sequence unpacking)/可迭代解包

将多个值的序列解开,放到变量的序列中

>>>values=1,2,3
>>>values
(1,2,3)
>>>x,y,z=values
>>>x
1
###############################################################
>>>scoundrel={'name': Robin, 'girlfriend':'Marion'}
>>>key, vlaue=scoundrel,popitem()
>>>key
'girlfriend'
>>>value
'Marion'

3.0版本还可以把最后一个参数写作rest,这样剩余没有分配的元素都会分配到rest

2. 链式赋值(chained asignment)

将同一个值赋给多个变量的捷径。x=y=somefunction()

3. 增量赋值(augmented assignment)

四则运算和%等标准运算都适用
x+=1 就是 x=x+1
x=2 就是x=x2
x/=1 就是 x=x/1 以此类推

条件和条件语句

False, None,0,"",(),[],{}都会看做是假false,其他都为真。

if condition:
    if condition:
        do
    elif contion:
        do
    else:
        do
else:
    do

x is y是两个是同一个对象, x==y是两个对象相等,但是不一定是同一个对象。
assert(断言): 如果为假,报错, 后面可以添加字符串,解释断言,该功能常用在程序中置入检查点。assert 0<age<100, 'The age must be realistic'

循环

while 循环:

name='' "
#还可以用 while not name.strip()
while not name or name.isspace():
    name=raw_input("Please enter your name: ')
print 'Hello, %s!' % name

for 循环: (如果能用for尽量不用while)

words=['this', 'is','an','ex','parrot']
for word in words:
    print word

range(0,10): 0-9
range(10):0-9

循环遍历字典:

d= {'x':1, 'y':2,'z':3}
for key in d:
    print key, 'corresponds to'. d[key]
################################################
for key, value in d.itmes():
    print key, 'correspondsto' vlaue

跳出循环

  1. break 跳出循环
  2. continue结束当前循环,直接跳到下一轮。
  3. while True/break: 第一部分负责初始化,第二部分则在循环条件为 真的情况下使用第一部分内初始化好的数据
#-*- coding=utf8 -*-
word="dummy" #哑变量
while word:
    word=raw_input("Please enter a word: ")
    # 处理word
    print 'The word was '+ word
##############################################
while True:
    word = raw_input("Please enter a word: ")
    if not word: break
    #处理word:
    print 'The word was ' + word
  1. 使用else
broke_out = False
for x in seq:
    do_something(x)
    if condition(x):
        broke_out=True
        break
    do_something_else(x)
if not broke_out:
    print "I didn't break out!"
########举例##################
from math import sqrt
for n in range(99,81,-1):
    root=sqrt(n)
    if root == int(root):
         print n
        break
else:
    print "Didn't find it!"

迭代工具

  • 并行迭代。
names=['anne','beth','george','damon']
ages=[12,45,32,102]
####################
for i in range(len(names)):
    print names[i], 'is', ages[i], 'years old.'
####################
#用zip将两个列表压缩在一起构成一个个元组,然后在循环中解压元祖
for name,age in zip(names, ages):
    print name, 'is', age,'years old'
#zip擅长应付不等长的序列,当最短的序列用完就会停止
  • 编号迭代
    依据索引迭代
for string in strings:
    if 'xxx' in string:
        index= strings.index(string) #Search for the string in the list of strings
         string[index]='[censored]'
##########################
index=0
for string in strings:
    if 'xxx' in string:
       strings[index]='[censored]'
index +=1
##########################
for index, string in enumerate(strings):
    if 'xxx' in string:
        strings[index]='[censored]'
  • 翻转和排序迭代
    reversed, sorted 函数,作用与任何序列或者可迭代对象上,不是原地修改对象,而是返回翻转或者排序后的版本。 可以在for循环和join中使用,但是不可以直接使用索引,分片,及调用list方法,用list类型转化后就可以了。

列表推导式(轻量循环)list conprehension

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

男孩女孩名字配对练习

girls=['alice', 'bernice', 'clarice']
boys=['chris','arnold','bob']
letter_girl={}
a alice b bernice
for girl in girls:
    letter_girl.setdefault(girl[0],[]).append(girl)
print [b+'+'+g for b in boys g in letter_girls[b[0]]]

其他

pass: 结合注释扮演文档字符串,注释,代码初期开发时。
del:删除名称
动态创造Python 代码:

  1. exec:执行语句,不返回对象
    结合scope(放置代码字符串命名空间的字典)来保证创造
>>>from math import sqrt
>>>scope={}
>>>exec 'sqrt=1' in scople
>>>sqrt(4)
2.0
>>>scope['sqrt']
1
  1. eval:计算表达式(以字符串形式书写),返回结果值
>>>eval(raw_input("Enter an arithmetic expression: "))
Enter an arithmetic expression: 6+18*2
42

综合使用:

>>>scope={}
>>>scope['x']=2
>>>scope['y']=3
>>>eval('x * y ', scope)
6
#########
>>>scople={}
>>>exec 'x=2' in scope
>>>eval(' x*x', scope)
4
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,579评论 1 118
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,911评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,654评论 18 399
  • JavaScript 是一个轻量级的,面向对象的解释编程语言,允许我们交互的建成其他静态 HTML 网页。 ECM...
    极客学院Wiki阅读 1,369评论 0 17
  • 在即时通讯APP中,一般都有自己的表情,当在输入框输入表情时,点击删除按钮,需要将"[表情名称]"这样的字符串删除...
    吃得慢饿得快1阅读 5,262评论 8 6