运算符
算术运算符
比较运算符
练习1:在交互模式中创建两个内容一样的字符串,判断它们是否为同一个对象。
逻辑运算符
在Python中,认为如下对象都是“假的”(False):None和False,Decimal(0),Fraction(0,1),空序列和集合:’’,(),[],{},set(),range(0)。
1.and
2.or
3.not
练习2:以下表达式的返回值是True还是False?
等效于:
等效于:
简单语句
这里引入了math模块中的pow()、e、pi。pow()是乘方函数,e是欧拉数,是自然对数函数的底数,e=2.71828182845904523536、pi是π
这种引入方式最省事,一下将math中所有的函数都引用过来了。不过这种方式的结果是可读性更低了,仅适用于模块中的函数比较少的时候。
这是一种“链式赋值”方式,结果是m和n两个变量引用了同一个对象。
增量赋值:x = x + 1这样的表达式是不可思议的,但是在编程语言中它是成立的,因为“=”是“赋值”,即将变量x增加1后,再把得到的结果赋给变量x。+、-、*、/、%都可以实现类似操作。
练习3:在交互模式中,实现欧拉等式的计算,即e^iπ+1=0
条件语句
所谓条件语句,就是依据某个条件来执行指定的代码。Python中的条件语句使用"if"关键词,基本结构为:
①发起条件判断,如果"“p” in s"返回的是True,就执行后面由②和③组成的语句块;否则不执行。由②和③组成的语句块,相对于左侧,缩进4个空格。
不同的编程语言,表示语句块的方式不同。Python利用缩进表示语句块。增加缩进表示语句块的开始,减少缩进表示语句块的结束。
如果只有if一个条件判断,有时候比较烦琐,常常需要有多个分支。比如,在①中,当字符“p”在字符串s中,就执行后续的语句块;如果不在呢?这段程序没有给出响应。
elif和else发起的分支是可选部分。
练习4:请判断用户的键盘输入,如果输入的都是数字,则把该数字扩大10倍,在打印结果;如果输入的是字符a~z,在其后面增加“@python”,再打印结果;其他情况则直接打印出来。
条件语句可以简写成“三元操作”,即:A = Y if X else Z。如果X为真,则执行A = Y。如果X为假,则执行A = Z。
for循环语句
for循环基础应用
for循环是针对可迭代对象的语句。
其基本语法结构和注意要点如下:
①在“for i in hello:”中,for是发起循环的关键词;“i in n”是循环规则。字符串类型的对象是序列类型,能够从左到右一个一个地按照顺序读出每个字符,于是变量i就从第一个字符开始,依次获得各字符的引用。
②当 i = "h"时,执行print(i),打印字母h;然后进入下次循环,i = “e”,执行print(i),打印出字母e…如此循环下去,一直到最后一个字符被打印出来,循环自动结束(for循环能够自动处理迭代对象循环结束后的异常)。
在内置对象类型中,可用于for循环的迭代对象包括字符串、列表、元组、字典、集合这些所谓的容器类对象,而数字不是可迭代对象。
试图以循环方式得到整数的各数字是行不通的。
这里同样使用了print(),并没有像前面所打印的对象那样各占一行。主要原因是参数end。
“k in d” 读取了字典的键(key),for循环的结果是依次得到字典d的所有键。
如何判断一个对象是否是可迭代的呢?
练习5:有列表lst = [‘anwang’, ‘microsoft’, ‘ibm’, ‘compaq’, ‘lenovo’, ‘dell’]
,请将列表中含有字母a的字符串挑选出来。
练习6:有一个元组,t = (3,6,1,0,2,4,6,0,8,10,7,4,0,2,0,10,6,2,4,1),统计元组中每个整数出现的次数。
优化循环的函数
1.range函数
使用help()查看帮助文档。
①创建的是一个range对象,通过②明确可知,这个对象也是可迭代对象。当没有对range对象进行循环的时候,里面的每个数字都没有被读入内存,所以无法显示里面的每个数字。如果想显示range对象内的所有数字,必须使用list()把它转化为列表,即将所有数字都读入内存,才能显示。
range()在循环中的一个重要作用是可以创建序列对象的索引。
练习7:创建一个列表,其中的元素是100以内能够被3整除的正整数。
练习8:有两个列表:a = [1,2,3,4,5], b = [9,8,7,6,5], 要求计算这两个列表中对应元素的和。
2.zip函数
从以上示例可见,zip()的作用就是将两个可迭代对象的元素进行“配对”,即:将两个可迭代对象中的元素相对应地建立映射关系。
练习9:有字典myinfor = {“publish”:“phei”, “site”:“itdiffer.com”, “lang”:“python”},将这个字典变换成:infor = {“phei”:“publish”, “itdiffer.com”:“site”, “python”:“lang”}。
3.enumerate函数
练习10:使用random标准库,从1~10的整数中获取20个随机数,组成一个列表。然后将此列表中的偶数用字符串“even”替换。
⑤中同时得到了每个元素的索引及其值,等效于③、④的作用。
列表解析
分解⑥的组成,即列表解析的写法。
练习11:有列表mybag = [‘glass ‘, ’ apple’, ’ green leaf’],注意观察列表的元素,有的字符串开头部分有空格,有的结尾部分有空格。要求将单词左右的空格去除。
在列表解析中,⑦增加了条件约束,其效果是“for 循环语句 + 条件语句”。同样的,还可以用列表解析解决例题。
练习12:有字符串s = “Life is short You need python”,要求显示字符串中每个单词的大写和小写两种形式,并同时显示该单词的长度。
练习13:利用练习10中所得到的列表,将列表中的偶数标记为"Even",奇数标记为"Odd"。
练习14:标准库中的random模块的函数randint()可以得到某范围内的一个随机整数。请使用这个函数,得到30个0~9之间的随机整数。
除了列表解析外,还有“集合解析”、“字典解析”
⑧中重复了10次,应该得到了10个随机整数。但是,因为是“集合解析”,集合中不能有重复元素,经过“去重”后,最后得到的集合中元素如上所示。
“字典解析”则可以如下操作:
while循环语句
通过下面示例理解while循环的基本应用。
①发起了while循环语句,“a<3”为True,则执行下面的语句块。如果执行了if语句下面的语句块,则会遇到②的break,它的功能是中断循环,并跳出循环体。
③是将前面设置的变量实现自增,允许用户“出错三次”,之后a=3,则①中的条件不再满足,即中止while循环。
练习15:猜数游戏。功能要求:(1)随机生成一个100以内的正整数。(2)用户通过键盘输入数字,猜测生成的随机数。注意,用户的输入次数不进行限制。
④用于生成一个100以内的随机整数。用户输入所猜测的数字后,要对用户的输入内容进行判断(用户的任何输入都是不可靠的),虽然下面的判断还比较简洁。
⑤判断输入是否为整数组成的字符串。
⑥判断输入的整数,是否是1~100的整数。
⑦以下的语句块是判断输入的数字和④所得到的数字的关系。如果相等,则意味着猜中,中止循环(break);否则提示是偏大还是偏小,并且允许用户再输入。
在某种条件下使用了break实现跳出循环的目的。此外,还有一个类似这样由一个关键词组成的语句continue,从当前位置(continue所在的位置)跳到循环体的最后一行的后面(不执行最后一行)。对一个循环体来讲,如果还是符合循环条件的,最后一行的后面是哪里呢?当然是开始了,如果不符合循环条件,就是跳出当前循环体了。
上述程序中,在while循环语句块内,当满足了a%5 == 0条件后,执行⑧,然后转到while循环的开始,不再继续向下执行⑨。