近期给公司培训Python,好好啃了啃书本,查了查资料,总结一些知识点。
------------------------------------------------------------------------------------
①:首先引入课后布置给同学们的作业吧,打印99乘法表:
Print below multiplication table: 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81-------------------------------------------------------------------------------------
当然主要是考察大家是不是会用range()和循环。
先学range():
>>> range(1,10)# #表示从1到10(不包含10) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1,10,2)#表示从1到10,步长为2(不包含10) [1, 3, 5, 7, 9] >>> range(10)#代表从0到10,不包含10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range()会了就比较简单了,两层循环就可以了。
for firstNum in range(1,10): resultLine = "" for secondNum in range(1,firstNum+1): resultLine = resultLine+str(secondNum)+"*"+str(firstNum)+"="+str(firstNum*secondNum)+" " print resultLine #结果如下: #1*1=1 #1*2=2 2*2=4 #1*3=3 2*3=6 3*3=9 #1*4=4 2*4=8 3*4=12 4*4=16 #1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 #1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 #1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 #1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 #1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
--------------------------------------------------------------------------------------
②:接下来,说说xrange()吧。
range()和xrange()这两个基本上都是在循环的时候用。
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> xrange(10) xrange(10) #查看类型 >>> a = range(10) >>> b = xrange(10) >>> type(a)#range()生成的是一个List <type 'list'> >>> type(b)#xrange()则不会生成一个List <type 'xrange'>
从上面可以看出,range()生成的是一个List,而xrange()不会生成一个List。
>>> for i in range(1,10): print i >>> for i in xrange(1,10): print i #两种方式,输出结果一样 1 2 3 4 5 6 7 8 9
-----------------------------
#range >>> a = range(10) >>> a[0],a[3] (0, 3) >>> a[0] 0 >>> a[3] 3 #xrange >>> b = xrange(10) >>> a[0],a[3] (0, 3) >>> b[0] 0 >>> b[3] 3
上面这两个输出的结果是一样的,但是实际上是有不同的。
range会直接生成一个list对象;
xrange则不会直接生成一个list,而是每次调用就返回其中的一个值。
可以得出xrange做循环时,性能比range要好,特别是循环很大的时候。
所以尽量用xrange可以提升性能,除非你是要返回一个列表。
-----------------------------------------------------------------------------------
③:如果题目变一下呢?反向输出99乘法表。
Print below multiplication table:
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*4=4 2*4=8 3*4=12 4*4=16
1*3=3 2*3=6 3*3=9
1*2=2 2*2=4
1*1=1
--------------------------------------------------------------------------------------
乍一看不知道如何下手,其实range()也可以反向输出:
>>> range(9,0,1) #返回空列表 [] >>> range(9,0,-1) #返回1-9元素的列表 [9, 8, 7, 6, 5, 4, 3, 2, 1]
那么题目就很简单了:
for firstNum in range(9,0,-1): resultLine = "" for secondNum in range(1,firstNum+1): resultLine+="%d*%d=%d"%(secondNum,firstNum,firstNum*secondNum)+" " print resultLine # #1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 #1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 #1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 #1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 #1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 #1*4=4 2*4=8 3*4=12 4*4=16 #1*3=3 2*3=6 3*3=9 #1*2=2 2*2=4 #1*1=1
转载请注明出处,谢谢。