python条件和循环的使用方法
前面已经介绍过几种基本语句(print,import,赋值语句),下面我们来介绍条件语句,循环语句。 复制代码 代码如下: >>> print 'age:',42 age: 42 B.同时输出文本和变量值,却又不希望使用字符串格式化: 复制代码 代码如下: >>> name = 'Peter' >>> greeting = 'Hello' >>> print greeting,',name Hello,Peter 上面的例子中会在逗号前加入一个空格,我们可以这样优化: 复制代码 代码如下: >>> print greeting + ',Peter 注意,如果在结尾处加上逗号,那么接下来的语句会与前一句在同一行打印: 复制代码 代码如下: >>> print 'Hello, print 'world' Hello,world 1.2 把某件事作为另一件事导入 从模块导入函数时,可以使用: 整个模块导入:import somemodule 导入其中一个函数:from somemodule import somefunction 导入其中几个函数:from somemodule import somefunction,anotherfunction,yetanotherfunction 导入全部函数:from somemodule import * 如果某2个模块都有相同名字的函数,比如叫open函数,那么可以这样给函数或者模块提供别名: 复制代码 代码如下: >>> import math >>> import math as foobar >>> foobar.sqrt(4) 2.0 >>> from math import sqrt as foobar2 >>> foobar2(4) 2.0 二. 赋值魔法 就算是不起眼的赋值语句也有一些特殊的技巧。 2.1 序列解包 序列解包就是将多个值的序列解开,然后放到变量的序列中。 >>> #'多个赋值操作同时进行' >>> x = 2 复制代码 代码如下: num = input ('enter a number? ') if num > 0: if num > 50: print"num > 50" elif num > 10: print "num > 10" else: print "num > 0" else: print "num <= 0" 4.3 更复杂的条件 下面我们回到条件本身,因为它们才是条件执行真正有趣的部分。 4.3.1. 比较运算符 复制代码 代码如下: x == y; x < y; x > y; x >= y; x <= y; x != y; x is y; x is not y; x in y; x not in y; 4.3.2. is:同一性运算符 复制代码 代码如下: >>> x = y = [1,3] >>> z = [1,3] >>> x is y True >>> x is z False >>> x == z True 由此看出,使用==运算符来判定两个对象是否相等,使用is判定两者是否同一个对象。 4.3.3. in:成员资格运算符 复制代码 代码如下: name = raw_input("what is your name?") if 's' in name: print 'your name contains the letter s' else: print 'your name does not contain the letter s' 4.3.4.字符串和序列比较 字符串可以按照字符顺序排列进行比较。 >>> 'alpha' < 'beta' True 字符是按照本身的顺序值排列的,一个字母的顺序值可以用ord函数查到。 其他的序列也可以用同样的方式进行比较,不过比较的是元素的其他类型。 复制代码 代码如下: >>> [1,2] > [2,1] False >>> [1,[2,3]] < [1,[3,2]] True 4.3.5. 布尔运算符 and运算符是所谓的布尔运算符,它连接2个布尔值,并且在两者都为真时返回真,否则返回假。与它同类的还有2个运算符,or和not。 复制代码 代码如下: number = raw_input("enter a number?") if number <=10 and number >= 1: print "great!" 4.3.6. 断言 if语句有个近亲,工作方式类似于: 复制代码 代码如下: if not condition: crash program 这是因为与其让程序在晚些时候崩溃,不如在错误条件出现时直接让它崩溃。语句中使用的关键字是assert。它确保程序中的某个条件为真时才能让程序正常工作。 复制代码 代码如下: >>> age = -1 >>> assert 0 < age < 100 Traceback (most recent call last): File "<pyshell#52>",line 1,in <module> assert 0 < age < 100 AssertionError 五. 循环 5.1 while循环 while语句非常灵活,可以在任何条件为真的情况下重复执行一个代码块。 复制代码 代码如下: name = '' while not name: name = raw_input('please enter your name: ') print 'hello,%s!' % name 5.2 for循环 当要为一个集合(序列和其他可迭代对象)的每个元素都执行一个代码块时,我们就需要for循环了。 5.2.1.循环遍历字典元素 一个简单的for语句就能循环字典的所有键,就像处理序列一样: d = {'x':1,'y':2,'z':3} for key in d: print key,'corrensponds to ',d[key] 5.2.2.一些迭代工具 A.并行迭代 复制代码 代码如下: names = ['a','b','c','d'] ages = [12,23,45,32] #循环索引迭代 for i in range(len(names)): print names[i],'is',ages[i],'years old.' #内建zip函数迭代 for name,age in zip(names,ages): print name,age,'years old.' B.编号迭代 有时候迭代序列中的对象时,同时要获取当前对象的索引。 复制代码 代码如下: #index计数 index = 0 for string in strings: if 'xxx' in string: string[index] = 'sss' index += 1 #内建enumerate函数迭代 for index,string in strings: if 'xxx' in string: string[index] = 'sss' C.翻转和排序迭代 函数reversed和sorted,作用于任何序列或可迭代对象上,不是原地修改对象,而是返回翻转或排序后的版本: 复制代码 代码如下: >>> sorted([2,6,3,7]) [2,7] >>> list(reversed('hello')) ['o','l','e','h'] 5.3 跳出循环 一般情况下循环会一直执行到条件为假,或者到序列元素用完时。但是有时候需要提前中断一个循环。 5.3.1.break 结束循环可以使用break语句。 复制代码 代码如下: for i in range(0,10): if i == 5: print 'quit' break print i 5.3.2.continue continue语句会让当前迭代结束,跳到下一轮循环的开始。 复制代码 代码如下: for i in range(0,10): if i % 2 == 0: continue print i 5.3.3.while True/break 比如当用户在提示符下输入单词时做一些事情,并在用户不输入单词后结束循环。 复制代码 代码如下: while True: word = raw_input('enter a word: ') if not word: break print 'The word is '+ word 六. 列表推导式--轻量级循环 列表推导式是利用其他列表创建新列表的一种方法,工作方式类似于for循环: 复制代码 代码如下: >>> [x**2 for x in range(10) if x % 3 == 0] [0,9,36,81] >>> [(x,y) for x in range(3) for y in range(3)] [(0,0),(0,1),2),(1,(2,2) 七. 三人行 作为最后的结束,我们来看3个语句:pass,del和exec pass:什么都不做,用来在代码中做占位符使用,方便调试代码。 复制代码 代码如下: if a == 'a': print 'yes' elif a == 'b': pass else: print 'no' del:删除不再使用的对象,也就是用作垃圾收集。 复制代码 代码如下: >>> x = [1,2] >>> y = x >>> del x >>> x Traceback (most recent call last): File "<pyshell#62>",in <module> x NameError: name 'x' is not defined >>> y [1,2] del删除的只是名称,而不是列表本身,所以上面的例子中,删除x不会影响到y。 exec:动态创造python代码,然后将其作为语句执行或作为表达式计算。但是这样做是会有很严重的潜在安全漏洞,如果程序将用户提供的一段内容中的一部分字符串作为代码执行,程序可能会失去对代码执行的控制。 复制代码 代码如下: >>> exec "print 'hello,world'" hello,world (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |