循环和判断一样都是最基础最核心的内容
01while循环的基础语法
循环的两个关键:操作和条件,条件:比较,bool类型(要么是ture要么是false)
下面就是循环输出100次小海变大神
""" 演示while循环的基础应用 """ i=0 while i<100: print("小海变大神") i+=1
02案例练习:求1-100的和
""" 演示1-100的和 """ sum = 0 i= 1 while i <=100: sum +=i i+=1 print(f"1-100的和是:{sum}")
03使用while循环,完成猜数字案例
""" 演示while循环的基础案例-猜数字 """ #在1-100中随机获取一个数字 import random num = random.randint(1,100) #print(num) #用于记录猜测的次数,初始count为0,而后用count+=1来记录每次测的数据,每猜一次,count加1 count = 0 #在whlie中无限次的猜测机会 #通过一个布尔类型的变量,做循环是否继续的标记,默认是ture flag = True while flag: guess_num=int(input("请输入你要猜测的数字:")) count+=1 if guess_num==num: print("您猜中了,很棒") flag = False #用于终止while循环 else: if guess_num>num: print("您猜的数字偏大了") else: print("您猜的数字偏小了") print(f"你总共猜测了{count}次")
理解记忆
#使用random随机生成一个数字 import random num=random.randint(1,100) #使用count记录猜的次数,设置初始数值为0 count=0 flag=True while flag: #输入你要猜的数字 guess_num=int(input("请输入你要猜的数字:")) #猜一次,count就+1;最后count就是猜的总次数、 count+=1 if guess_num==num: print("恭喜你猜对了") #猜对了,就让循环停止,这里设置flag变化 flag=False else: if guess_num>num: print("你猜的数字偏大") else: print("你猜的数字小了") print(f"你一共猜了{count}次")
04while循环的嵌套应用
注意使用空格来确保嵌套关系
""" 演示while循环的嵌套使用 需求:表白100天,每天送10枝花 """ #两层循环,外层循环是表白100天的控制,内层是每天表白都送10只花的控制 i=1 while i<=100: print(f"今天是第{i}天,准备表白。。。") #内层循环的控制变量 j=1 while j <=10: print(f"送给小美第{j}只玫瑰花") j+=1 print("小美,我喜欢你") i+=1 print(f"坚持到{i-1}天,表白被拒") #注意根据前面i=1开始,用i<=100来进行判断最后100的时候,会符合条件,进入循环,最后输出101,故最后需要是i-1
注意,当j进入到内置循环中后,会在内层循环中循环10次,当j=11的时候,不再满足while的判断条件时,才能出内层循环,这时候i才能加1,当i再1进入内层循环时候,j又一次定义为1,再次在内层循环中跑10次,才能出内层循环,外层的i才能加1
这里的每天送10枝花,是一枝一枝送的,先送第一枝,再送第二枝,累加到10枝,不是一下送10枝
05while嵌套循环的案例-打印99乘法表
print输出不换行end=' '
print("hello",end='') print("world",end='')
end='',可以控制输出的子符不换行,但同时他单引号之间的空格,将会影响每一行字符之间的空格
print("hello",end=' ') print("world",end='') print() print("hello",end=' ') print("world",end='')
制表符\t--多行字符串进行对齐
print("Hello World") print("itheima best") print("Hello\tWorld") print("itheima\tbest")
打印99乘法表的案例
一共9行,需要有一个外循环来控制行数。每一行的数量也不一样还有有一个能控制每一行输出的控制。也就是外层循环控制行,内置循环控制每一行的内容。再看条件,看行,一共9行,若定义i,那么i<=9.而内层循环中,会发现第一行一个,第二行两个,第三行三个,,,每一行输出的数量是和行数匹配的。若用j表示循环条件,则j<=i.这也就是内层循环的条件。每一行乘的数字是怎么来到呢?第一行1x1.第2行从1开始乘,乘的还都是2,乘到2结束,第3行,从1开始乘,乘到3结束,都乘3。依次类推。也就是说每一行乘的数字都是行数,也就是外层循环的控制数i,而前面乘的数字也就是j,整体来说也就是iX j,每一行都是从1开始乘,知道行数截至是因为,在每次循环时候,都将j重置为1.要注意的就是输出不换行,让对应一行的输出在同一行。也就是print(“i*j”,end= ‘’)同时还发现有对齐的关系,故还要用到\t控制对齐关系。
""" 演示使用while的嵌套循环 打印输出99乘法表 """ #定义外层循环的控制变量,从1开始 i=1 while i<=9: #定义内层循环的控制变量 j =1 while j<=i: #内层循环的print语句,不要换行,注意要表示出来谁乘以谁等于谁,要用\t制表符对齐,用end=''来控制换行 print(f"{j}*{i}={j*i}\t",end='') j+=1 i+=1 print() #打印一个空内容,也就是换行的意思
06–for循环的基础语句
for循环和while循环的对比
while循环,这里的条件可以自行控制,满足条件就可以循环
for循环,一批内容,逐个处理,取到1,看是否有下一个,有的话,就把2取过来,对2进行处理。当所有的都取完以后,没有下一个了,就不在进行for循环了。
对待处理数据集的数据挨个取出来,每一次循环,就将当前数据赋予这个临时变量
""" 演示for循环是基础语法使用 """ #定义字符串name name = "anquantongwang" #for循环处理字符串 for x in name: print(x)
for循环:它将被处理的数据里面的内容挨个取出赋予临时变量,进而对其进行处理。
python中空格缩进很重要,千万不要忘记了。
07–练习案例-一共有几个a
""" 演示for循环的练习题:数一数有几个a """ #统计如下字符串中,有多少个字母a name = "itheima is a brand of itcast" #定义一个变量,用来统计有多少个a count = 0 #for 循环统计 #for临时变量 in 被统计的数据 for x in name: if x== "a": count+=1 print(f"被统计的{name}中有{count}个a")
#判断输入的字符中有几个a name=input("请输入你要判断有几个a的字符串:") count=0 for x in name: #这里的a是字符串要加双引号 if x=="a": count+=1 #输出要在循环外面,否则就会每次循环都输出一遍 print(f"你输入的字符{name}一共有{count}个a")
08–range语句
range语句-获得一个简单的数字序列
#range语法1 range(num),配合for循环使用,range(num)严格来说就是个序列 for x in range(10): print(x,end='')
#range 语法2 range(num1,num2) for x in range(5,10): print(x,end='')
#range 语法3 range(num1,num2,step) for x in range(5,10,2): print(x,end='')
#拓展代码 for x in range(10): print(f"{x}\t",end=' ') print( ) for x in range(5,9): print(f"{x}\t",end=' ') print() for x in range(2,9,2): print(f"{x}\t",end=' ')
有什么用呢?
i=1 while i<= 10: print("送玫瑰花") i+=1
这是送了10朵玫瑰花
for x in range(10): print("送玫瑰花")
两者效果是一样的
#代码升级效果 i=1 while i<=10: print(f"送你第{i}玫瑰花") i+=1
for x in range(11): print(f"送你第{x}玫瑰花")
range是从0开始到10结束,这里的是range(11)
效果一样的代码如下
#当步长是1的时候属于默认步长,可以不写 for x in range(1,11): print(f"送你第{x}玫瑰花")
练习案例–有几个偶数
count=0 num=int(input("请输入从1开始最后的截止数字:")) #range遍历的时候不遍历num,为了能够包含这个数字,这里使用num+1 for x in range(1,num+1):` #判断是否为偶数,即是判断对2求余是否为0 if x%2==0: count+=1 print(f"从1开始截止数字{num}共有{count}个偶数")
09–for循环的基础语法-变量作用域
""" 演示python for循环临时变量的作用域 """ for i in range(5): print(i) print(i)
这里就不符合规范,规范是软要求,而规则就是硬要求,不建议这样使用哦。
那到底如何正常的在for循环外调用这个I呢?很简单,在for循环外定义这个i就i就就可以了。
就不在有黄色提醒了
10-for循环的嵌套使用
""" 演示for循环的嵌套 """ #坚持表白100天,每天都送10朵花 i=1#定义好i,让代码规范使用 for i in range(1,101): print(f"今天是向小美表白的第{i}天") #写内层循环 for j in range(1,11): print(f"送给小美的第{j}朵玫瑰花") print(f"小美,我喜欢你(第{i}天的表白失败结束)") print(f"第{i}天,表白成功")
#书写规范,最后还要用到i,这里先给i赋初值1 i=1 for i in range(1,101): for j in range(1,11): print(f"这是第{i}天送的第{j}朵花") print(f"第{i}天的表白失败") print(f"坚持了{i}天,终究是表白失败了")
i=1 while i<=100: for j in range(1,11): print(f"这是第{i}天,表白的第{j}次") print(f"表白的第{i}天以失败结束告终") i+=1 #注意这里是i-1天,当循环到i00时候,下面又加了一次1,再到上面的101<=100,不符合条件,才跳出循环,所以这里用i-1 print(f"表白了{i-1}天,终究是失败了")
11–用for循环打印99乘法表
两层循环来控制,外层循环来控制行数,内层循环控制每一行的内容
""" 演示for循环打印99乘法表 """ #通过外层循环控制行数,从1开始到9结束,所以是range(1,10) for i in range(1,10): #通过内层循环控制每一行的内容输出,因为每一行的输出内容不一样,是和行号有关的,故要用到i,i+1正好输出为i for j in range(1,i+1): #内层循环中输出每一行的内容,用\t对齐,用end=''来使其在同一行 print(f"{i}*{j}={i*j}\t",end='') #外层循环通过print输出一个换行 print()
12-循环中断continue和break
continue-结束本次循环,进入下一次循环
遇到contiune,本次循环结束,进入到下一次循环,上面例子中只会输出语句1,不会输出语句2
语句2也有黄色警告提醒
continue在循环中只能控制他所在的循环的中断
#演示continue的嵌套应用 for i in range(1,6): print("语句1") for j in range(1,6): print("语句2") continue print("语句3") print("语句4")
会输出1个语句1,5个语句2,语句3无法输出,再有一个语句4,如此重复5次,就是输出的结果
break-直接结束循环
for i in range(1,101): print("语句1") break print("语句2") print("语句3")
只输出语句1和语句3,也就是遇到break,整体循环就结束了
continue只是结束了这次循环,后面的一条语句不执行,但是这个循环还会继续下去,而break是结束了循环,直接将循环给结束掉了、
break在嵌套循环中的应用-它所造循环的结束
只对编号1生效,对编号2不生效
#演示break的嵌套应用 for i in range(1,6): print("语句1") for j in range(1,101): print("语句2") break print("语句3") print("语句4")
生成一句语句1,一句语句2,一句语句4,重复5次,这也就是说在内层循环中执行完语句2就被中断了,结束了循环,而外层循环还在继续,再一次执行外层循环时候,内层循环又是只是执行了一次
13-循环综合案例
""" 综合案例-给员工发工资 """ money=10000 #for循环对员工发放工资 for i in range(1,21): #随机生成一个数字 import random score = random.randint(1,10) # import random # score = random.randint(1,10) #判断生成的随机数字是否满足发工资的要求 if score <5: print(f"员工{i}绩效分{score},不满足,不发工资,下一位") #continue终止这次循环,进入下一个,也就是跳过发放 continue #判断余额是否够发工资 if money >= 1000: money -=1000 print(f"员工{i},满足条件发放工资1000,公司账户余额:{money}") else: print(f"余额不足,当前余额:{money}元,不足以发工资,不发了,下个月有工资再说") #break结束发工资 break