1、while循环的基础语法
语法格式:
注意事项
- 条件需提供布尔类型结果,True继续,False停止
- 空格缩进不能忘
- 要考虑好循环终止条件,否则将无线循环
"""
while的基础使用
"""
i = 0
while i<5:
print("helloworld")
i+=1
"""
运行结果:
helloworld
helloworld
helloworld
helloworld
helloworld
"""
练习案例:
i = 0
sum = 0
while i<100:
i += 1
sum += i
print(f"1累加到100的和是{sum}")
2、while循环的基础案例
import random
num = random.randint(1,100)
count = 0 #用来记录猜测的次数
flag = True
while flag:
guess_num = int(input("请输入一个数字:"))
count += 1
if guess_num == num:
print("恭喜你,猜中了")
flag = False
elif guess_num < num:
print("你猜小了")
else:
print("你猜大了")
print(f"你总共猜测了{count}次")
3、while循环的嵌套应用
语法格式
- 注意空格缩进,基于空格缩进来决定层次关系
- 注意条件的设置,避免出现无限循环(除非真的需要无限循环)
4、while循环的嵌套案例
打印九九乘法表
补充一、实现print输出不换行
默认情况下是换行,如:print(“Hello”)
如果实现不换行,则是需要在后面加上end = ‘’
如:print(“Hello”,end=’ ')
如果是输出换行,就直接是print(),即输出空内容
print("hello",end='') # 引号里没有空格,如果有空格则相应的输出就是带空格
print("world",end='')
"""
运行结果:
helloworld
"""
补充二、制表符\t
\t效果等同于在键盘上按下:tab键,可以让多行字符串进行对齐
print("Hello world")
print("itheima best")
"""
运行结果:
Hello world
itheima best
"""
print("Hello\tworld")
print("itheima\tbest")
"""
运行结果:
Hello world
itheima best
"""
#控制行数
i = 1
while i<=9:
# 控制每一行的内容
j = 1
while j <= i:
#内层循环的print,不要换行
print(f"{j}*{i}={j*i}\t",end = '')
j += 1
i += 1
print() #print空内容,就是输出一个换行
"""
运行结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
"""
5、for循环的基础语法语法格式
① 基础语法
while循环与for循环对比
例子
name = "xiaoming"
for x in name:
# 就是将name的内容,挨个取出赋予x临时变量
# 就可以在循环体内对x进行处理
print(x)
"""
运行结果:
x
i
a
o
m
i
n
g
进程已结束,退出代码0
"""
注意事项
- 与while循环不同,for循环是无法定义循环条件的
- 理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无线大)
练习案例
name = "itheima is a brand of itcast"
count = 0
for x in name:
if x == "a":
count += 1
print(f"{name}中含有:{count}个字母a")
② range语句
语法1
range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)取得的数据是:[0, 1, 2, 3, 4]
语法2
range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]
语法3
range(num1,num2,num3)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,range(5, 10, 2)取得的数据是:[5, 7, 9]
# range语法1
for x in range(10):
print(x,end=' ')
# 运行结果
# 0 1 2 3 4 5 6 7 8 9
# range语法2
for x in range(5,10):
# 默认步长为1,但是也可以修改步长
print(x,end=' ')
# 运行结果
# 5 6 7 8 9
# range语法3
for x in range(5,10,2):
# 步长修改为2
print(x,end=' ')
# 运行结果
# 5 7 9
练习案例
num = 100
count = 0
for x in range(1,num):
if x % 2 == 0:
count += 1
print(f"1到{num}(不含{num}本身)范围内,有{count}个偶数。")
③ for循环临时变量作用域
红框中的print语句,可以访问到变量i,但是,在规范上是不允许的
如果想在for循环外部访问临时变量,可以在for循环体外定义变量
i = 0
for i in range(5):
print(i,end=' ')
print(i)
# 运行结果:0 1 2 3 4 4
6、for循环的嵌套应用
语法格式
注意事项
- for循环和while循环可以相互嵌套使用
- 注意缩进
练习案例
# i控制行数
for i in range(1,10):
# j控制每行内容
for j in range(1,i+1):
print(f"{j}*{i}={j*i}\t",end='')
print()
"""
运行结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
进程已结束,退出代码0
"""
7、循环中断:break和continue
continue
主要用于:中断本次循环,直接进入下一次循环,用在for循环和while循环的效果是一致的
- 在循环内,遇到continue就结束当前循环,进行下一次,所以后面的语句2不会执行
- 运用场景:在循环中,因某些原因,临时结束本次循环
continue的嵌套应用
for i in range(1,3):
print("语句1")
for j in range(1,3):
print("语句2")
print("语句3")
print("语句4")
"""
运行结果:
语句1
语句2
语句3
语句2
语句3
语句4
语句1
语句2
语句3
语句2
语句3
语句4
"""
print()
for i in range(1,3):
print("语句1")
for j in range(1,3):
print("语句2")
continue
print("语句3")
print("语句4")
"""
运行结果:
语句1
语句2
语句2
语句4
语句1
语句2
语句2
语句4
"""
break
是直接结束循环
- 在循环内,遇到break就结束循环了,即执行了语句1后,直接执行语句3
for i in range(1,100):
print("语句1")
break
print("语句2")
print("语句3")
"""
运行结果:
语句1
语句3
"""
break的嵌套应用
遇到break后,内层循环直接跳出
for i in range(1,5):
print("语句1")
for j in range(1,100):
print("语句2")
break
print("语句3")
print("语句4")
"""
运行结果:
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4
"""
8、综合案例
import random
sum = 10000
for i in range(1,21):
num = random.randint(1, 10) #获得1~10之间的数
if num < 5:
print(f"员工{i},绩效分{num},低于5,不发工资,下一位")
else:
sum -= 1000
print(f"向员工{i}发放工资1000元,账户余余额还剩余{sum}元")
if sum < 1000:
print("工资发完了,下个月领取吧")
break
import random
sum = 10000
for i in range(1,21):
num = random.randint(1, 10) #获得1~10之间的数
if num < 5:
print(f"员工{i},绩效分{num},低于5,不发工资,下一位")
continue
if sum >= 1000:
sum -= 1000
print(f"向员工{i}发放工资1000元,账户余余额还剩余{sum}元")
else:
print("工资发完了,下个月领取吧")
break