近期给公司培训Python,好好啃了啃书本,查了查资料,总结一些知识点。

------------------------------------------------------------------------------------

①:首先引入课后布置给同学们的作业吧,打印99乘法表:

Print below multiplication table: 
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

-------------------------------------------------------------------------------------

当然主要是考察大家是不是会用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

转载请注明出处,谢谢。

Python从题目中学习:range()和xrange()的更多相关文章

  1. Python从题目中学习:List comprehension

    九九乘法表作业其实有更简单的做法,就是用列表推导式. ------------------------------------------------------------------------- ...

  2. Python从题目中学习:random() module

    最近在给公司培训Python,布置了一道题: ----------------------------------------------------------------------------- ...

  3. Python中的range和xrange区别

    range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>> r ...

  4. python中的range与xrange

    range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中. class range(stop) class rang ...

  5. python开发_python中的range()函数

    python中的range()函数的功能hen强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If you do need to iterate over a sequence o ...

  6. 实验比较python中的range和xrange

    1 结论: 全用xrange,除非你需要使用返回的列表 2 实验一:性能对比 实验环境:win7 ,64位系统 python2.7 import time StartTime=time.time() ...

  7. python(47):range和xrange的区别和联系

    range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. 比如: >>> range(5)[0, 1, 2, ...

  8. 从题目中学习java语法

    一.输入输出 1.输入圆的半径,计算并输出圆的周长和面积: import java.util.Scanner; public class zuoye01_circle { public static ...

  9. python的基本知识,range在python2.x中和python3.x中的区别

    这些是最开始学习python时的笔记,今天整理一下,在这里记录一下. 各种基础代码解释 for key,item in enumerate(li): print(key,item) inp=input ...

随机推荐

  1. android 缓存Bitmap 使用内存缓存

    private LruCache<String, Bitmap> mMemoryCache; /** * 判断内存大小 设置位图的缓存空间 */ private void judgeMem ...

  2. 转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log

    Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log出现的异常:java.lang.reflect.Invocat ...

  3. JQuery源码解析(十)

    默认回调对象设计 不传入任何参数,调用add的时候将函数add到内部的list中,调用fire的时候顺序触发list中的回调函数: function fn1(val) { console.log('f ...

  4. Linux中查看文件编码

    在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱 ...

  5. Oracle数据库初级学习 2

    今天我们介绍Oracle数据库中剩余的查询方法,今天的查询方法会比昨天的更为复杂一些(PS:我也是个初学者,请见谅..). 一.分组函数 分组函数是为了区分同一个表中的不同数据而建立,其关键字为GRO ...

  6. Python 基礎 - for流程判斷

    今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...

  7. Jena TDB assembler syntax

    1 introduction Assembler is a DSL of Jena to specify something to build, models and dataset, for exa ...

  8. java中的final关键词

    参考资料: http://www.cnblogs.com/dolphin0520/p/3736238.html final是个修饰词,可以修饰类.方法.变量. 1. 修饰类 修饰类,就表示这个类不能被 ...

  9. mysql给其他用户权限访问我的数据库

    先执行这条语句,给用户权限 grant all privileges on *.* to root@"221.221.185.23" identified by "gyr ...

  10. Kraken taxonomic sequence classification system

    kraken:是一个将分类标签打到短DNAreads上的分类序列器.