注意:
1、for循环常用来遍历。while循环常用来进行指定次数的循环。当for结合范围函数range时,可以替代while循环。
2、程序的三种结构:顺序、循环、分支(判断)。
(1)顺序结构 :代码由上而下执行。
(2)循环结构:根据条件,去循环的执行特定的代码。
(3)分支结构:根据条件,有选择性的去执行特定的代码。
3、死循环:程序一直在执行,无法终止。忘记在循环内部修改循环的判断条件,导致程序持续的在运行。
4、循环在程序中常用的功能就是用来计数。在循环开始之前,先定义一个变量,用来存放计算的结果,在循环内部对这个变量进行计算,循环结束后,输出这个变量的值。
例如:下面这就是一个死循环。
i = 0
while i < 3:
print("hello word")
结果:
hello word
hello word
hello word
hello word
hello word
。
。
。
如果条件成立,那就执行循环的代码,如果条件不成立,循环就终止。
格式:
while 条件:
要循环的代码
例如:输出0-5连续的数字。
a = 0
while a < 6:
print(a)
a += 1
结果:
0
1
2
3
4
5
法2:
for i in range(0, 6):
print(i)
结果:
0
1
2
3
4
5
a = 0
while a < 6:
print(a, end="")
a += 1
结果:
012345
例如:输出5~0连续的数字。
a = 5
while a > -1:
print(a)
a -= 1
结果:
5
4
3
2
1
0
法2:用for 循环写
for i in range(5, -1, -1):
print(i)
结果:
跟上面一样
例如:求1~100所有数字的和。
a = 0
sum = 0
while a < 101: # 或写成 a <= 100
sum += a
a += 1
print(sum)
结果:
5050
法2:
sum = 0
for i in range(1, 101):
sum += i
print(sum)
结果:
5050
其实,循环在程序中常用的功能就是用来计数。在循环开始之前,先定义一个变量,用来存放计算的结果,在循环内部对这个变量进行计算,循环结束后,输出这个变量的值。
例如:计算50~115之间所有数字的和。
a = 50
sum = 0
while a < 116:
sum += a
a += 1
print(sum)
结果:
5445
法2:
sum = 0
for i in range(50, 116):
sum += i
print(sum)
结果:
5445
break 和 continue 都是在循环结构中使用的关键字。
条件满足时,直接退出循环。遇到break,循环立刻终止。一般常在循环内部,通过if 的条件判断,来执行break。
例如:当用户输入exit时,while循环终止。
while True:
str1 = input('请输入字符:')
if str1 == 'exit':
break
结果:
请输入字符:12
请输入字符:a
请输入字符:exit
进程已结束,退出代码 0
注意:while True: 是人造死循环。当代码不知道要循环多少次的话,可以使用人造死循环。
需要注意的是,在人造死循环的内部,一定要有 if 结合break来退出循环的机制,否则,程序真的就会变成死循环了。
结束本次循环,开始下轮循环。也就是说,当条件满足时,continue后面的代码将不再执行,而是将继续开始下轮的循环。
也就是说,当条件满足时,不希望程序执行循环的代码,但又不想退出循环,此时就可以使用continue。
循环一旦遇到continue,就不再执行continue下面的循环代码了,而是直接返回到循环开始判断条件的地方继续进行下轮的循环。
需要注意的是:在continue中,变量改变的部分(例如a +=1,要写在conniue的前面)需要特别小心,否则一不小心就会变成死循环。
例如:输出1~5之间的数字,但不输出3 。
a = 0
while a < 5:
a += 1
if a == 3:
continue
print(a)
结果:
1
2
4
5
法2:
for i in range(1, 6):
if i == 3:
continue
else:
print(i)
结果:
1
2
4
5
例如坑,如果把条件处理的部分,即:a+=1 放到print(a)的下面,就会成为死循环。
a = 0
while a < 5:
if a == 3:
continue
print(a)
a += 1
结果:
0
1
2
此时,程序一直都不会结束,因为,当a=3时,continue后面的代码将不再执行,也就是说,不能打印3,也不能执行a+=1,所以程序就会卡死在那,不继续往下执行,也不会主动结束。所以,使用continue时,一定要特别注意,否则很容易成为死循环。
例如:输入任意一个数代表打印hello word的行数,比如,输入1打印一行,输入3打印三行,如果大于5,最多也只打印5行。
法1:
num = int(input("请输入一个数:"))
a = 0
while a < num:
print("hello word!")
a += 1
if a >= 5: # 不管输入的值多大,一旦a到了5就退出循环
break
结果:
请输入一个数:10
hello word!
hello word!
hello word!
hello word!
hello word!
请输入一个数:2
hello word!
hello word!
法2:
num = int(input("请输入打印的行数:"))
for i in range(0, num):
if i >= 5:
break
print("hello word!")
结果:
请输入打印的行数:7
hello word!
hello word!
hello word!
hello word!
hello word!
请输入打印的行数:5
hello word!
hello word!
hello word!
hello word!
hello word!
请输入打印的行数:1
hello word!
一个循环语句里面还有其它的循环语句。
while 条件:
while 条件:
循环的代码
例如:图片所示为,内外循环的展示图。
例如:打印如下星星。
***
***
a = 0
while a < 2: # 外循环
b = 0
while b < 3: # 内循环
print("*", end='')
b += 1
print() # 输出一个空的回车换行
a += 1
结果:
***
***
法2:
for a in range(0, 2):
for b in range(0, 3):
print("*", end="")
print()
结果:
***
***
改进1:不写这么死,把行数写活。
法1:
num = int(input("请输入行数:"))
a = 0
while a < num: # 外循环
b = 0
while b < 3: # 内循环
print("*", end='')
b += 1
print() # 输出一个空的回车换行
a += 1
结果:
请输入行数:2
***
***
请输入行数:4
***
***
***
***
法2:
num = int(input("请输入行数:")) for a in range(0, num): for b in range(0, 3): print("*", end="") print()
结果:
请输入行数:2
***
***
请输入行数:4
***
***
***
***
改进2:输出一个正星星,即:如果是一行就输出一个*,如果是两行就出来两行两列星星,以此类推。
法1:
num = int(input("请输入想要的行数:"))
a = 0
while a < num:
b = 0
while b < num:
print("*", end="")
b += 1
print()
a += 1
结果:
请输入想要的行数:1
*
请输入想要的行数:2
**
**
请输入想要的行数:3
***
***
***
请输入想要的行数:4
****
****
****
****
法2:
num = int(input("请输入行数:"))
for i in range(0, num):
for j in range(0, num):
print("*", end="")
print()
结果:
同上
例如:打印如下星星。
*
**
***
****
*****
法1
num = int(input("请输入行数:"))
a = 0
while a < num:
b = 0
while b <= a:
print("*", end='')
b += 1
print()
a += 1
结果:
请输入行数:5
*
**
***
****
*****
请输入行数:2
*
**
请输入行数:3
*
**
***
法2:
num = int(input("请输入行数:"))
for i in range(0, num):
for j in range(0, i + 1):
print("*", end="")
print()
结果:
同上
搞笑的写法:
a = 1
while a < 4:
print("*" * a)
a += 1
结果:
*
**
***
例如:打印如下数字星星。
1
12
123
1234
12345
num = int(input("请输入行数:"))
a = 1
while a <= num:
b = 1
while b <= a:
print(b, end="")
b += 1
print()
a += 1
结果:
请输入行数:2
1
12
请输入行数:3
1
12
123
请输入行数:5
1
12
123
1234
12345
法2
num = int(input("请输入行数:"))
for i in range(1, num+1):
for j in range(1, i + 1):
print(j, end="")
print()
结果:同上
例如:打印九九乘法表。
法1
a = 1
while a < 10:
b = 1
while b <= a:
print("%dx%d=%d" % (b, a, a * b), end='\t')
b += 1
print()
a += 1
结果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
法2:
for i in range(1, 10): # 管行
for j in range(1, i + 1): # 管列,第一行1列,第二行两列。。。
print("%dx%d=%d" % (j, i, i * j), end="\t")
print()
结果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
for循环主要用来遍历。所谓遍历就是,在循环内部通过一个变量,就可以把字符串当中的每一个字符都提取出来。字符串里面有多少个字符,for就会循环多少次。列表、元组等也是同样的道理。
for 常结合range实现指定次数的循环,去替代while循环。
格式:
for 变量 in 字符串:
循环代码
举例,见上面while循环的案例,方法2 。
while循环用在指定次数的循环。
for循环主要用来遍历。但是,当for 结合range函数时,可以替代while循环。
while和for可以互换,但一般情况下,没必要互换,应情况而定,哪个简单用哪个。
用来生成一个指定范围的数字序列。
格式:
range(start,stop,step) 即:
range(范围的开始值,范围结束值(但不包含stop自己本身),步长)
步长,可以为负数,此时,表示降序的范围,正数则表示升序的范围,默认值为1,可以省略不写。
for i in range(1, 5): # for用来遍历,所以这里遍历的就是一个范围,i就是范围中的每个数字。
例如:
for i in range(1, 5): # for用来遍历,所以这里遍历的就是一个范围,i就是范围中的每个数字。
print(i)
结果:
1
2
3
4
for i in range(6, 1, -1):
print(i)
结果:
6
5
4
3
2
for i in range(1, 10, 2):
print(i)
结果:
1
3
5
7
9
例如:用for实现6以内所有偶数的和。
sum = 0
for i in range(0, 7, 2): # 2,4,6
sum += i
print(sum)
结果:
12