1.range()
range()函数用于生成一个数列,可以认为是一个等差数列。
函数具体形式为:range(start, stop, step)。start为开始,即起始数值,生成的数列包含起始值;stop为终点,即结束位置,生成的数列不包含结束位置的值;step为步长,即增量,当start>stop时,步长为负值,此时生成的数列是逆序。
参数stop终点是必须有的,在未说明start开始和step情况下,start默认为0,step默认为1。
range()函数三种使用情况:①range(stop);②range(start, stop);③range(start, stop, step)
代码案例如下:
# range(stop)
datas = range(9)
print(list(datas))
# datas = range(9) 等同于 datas = range(0, 9, 1)
datas = range(0, 9, 2)
print(list(datas))
# range(start, stop)
datas = range(1, 9)
print(list(datas))
# range(start, stop, step)
datas = range(4, 16, 2)
print(list(datas))
# 当start > stop 时,step步长为负
datas = range(8, 2, -1)
print(list(datas))
执行结果:
2.for循环
循环就是重复多次执行,而for循环是遍历一系列的值或元素(可列举的多个内容),也就是将这些元素都打印出来。for循环遍历迭代的对象可以是range()函数生成的数列、列表、元组、字符串等,不能是整数、小数、None、True、False、一串字母数字等,如果要遍历这些,必须使用引号将这些内容引起来。
如:for i in range(10),是将range结果逐个赋予变量i。
代码案例:
案例1:
for i in range(10):
print("醒醒", i)
此时的结果会打印十次“醒醒”。
案例2:
for c in "axvgjt":
print(c)
执行结果:
案例3:
for e in ["吃了吗", "睡了吗", "饿了么", True, None, 40]:
print(e)
执行结果:
案例4:
# 计算[500,1000]之间3的倍数的平均数
s = 0
# 个数
count = 0
# 获取500-1000之间的数
for i in range(500, 1001):
# 获取3的倍数
if i % 3 == 0:
# 获取3的倍数的和
s = s + i
# 个数+1
count += 1
print(s / count)
3.break和continue
break--结束当前循环;continue--结束本次进入下一轮,循环不结束。
for i in range(6):
if i == 1:
continue
if i == 5:
break
print("888")
i=0 两个if条件都不满足,直接打印888
i=1 满足第一个if条件,结束i=1,往下的代码不执行,直接继续执行i=2
i=2 两个if条件都不满足,直接打印888
i=3 两个if条件都不满足,直接打印888
i=4 两个if条件都不满足,直接打印888
i=5 满足第二个if条件,结束for循环,程序结束
运行结果:
4.for循环嵌套与案例
for循环嵌套规则:外层循环变化一次,内层循环变化一轮。
案例:计算1-5的阶乘相加的和是多少
num = int(input("请输入一个数字"))
total = 0
for i in range(1, num + 1):
# 每次求阶乘都要从1开始算,所以s放内层
s = 1
# 内层循环求阶乘
for j in range(1, i + 1):
s *= j
# 外层循环将五次求得的阶乘逐次相加
total += s
print(total)
九九乘法表:
for i in range(1, 10):
# 内层循环结束一次换行
print()
for j in range(1, i+1):
print(f"{j} * {i} = {j * i}", end=" ")
执行结果:
5.while循环
while 默认条件为真,随着程序运行条件为假
while循环内部需要将条件设置为false,否则会成为死循环
结束while循环:条件为假 或者使用break
案例1:while循环打印10次醒醒了
can_open = True
count = 0
while can_open:
print("醒醒了")
count += 1
if count == 10:
can_open = False
案例2:每次输入一个整数,求输了几次,前面所有整数的和大于100了
count = 0
total = 0
while True:
input_value = int(input("输入数字"))
total += input_value
count += 1
if total > 100:
print(count)
break
执行结果:
6.while循环嵌套
案例:while循环实现九九乘法表
# for 循环使用的是range
i = 1
while i <= 9:
j = 1
while j <= i:
print(f"{j} * {i} = {i * j}", end="\t")
j += 1
print()
i += 1
7.for与while都可以使用else
案例1:for使用else--判断一个数是否为质数
value = 11
for i in range(2, value):
if value % i == 0:
# 如果value能被一个i除尽,此时该数就不是质数
# 跳出循环,下边的else不执行
break
# 如果没有一个i能被value除尽,if条件不满足
# 此时该数是质数
else:
print(value, "是质数")
案例2:while使用else--while循环判断质数
value = 11
i = 2
while i < value:
# 判断是否质数条件
if value % i == 0:
# 如果value能被一个i除尽,i是value的一个因子
# i是从2开始的,到value结束,不包含1和自己本身
# 判断条件就是在求除1和自己本身还有没有其他因数
# 除尽则证明还有除1和自己本身其他的因数
# 所以该数不是质数,跳出循环
break
i += 1
# 上方if条件不满足,该数就是质数
else:
print(value, "是质数"))
小结:
for循环的循环次数是确定的,而while循环的循环次数是不确定的。while循环在执行过程中要手动更新循环条件,使得条件为假,否则将会陷入死循环,即要有适当的退出条件。
while循环一定要写跳出循环的条件!!!
break是跳出整个循环,下方代码不执行,而continue只是将本次的值跳过,继续执行循环中的下一个值。