第四天 循环
一、循环结构- 可以让代码重复执行,代码写一次,执行多次. for循环和while循环
1、for循环: python与java的for循环完全不一样
语法:
for 变量 in 序列:
循环体
说明: for、in - 关键字
变量 - 变量名(已经定义过的变量的变量名,也可以是没有定义的)
序列 - python中容器型数据类型对应的数据。(例如:字符串、列表、元祖、迭代器、生成器、字典)
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句(至少一个条件),循环体就是会被重复执行的代码
执行原理: 让变量去序列里取值,取一个值就执行一次循环体。一个一个的取,取完为止。
for循环循环次数和序列中元素的个数有关
java中for循环的执行原理:
Java中for循环的语法机制以及运行原理:
for(初始化表达式;布尔表达式;更新表达式){
循环体(由java语句构成);
}
注意:
1、初始化表达式最先执行,并且在整个循环中只执行一次。
2、条件表达式结果必须是一个布尔类型,也就是true或者false。
执行原理:先执行初始化表达式,并且初始化表达式只执行一次。然后判断条件表达式的结果,如果是true,则执行循环体。
循环体结束之后,执行更新表达式。更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。
直到更新表达式执行结束之后,再次判断条件时,条件为false,
for循环终止。
更新表达式的作用是:控制循环的次数,换句话说,更新表达式会更新某个变量的值,这样条件表达式的结果才又可能从true变成false,从而
终止for循环的执行。如果缺少更新表达式,很有可能会导致死循环。
2、range函数
1、作用:产生一个等差数列,这个差在程序中叫做步长
2、用法:
1、range(N) _ 产生【0,N),差是1的等差数列。N必须是正整数 左闭右开区间, range(3)结果为 0,1,2
2、range(M,N) - 产生【M,N), 差是1的等差数列。 要求M必须小于N
3、range(M,N,step) 产生[M,N) 差是step的等差数列。 range(10,4,-1) - 10,9,8,7,6,5
for i in range(3):
# print(i)
# print("===================")
# for x in range(-3, 3):
# print(x)
for i in range(5):
print(i)
print("执行5次")
for x in range(1, 5):
print(x)
print("执行4次")
for m in range(1, 5, 2):
print(m)
print("执行2次")
3、求和套路:
(1)定义一个变量保存最后的和,变量默认值是0;
(2)通过循环获取到要求和的数据。
(3)取到一个数就往保存和的变量中加一个数据。
sum=0
for i in range(1,101):
sum+=i
pri(sum)
4、统计个数套路
# 统计score中小于60的个数
scores = [45, 78, 90, 45, 67, 100, 90, 98, 76, 55]
# 定义一个变量保存最后的个数,默认值是0
cnt = 0
# 通过循环获取所有的统计对象
for g in scores:
if g < 60:
cnt += 1
print("小于60的个数", cnt)
# 统计100(1-99)以内能被3整除的数的个数
count = 0
for f in range(1, 100):
if f % 3 == 0:
count += 1
print("能被3整除的数的个数", count)
# 方法二
count1 = 0
for x in range(3, 100, 3):
count += 1
print("能被3整除的个数", count1)
3、while循环
语法:
while 条件语句:
循环体
while - 关键字:固定写法
条件语句 - 任何有结果的表达式 比如:具体的数据,已经赋值过的变量、运算表达式(赋值运算除外)
: 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句(至少一条);循环体就是需要重复执行的代码
执行过程:先判断条件是否为true。如果为true就执行循环体,执行完再判断条件语句结果是否为TRUE。然后继续执行循环体
直到判断条件语句结果为FALSE,循环就结束。
极端: 一开始就是false,就不执行。 也有可能结果一直都是true,就进入死循环,从而导致后面的代码不执行。
# 打印 1,2,3,4,5
for x in range(1, 6):
print(x)
num = 1
while num < 5:
print(num)
num += 1
for和while的选择
# 如果循环次数确定,就选择for。 如果循环次数不确定,就选择while
练习: 提示用户输入数据直到输入的值是0
a = 1 # a的初始值只要不是0都可以。如果不定义的话,会使得while那里报错,因为没有定义变量
while a != 0:
a = int(input("请输入一个数"))
# 练习 完成猜数字游戏
'''
游戏开始产生一个0-100的随机数,让用户不断输入数字,直到输入的数字和产生的随机数相等为止。如果猜错给出打了或者小了
的提示
'''
import random
value = random.randint(0, 100) # value的值就是0到100的随机数
num = int(input("请输入一个数字"))
while num != value:
if num > value:
print("你输入的数大了")
else:
print("你输入的数小了")
num = int(input("请输入一个数字")) # 如果没有这行代码,循环体就会以第一次输入的数据继续循环下去
print(value)