python基础教程: while 循环语句用法

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

话不多说,直接开搞,如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

一.while 循环结构

特征:

减少代码冗余,提升代码效率

语法:

while 条件表达式:
	code1
	code2
	...

1.初始化一个变量

2.写上循环的条件表达式

3.自增自减的变量值

案例1:打印1~100
i = 1
while i<=100:
	# 要执行的逻辑 ... 
	print(i)
	i += 1

"""
初始化一个变量 i

第一次循环:
i <= 100 条件成立,执行循环
直接打印 print(i) => 1
i += 1 => i = 2

第二次循环:	
回到17行,重新回到判断,看一看是否满足条件
2 <= 100 条件成立,执行循环
直接打印 print(i) => 2
i += 1 => i = 3

第三次循环:
回到17行,重新回到判断,看一看是否满足条件
3 <= 100 条件成立,执行循环
直接打印 print(i) => 3
i += 1 => i = 4

...
...
依次类推进行循环 ... 

到什么时候结束?
当打印100 结束之后 
i += 1 => i = 101 回到循环的判断条件中
发现101 <= 100 不满足条件,不成立,不执行循环体代码块
到此为止,循环直接结束.

"""
案例2 : 打印1~100的累加和?1+2+3+4+ …+100 ?

方法一

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''
total 负责做累加和
total = 0
i = 1
while i<=100:
	total += i
	i+=1

print(total)

代码解析:

"""
第一次循环:
1 <= 100 条件为真 , 执行循环
total += i => total = total + i => total = 0 + 1
i+=1 => i=2


第二次循环:
回到条件表达式中进行判断 
2<=100  条件为真 , 执行循环
total += i => total = total + i => total = 0 + 1 + 2
i+=1 => i=3

第三次循环:
回到条件表达式中进行判断 
3<=100  条件为真 , 执行循环
total += i => total = total + i => total = 0 + 1 + 2 + 3
i+=1 => i=4

...
...
依次循环


什么时候结束?
total = 0 + 1 + 2 + 3 + ... + 100
i+=1 => i = 101
回到条件表达式中进行判断 
101 <= 100 条件不成立,不执行循环体;
直接终止循环;

print(total)  5050
"""
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599 
'''

方法二

# 1+2+3+4+ .....+100 ? 用while True 的方式实现;
total = 0 
i = 1
sign = True
while sign:
	total += i
	i+=1
	
	# 手动加上终止的条件
	if i == 101:
		sign = False

print(total)
# 这种情况下就不执行循环了;用这样的方式终止循环;
while False:
	print(111)

二.死循环

while True:
	print(123)

(1.单循环练习:

1.打印一行十个小星星
i = 1
while i <= 10:
	print("★",end="")
	i += 1
2.用一个变量打印出一行十个小星星
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''

i = 0
strvar = ""
while i<10:
	# 循环10次,拼接10个星星,每循环一次拼接一个星星
	strvar += "★"
	i+=1
print(strvar)
3.打印一行十个小星星 奇数个打印★ 偶数个打印☆

方法一

i = 1
while i <= 10:
	if i % 2 == 0:
		print("☆",end='')
	else:
		print("★",end="")
	i += 1

方法二

print("-----分割线-------")
count = 1
str_var = ""
while count <= 10:
	if count % 2 == 0:
		str_var += "☆"
	else:
		str_var += "★"
	count += 1
print(str_var)
4.一个循环,打印十行十列小星星
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''
#循环100和星星
i = 1
while i <= 100:
	#1.打印小星星
	print("★",end='')
	#2.打印换行
	if i % 10 == 0:
		print()
	i += 1
5.一个循环 打印十行十列隔列变色小星星

方法一

i = 0
while i < 100:
	if i % 2 == 0:
		print("☆",end="")
	else:
		print("★",end='')
	if i % 10 == 9:
		print()
	i += 1

方法二
_str_var = “”

count = 1
while count <= 100:
	if count % 2 == 0:
		_str_var += "☆"
	else:
		_str_var += "★"
	if count % 10 == 0:
		_str_var +="\n"
	count += 1
print(_str_var)
6.一个循环 打印十行十列隔行变色小星星
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''

i = 0
while i < 100:
	#打印星星
	if i // 10 %2 == 0:
		print("☆", end="")
	else:
		print("★",end="")
	if i % 10 == 9:
		print()
	i += 1

(2.pass break continue

1.pass 过 (当不能直接在代码块中写上具体代码时,先用pass占位;)
num = 10
if num == 10:
	pass


i = 0
while i<10:
	pass
	i+=1
2.break 终止当前循环,只能用在循环当中
# 打印1~10 ,遇到5就终止循环
# 单循环 (终止当前循环)
i = 1
while i<=10:
	
	if i == 5:
		break
		
	print(i)
	
	i+=1

多循环 (终止当前循环)

i = 0 
while i<3:
	j = 0
	while j<3:
		if j ==2:
			break
		print(i,j)
		j+=1
	i+=1
# 不能再循环外使用break
"""
if 5==5:
	print(111)
	break
"""
3.continue 跳过当前循环,从下一次开始 ,只能用在循环当中

打印1 ~ 10 不包括5

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''
i = 1
while i<=10:
	
	if i == 5:
		# 手动加1 , 防止跳过下面代码,忽略自增形成死循环;
		i+=1
		continue
	print(i)
	i+=1

打印1~100 所有不含有4的数字;

"""
// 地板除可以取一个数的高位
%  取余  可以取一个数的低位

任意数 // n 会产生n个相同的数字
任意数 %  n 取值范围是0~(n-1)
"""

方法一

i = 1
while i<=100:
	
	if i % 10 == 4 or i // 10 == 4:
		# 手动自增1,防止死循环
		i+=1
		continue
	print(i)
	i+=1
	

方法二 in

i = 1
while i<=100:
	strvar = str(i)
	if '4' in strvar:
		i+=1
		continue
		
	print(i)
	i+=1

(3.双层循环练习

1.十行十列小星星
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''

#j动1次,i动10次,外层循环动的慢.内层循环动的快
j = 0
while j<10:
	#打印星星
	i = 0
	while i < 10:
		print("*",end='')
		i += 1
	# 打印换行
	print()

	j += 1
2 双层 十行十列隔列换色小星星
j = 0
while j<10:
	#打印一行十个星星
	i = 0
	while i < 10:
		if i % 2 == 0:
			print("☆",end='')
		else:
			print("★",end='')
		i += 1
	#打印一个换行
	print()
	j += 1
3双层 十行十列隔行换色小星星
"""
当j = 0 时,在内存循环,循环了10次 ☆
当j = 1 时,在内层循环,循环了10次 ★
"""
print("------分割线------")
j = 0
while j < 10:
	#打印一行十个小星星
	i = 0
	while i < 10:
		if j % 2 == 0:
			print("★",end='')
		else:
			print("☆",end='')
		i += 1
	#打印一个换行
	print()
	j += 1
4.打印99乘法表
"""
外层的i控制行 里层的j控制列
当前j跟当前行数有关系,不能大于当前行 所以j <= i
"""

方法一(正序 1~9)

i = 1
while i <= 9:
	j = 1
	while j <= i:
		#字符串的格式化 让最后的乘积占用2位,据右边显示;
		print("%s*%s =%2s"%(i,j,i*j),end=" ")
		j += 1
	print()
	i += 1
"""
'字符串'%(值1,值2,值3,......)
%s 字符串占位符
res = "%s * %s = ?"% (5,6)
print(res)
"""

方法二(倒序 9 ~1)

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:702813599
'''
i = 9
while i >= 1:
	#字符串的格式化 让最后的乘积占用2位,据右边显示;
	j = 1
	while j <= i:
		#字符串的格式化 让最后的乘积占用2位,据右边显示;
		print("%d*%d=%2d"% (i,j,i*j),end=' ')
		j += 1
	#打印换行
	print()
	i -= 1

方法三

i = 1
while i <= 9:
	#(1)先打印空格
	k = 9 - i
	while k > 0:
#	"""打印空格"""
		print("      ",end="")
		k -= 1

	#print("       "*(9-i),end="")
	#(2)打印表达式
	j = 1
	while j <= i:
		print("%d*%d=%2d"% (i,j,i*j),end="")
		j += 1
	#(3)打印换行
	print()
	i +=1

print("-----分割线-----")

方法四

i = 9
while i > 0:
	k = 9 - i
	while k > 0:
		print("         ",end='')
		k -= 1
	# print("       "*(9-i),end='')
	# (2) 打印表达式
	j = 1
	while j <= i:
		#字符串的格式化 让最后的乘积占用2位,据右边显示;
		print("%d*%d = %2d"% (i,j,i*j),end=' ')
		j += 1
	#打印换行
	print()
	i -= 1
5 求吉利数字100 ~ 999 666 888 111 222 333 444 … 123 789 567 987 321 543 210
"""
// 地板除可以获取一个数的高位
% 取余 可以获取一个数的低位

98 98 % 10 => 8
98 98 // 10 => 9

678
个位 = 678 % 10 => 8
十位 = 678 // 10 %10 => 7
百位 = 678 // 100 => 6
"""

方法一

i = 100
while i <= 999:
	gewei = i % 10
	shiwei = i // 10 % 10
	baiwei = i // 100

	#gewei = shiwei = baiwei 三者相同
	if shiwei == gewei and shiwei ==baiwei:
		print(i)

	#678
	if shiwei == gewei -1 and shiwei == baiwei + 1:
		print(i)

	#876
	if shiwei == gewei + 1 and shiwei == baiwei - 1:
		print(i)
	i += 1

方法二 字符串形式写

print("-----分割线-------")
i = 100
while i<= 999:
	num = str(i)
	#"987"
	geiwei = int(num[-1]) #7
	shiwei = int(num[1]) #8
	baiwei = int(num[0]) #9

	if shiwei == gewei and shiwei == baiwei:
		print(i)

	if shiwei == gewei - 1 and shiwei == baiwei + 1:
		print(i)

	if shiwei == gewei + 1 and shiwei == baiwei - 1:
		print(i)

	i += 1
经典题: 百钱买百鸡

公鸡,母鸡,小鸡,公鸡1块钱一只,母鸡3块钱一只,小鸡是5毛钱一只,

问100块钱买100只鸡,有多少种买法

穷举法: 一个一个拿出来试

x [1,2]
y [3,4]
z [5,6]

满足 x+y+z = 10

1 + 3 + 5 = 9
1 + 3 + 6 = 10 ok

1 + 4 + 5 = 10 ok
1 + 4 + 6 = 11 

2 + 3 + 5 = 10 ok
2 + 3 + 6 = 11

2 + 4 + 5 = 11
2 + 4 + 6 = 12

公鸡x只,母鸡y只,小鸡z只

x+y+z = 100 #一百只鸡
x+3+y*1+0.5*z = 100

两个条件同时满足

x = 0
total = 0
while x<=100:
	y = 0
	while y<= 33:
		z = 0
		while z <= 100:
			if(x+y+z == 100) and (x+3*y+0.5*z == 100):
				total += 1
			z += 1
		y += 1
	x += 1
print(total)

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀👇👇👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值