瀋凣
V1
2021/07/10阅读:89主题:极简黑
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 1, in <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="")

参考资料
用python 打印九九乘法表的6种方式 : https://blog.csdn.net/cui_yonghua/article/details/95719103
作者介绍
瀋凣
V1