在上节课中,我们提出一个问题,那要是重复的数字非常大呢?例如一百、一千甚至一万,那岂不是我们要创建一个有很多元素的列表?

python输入分行 python分行输出循环结果_for循环

别急,我们来认识一个新朋友:range()函数。

range()函数可创建一组连续增加的整数,工作方式类似切片,一般用在 for 循环中。

在Python2中返回的是一个整数列表,在Python3中返回的是一个迭代值。

所以,记得,在Python3.0当中,range()函数并不是真正的创建了一个数字列表。

函数语法如下:

range( start, stop [, step] )

参数说明:

start

计数从 start 开始。默认是从 0 开始。

例如range(5)等价于range(0, 5);

stop

计数到 stop 结束,但不包括 stop。

例如:range(0, 5)  是[0, 1, 2, 3, 4]没有5

step

步长,默认为1。

例如:range(0, 5)  等价于 range(0, 5, 1)

这下,循环多次的问题彻底解决了,我们来写一段代码试试,

要求从1数到10。下面这段代码对吗?

for num in range(10):

      print(num)

python输入分行 python分行输出循环结果_Python_02

答案是不对。

虽然完成10次循环,但是它并不是从1开始数的,是从0一直数到9,所以不满足我们的要求。

python输入分行 python分行输出循环结果_取值_03

那下面这段代码呢?

for num in range(1,10):

print(num)

python输入分行 python分行输出循环结果_Python_02

答案也不正确。

python输入分行 python分行输出循环结果_python输入分行_05

虽然这次从1开始数了,但是只数到了9,差一个呢。

正确答案应该是:

for num in range(1,11):

print(num)

再思考一下,如果我们想输出1-20之间,所有的偶数,应该怎么做呢?

python输入分行 python分行输出循环结果_Python_02

for num in range(2,22,2):
print(num)

1-20之间所有的偶数,最小值为2,最大值为20,所以我们需要把start设置为2,而end需要设置为大于20但是小于等于22的数字。(这里设置为21和22结果是一样的,但是其他的数字就不行,思考一下为什么)

偶数是2的倍数,前后两个偶数相差为数字2,所以,这里,我们把步长step设置为2.

输出结果如下:

python输入分行 python分行输出循环结果_取值_07

那如果我想打印一个2的乘法表呢?

python输入分行 python分行输出循环结果_for循环_08

代码如下:

for num in range(1,10):

print("2 * %d = %d" %(num,2*num))

在语句:

print("2 * %d= %d" %(num,2*num))

中,每次循环,输出的结果是“2 * %d = %d”

这里,我们用了2个占位符,用了2种颜色用以区分。

第一个占位符,调用当前循环的num值。

第二个占位符,调用当前循环num的值乘以2的结果。

num的值是从1开始,一直到9,所以输出的结果也就是

2* 1 = 2
2* 2 = 4
2* 3 = 6

….

难度再加大一点!

通过Python代码,输出九九表。

python输入分行 python分行输出循环结果_for循环_09

以为很难吗,其实代码只有4行:

for m inrange(1,10):
    for n in range(1,m+1):
        print('%d * %d = %d \t'%(m,n,m*n),end='')
    print('')

运行结果如下

python输入分行 python分行输出循环结果_Python_10

在这里,我们定义了2个变量,一个是m,一个是n

我们写了2个for循环语句,并且,是在第一个for循环里面又加了第二个for循环,这叫做循环的嵌套。

m的取值从1开始,一直到9

n的取值,从1开始,一直到当前循环的m值

当m=1的时候,n只有一个取值,也是1,所以循环1次,print函数输出 1*1=1

当m=2的时候,n有2个取值,1和2,所以循环2次,print函数先输出2*1=2,然后输出2*2=4

当m=3的时候,n可以等于1,2,3,所以循环3次,print函数依次输出3*1=3,3*2=6, 3*3=9。

后面的计算以此类推。

\t表示一个空挡,相当于键盘上的Tab键,就是为啥你看到程序运行结果中公式是一个一个隔开的很整齐。

python输入分行 python分行输出循环结果_取值_11

如果没有 \t 进行分割,你会看到如下的结果

python输入分行 python分行输出循环结果_python 列表分行打印_12

end=””可以让输出不会自动分行,遇到end后面的字符串才会分行。

在这里,我们用了一个空字符串(就是直接打了一对引号),表示遇到空字符串我们才会另起一行。

那么什么时候会遇到空字符串呢?

大家注意看第二个print缩进的位置。

for m inrange(1,10):
    for n in range(1,m+1):
       print('%d * %d = %d \t'%(m,n,m*n),end='')
    print('')

第二个print明显不是第二个for语句的循环代码块,属于第一个for语句。它表示,当第二个for循环运行完了,就输出一个空字符串,这样,每次打完一个m值的计算,就能另起一行,打下一个m的运算了。主要是排版上好看易于理解。

python输入分行 python分行输出循环结果_Python_10