使外层while循环打印十次换行,而内层while在每次外层while循环时循环打印十次星星。
j = 0
while j<10:
# 打印星星
i = 0
while i <10:
print("★",end="")
i+=1
# 打印换行
print()
j+=1
效果:
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
使外层while循环打印十次换行,而内层while在每次外层while循环时循环十次,并每奇数次打印★,偶数次打印☆。
j = 0
while j<10:
# 打印星星
i = 0
while i<10:
if i % 2 == 1:
print("★",end="")
else:
print("☆",end="")
i+=1
# 打印换行
print()
j+=1
效果:
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
使外层while循环打印十次换行,而内层while在每次外层while循环时循环十次,并每当外层循环奇数次时打印★,外层循环偶数次时打印☆。
外层循环动的慢j,内层循环动的快i
j = 0
while j<10:
# 打印星星
i = 0
while i<10:
if j % 2 == 1:
print("★",end="")
else:
print("☆",end="")
i+=1
# 打印换行
print()
j+=1
效果:
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
预期效果:
1*1= 1
2*1= 2 2*2= 4
3*1= 3 3*2= 6 3*3= 9
4*1= 4 4*2= 8 4*3=12 4*4=16
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
代码:
使外层while循环打印九次换行,并创建1~9的被乘数,而内层while的循环次数根据外层创建乘数的大小变化,并创建相应的乘数,然后利用字符串格式化打印出当前乘法公式。
i = 1
while i <= 9 :
# 打印里面的表达式
j = 1
while j<=i:
print( "%d*%d=%2d " % (i,j,i*j) , end = "")
j+=1
# 打印换行
print()
i+=1
预期效果:
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
4*1= 4 4*2= 8 4*3=12 4*4=16
3*1= 3 3*2= 6 3*3= 9
2*1= 2 2*2= 4
1*1= 1
代码:
与方向一不同点在于使外层while循环打印九次时,创建的被乘数颠倒为9~1。
i = 9
while i>=1 :
# 打印里面的表达式
j = 1
while j<=i:
print( "%d*%d=%2d " % (i,j,i*j) , end = "")
j+=1
# 打印换行
print()
i-=1
预期效果:
1*1= 1
2*1= 2 2*2= 4
3*1= 3 3*2= 6 3*3= 9
4*1= 4 4*2= 8 4*3=12 4*4=16
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
代码:
与方向一区别在于在内层while循环前新增了一个同层的while循环,用于打印与当前行数对应数量的空格。
i = 1
while i<= 9 :
# 打印空格(一个表达式占了7个空格)
k = 9 - i
while k > 0:
# 打印每组的空格(一组空格是7个)
print(" " ,end="")
k -= 1
# 打印表达式
j = 1
while j<=i:
print( "%d*%d=%2d " % (i,j,i*j) , end = "")
j+=1
# 打印换行
print()
i+=1
预期效果:
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
4*1= 4 4*2= 8 4*3=12 4*4=16
3*1= 3 3*2= 6 3*3= 9
2*1= 2 2*2= 4
1*1= 1
代码:
与方向三区别在于外层创建被乘数顺序颠倒。(同方向一与方向二的区别)
i = 9
while i>=1 :
# 打印空格(一个表达式占了7个空格)
k = 9 - i
while k > 0:
# 打印每组的空格(一组空格是7个)
print(" " ,end="")
k -= 1
# 打印表达式
j = 1
while j<=i:
print( "%d*%d=%2d " % (i,j,i*j) , end = "")
j+=1
# 打印换行
print()
i-=1
求吉利数字:100 ~ 999 666 888 111 222 333 444 … 123 789 567 765 432
# 如789
个位: 789 % 10 = 9
十位: 789 // 10 % 10 = 8
百位: 789 // 100 = 7
利用地板除、取余,将每次输入循环的变量i的个位、十位、百位提取出来进行计算。
i = 100
while i <= 999:
gewei = i % 10
shiwei = i // 10 % 10
baiwei = i // 100
# 三个一样的 666 888
if shiwei == gewei and shiwei == baiwei :
print(i)
# 123 345 789
elif shiwei == gewei - 1 and shiwei == baiwei + 1:
print(i)
# 987 654 321
elif shiwei == gewei + 1 and shiwei == baiwei - 1:
print(i)
i+=1
利用整形与字符串的互相强转,并用索引提取字符串中对应的元素,将每次输入循环的变量i的个位、十位、百位提取出来进行计算。
i = 100
while i <= 999:
num = str(i)
gewei = int(num[-1])
shiwei = int(num[1])
baiwei = int(num[0])
# print(baiwei,shiwei,gewei)
if shiwei == gewei and shiwei == baiwei :
print(i)
# 123 345 789
elif shiwei == gewei - 1 and shiwei == baiwei + 1:
print(i)
# 987 654 321
elif shiwei == gewei + 1 and shiwei == baiwei - 1:
print(i)
i+=1
题目:
公鸡 母鸡 小鸡
公鸡1块钱1只,母鸡3块钱一只,小鸡5毛钱一只
问: 用100块钱买100只鸡,有多少种买法?
x = 0
while x<=100:
y = 0
while y <= 33:
z = 0
while z <= 100:
if (x+y+z == 100) and (x + y*3 + z*0.5 == 100):
print(x,y,z)
z+=1
y+=1
x+=1
if 5 == 5:
pass
案例:打印1 ~ 10 ,遇到5 终止循环
单循环
i = 1 # 输出结果为 1 2 3 4
while i<=10:
if i == 5:
break
print(i)
i+=1
多循环(终止当前循环)
i = 1
while i<=3: # 只终止了嵌套中的、内层的while循环
j = 1
while j <= 3:
if j == 2:
break
print(i,j)
j+=1
i+=1
案例:打印1~10 不要5
i = 1
while i<=10:
if i == 5:
# 手动加1,防止跳过下面的代码,产生没有自增的情况,出现死循环
i+=1
continue
print(i)
i+=1
案例:打印 1 ~ 100 所有不含有4的数字
方法一:
i = 1
while i<=100:
if i % 10 == 4 or i // 10 == 4:
i+=1
continue
print(i)
i+=1
方法二:
i = 1
while i <= 100:
strvar = str(i)
if "4" in strvar:
i+=1
continue
print(i)
i+=1
while+else
else:else的子代码会在循环正常结束的情况下运行(break干死while循环的的情况称之为非正常结束)
只有在break生效时才不会运行之后的与while同级的else
# n = 1
# while n<=5:
# if n == 4:
# break
# print(n)
# n+=1
# else:
# print('else的代码运行')
使用while循环打印列表lst中的元素:
lst = [1,2,3,4,5]
i = 0
while i<len(lst):
print(lst[i])
i+=1
使用for in循环打印列表lst中的元素:
lst = [1,2,3,4,5]
for i in lst:
print(i)
lst = [("王健林","王思聪","王美丽"), ("马云","马化腾","马冬梅"),("王宝强","马蓉","宋小宝") ]
for i in lst:
# print(i)
'''
('王健林', '王思聪', '王美丽')
('马云', '马化腾', '马冬梅')
('王宝强', '马蓉', '宋小宝')
'''
for j in i:
print(j)
a,b = 1,2 # a=1 b=2
a,b = [3,4] # a=3 b=4
a,b = {"a":111,"b":222} # a='a' b='b'
a,b,c = ('王健林', '王思聪', '王美丽') # a='王健林' b= '王思聪' c= '王美丽'
print(a,b,c)
lst = [("王健林","王思聪","王美丽"), ("马云","马化腾"),("王宝强",) ]
for i in lst:
for j in i:
print(j)
格式:
range(start,end,step)
start : 开始值(默认为0)
end : 结束值( 最大值获取不到 , 获取到end 这个数之前那个
step : 步长(步长为负时从大到小遍历,默认为1)
while:
i = 1
while i <= 9 :
j = 1
while j<=i:
print("%d*%d=%2d " % (i,j,i*j) ,end="")
j+=1
print()
i+=1
for in:
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%2d " % (i,j,i*j) ,end="")
print()