近期给公司培训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 高效加载大图

    在写代码的时候就已经解释: /** * 计算samplesize的大小 * @param options 传一个BitmapFactory.Options 进去获取图片的大小和类型 * @param ...

  2. jQuery侧边栏固定

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. css2----单行过长的省略处理

    li{ width:300px; white-space:nowrap;表示怎样处理li容器中的空白部分,nowrap表强制不换行,直到文本结束或碰到</br> text-overflow ...

  4. The Layout Process on Mac OSX and iOS

    First we will recap the steps it takes to bring views on screen with Auto Layout enabled. When you’r ...

  5. php 得到一个文件夹下的所有文件,包括子文件中的文件

    $dir = FCPATH."uploads/attachment/"; $this->getFiles($dir); function getFiles($dir) { $ ...

  6. 域环境下装SQL SERVER的一次惨痛经历

    SQL SERVER 2008 R2 其实sql server不建议装在域环境下的,但sharepoint必须用域用户来连接.这本来也不是个什么大问题,但是,这一次相当的不顺利哦. 我有单独的域控,单 ...

  7. tensorflow2

    # step1 加载包import tensorflow as tf import numpy as np # step2 输入:随机产生数据 # Create 100 phony x, y data ...

  8. option对象概念

    一.基础理解: var e = document.getElementById("selectId");   e.options = new Option("文本&quo ...

  9. LintCode Binary Tree Maximum Path Sum

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  10. UVA 11235 频繁出现的数值 RMQ

    题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...