Loading...
墨滴

瀋凣

2021/06/03  阅读:45  主题:极简黑

python笔记12

Python day12

1.循环结构

1.1 while循环

while condition:
    statement(s)
    break(or continue)
else:
    statement(s)

1.2 for循环

1.2.1 语法

for 变量 in 可迭代对象:
    statement(s)

什么是可迭代对象呢?
指的就是元素可以被单独提取出来的对象。比如字符串(String)就是可迭代对象。

那什么是迭代呢?
比如:

有一串字符串:
"QMRobot"
每一次从这个字符串里拿出一个字符出来:
Q  M  R  o  b  o  t 

这个拿出的过程我们就称之为迭代。

1.2.2 举个栗子

>>> for each in "QMRobot":
        print(each)

执行结果

Q
M
R
o
b
o
t

来看看这串代码到底做了些什么:
for循环每一次从字符串"QMRobot"里面取出一个字符,并赋值给变量each,而循环体内只有一行代码那就是将变量each给打印出来。

那么同样的需求,使用while循环是否能够实现呢?
当然可以:

>>> i = 0
>>> while i < len("QMRobot"):
        print("QMRobot"[i])
        i += 1

执行结果

Q
M
R
o
b
o
t

但是代码相比for循环要繁琐一点,并且代码量也变多了。超纲的代码我们以后会讲。

我们是否可以仿照之前while循环的写法计算从1累加到10000的结果呢?
试一试:

>>> sum = 0
>>> for i in 10000:
        sum += i
        
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
TypeError: 'int' object is not iterable
>>> 

翻车了?我们来看看报错:TypeError: 'int' object is not iterable 整数类型的对象是无法迭代的。

那咋办呢?

1.3 range()函数

内置函数range(),可以生成数字序列,是一个可迭代对象。

1.3.1 语法

range(stop)
range(start,stop)
range(start,stop,step)

- start: 计数从start开始。默认是从0开始。
- stop: 计数到stop结束,但不包括stop。
- step:步长,默认为1

1.3.2 举栗子

  • range(stop)
>>> for i in range(5):
        print(i)

执行结果

0
1
2
3
4
  • range(start,stop)
>>> for i in range(5,10):
        print(i)

执行结果

5
6
7
8
9 
  • range(start,stop,step)
>>> for i in range(1,10,2):
        print(i)

执行结果

1
3
5
7
9

我们还能让它倒着走:

>>> for i in range(10,1,-2):
        print(i)

执行结果

10
8
6
4
2

1.3.3 练习

从1累加到10000

>>> sum = 0
>>> for i in range(10001):
        sum += i
        
>>> print(sum)
50005000

1.4 打印小星星

思考,用循环结构打印如下图形:

******
******
******
******

代码:

>>> for i in range(4):
        print("******")

但是如果小星星每行有10000个,那么程序员就得累死。
那么有什么更好的方法呢?

我们可以试试循环嵌套的方式:

>>> for i in range(4):
        for j in range(6):
            print("*",end="")
        print()

内层循环控制打印,外层循环控制换行。

举一反三,思考,打印如下图形:

*
**
***
****
*****
******

代码:

>>> for i in range(6):
        for j in range(i + 1):
            print("*",end="")
        print()

其实对于python有更好的解法:

>>> for i in range(6):
        print("*"*(i+1))

练习:
打印如下图形:

*
**
***
****
*****
******
*******
********
*********

作业:
打印乘法口诀表

1 x 1 = 1
2 x 1 = 2 2 x 2 = 4
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9
4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16
5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25
6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36
7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49
8 x 1 = 8 8 x 2 = 16 8 x 3 = 24 8 x 4 = 32 8 x 5 = 40 8 x 6 = 48 8 x 7 = 56 8 x 8 = 64
9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 9 x 4 = 36 9 x 5 = 45 9 x 6 = 54 9 x 7 = 63 9 x 8 = 72 9 x 9 = 81  

代码

for i in range(1,10):
    for j in range(1,i+1):
        print(i,"x",j,"=",i*j,end=" ")
    print()

还有其他方法[1],这里就不多赘述。

思考,打印如下图形:

******
 *****
  ****
   ***
    **
     *
******
*****
****
***
**
*
     *
    **
   ***
  ****
 *****
******
     *
    ***
   *****
  *******
 *********
***********
     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *
***** *****
****   ****
***     ***
**       **
*         *

*         *
**       **
***     ***
****   ****
***** *****

答案:

>>> for i in range(6):
        for j in range(i):
          print(" ",end="")
       print("*"*(6-i))
>>> for i in range(6):
       for j in range(5,i-1,-1):
          print("*",end="")
       print()
>>> for i in range(6):
       for j in range(5,i,-1):
          print(" ",end="")
       print("*"*(i+1))
>>> for i in range(6):
       for j in range(5,i,-1):
          print(" ",end="")
       print("*"*((i+1)*2-1))
>>> for i in range(-5,6):
       for j in range(0,abs(i)):
          print(" ",end="")
       print("*"*((abs(abs(i)-5)+1)*2-1))
>>> for i in range(-5,6):
       for j in range(0,abs(i)):
          print("*",end="")
       print(" "*((abs(abs(i)-5)+1)*2-1),"*"*(abs(i)),sep="")
点点关注不迷路
点点关注不迷路

参考资料

[1]

用python 打印九九乘法表的6种方式 : https://blog.csdn.net/cui_yonghua/article/details/95719103

- END -

瀋凣

2021/06/03  阅读:45  主题:极简黑

作者介绍

瀋凣