python-双向循环_关键字pass_break_continue_for循环

1.if 判断 和 while 循环 练习

1.提示户输入马化腾. 判断用户输入的对不对. 如果对, 提示真聪明, 如果不对, 提醒该充值了

name = input("谁是中国人民当中最能抄的?")
if name == "马化腾":
	print("真聪明")
else:
	print("不充值你怎么能变强")

2.根据身高(height)找对象
男生在1米 ~ 1.5米之间 =>打印小强 你在哪里?
男生在1.5 ~ 1.7米之间 =>打印没有安全感~
男生 1.7 ~ 1.8米之间 =>打印帅哥 留个电话
男生 1.8 ~ 2米之间 =>打印帅哥 你建议多一个女朋友吗

height = float(input("请输入您的身高:"))
print(height,type(height))

# python 特有

if 1 <= height <= 1.5:
	print("小强在哪里")
elif 1.5 < height <= 1.7:
	print("没有安全感")
elif 1.7 < height <= 1.8:
	print("帅哥,留个电话")
elif 1.8 < height <= 2:
	print("帅哥,你介意多一个女朋友吗?")
	
# 通用写法

if 1 <= height and height <= 1.5:
    print("小强在哪里")
elif 1.5 < height and height <= 1.7:
    print("没有安全感")
elif 1.7 < height and height <= 1.8:
    print("帅哥,留个电话")
elif 1.8 <height and height <= 2:
    print("帅哥,你介意多一个女朋友吗")
else:
    print("没有合适的选项")

3.猜大小的游戏:
设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。

sign = True
while sign:
	num = float(input("请输入一个数字:"))
	if num == 66:
		print("猜对了")
		sign = False
	elif num > 66:
		print("猜大了")
	elif num < 66:
		print("猜小了")

4.输出1-100内所有奇数

i = 1
while i <= 100:
	if i % 2 == 1:
		print(i)
	i+=1	

5.输出1-100内所有偶数

i = 1
while i <= 100:
	if i % 2 == 0:
		print(i)
	i+=1

6.用户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)

times = 1
sign = True
while sign:
    pwd = input("请输入您的密码")
    if pwd == "1111":
    	print("登陆成功")
    	sign = False
    else:
    	res = 3 - times
    	print("输错了,您还剩余%d次机会" % (res))
    	if res == 0:
    		sign = False
    times+=1		

2. 双向循环练习

1. while 循环

1.打印十行十列小星星

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
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 = 1
while i <= 9:
	j = 1
	while j <= i:
		print("%d*%d=%2d " % (i,j,i*j),end="")
		j+=1
	print()
	i+=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

方式三

i = 1
while i <= 9:
	k = 9 -i
	while k > 0:
		print("       ",end="")
		k-=1
	j = 1
	while j <= i:
		print("%d*%d=%2d " % (i,j,i*j),end="")
		j+=1
	print()
	i+=1

方式四

i = 9
while i >= 1:
	k = 9 - i 
	while k > 0:
		print("       ",end="")
		k-=1
	j = 1
	while j <= i:
		print("%d*%d=%2d " % (i,j,i*j),end="")
		j+=1
	print()
	i-=1

5.求吉利数字 100~999 666 888 111 222 333 … 123 456 987 654

个位: 987 % 10 = 7

十位: 987 // 10 % 10 = 8

百位: 987 // 100 = 9

方法一

i = 100
while i < 1000:
	gewei = i % 10
	shiwei = i // 10 % 10
	baiwei = i // 100
	# 111
	if gewei == shiwei and shiwei == baiwei:
		print(i)
	# 123
	elif shiwei == gewei - 1 and shiwei == baiwei + 1:
		print(i)
	# 321
	elif shiwei == gewei + 1 and shiwei == baiwei - 1:
		print(i)
	i+=1

方法二

i = 100
while i < 1000:
	strvar = str(i)
	baiwei = int(strvar[0])
	shiwei = int(strvar[1])
	gewei = int(strvar[-1])
	# 111
	if gewei == shiwei and shiwei == baiwei:
		print(i)
	# 123
	elif shiwei == gewei - 1 and shiwei == baiwei + 1:
		print(i)
	# 321
	elif shiwei == gewei + 1 and shiwei == baiwei - 1:
		print(i)
	i+=1

6.百钱买百鸡

公鸡1块钱1只,母鸡3块钱1只,小鸡0.5块钱1只,问花100块钱买100只鸡,有多少种买法?

# 公鸡
x = 0
count = 0
while x <= 100:
	# 母鸡
	y = 0
	while y <= 33:
		# 小鸡
		z = 0
		while z <= 100:
			if x+y+z == 100 and x*1+y*3+z*0.5 == 100:
				print(x,y,z)
				count+=1
			z+=1
		y+=1
	x+=1
print(count)	

2. for 循环

1.打印十行十列小星星

for i in range(10):
	for j in range(10):
		print("*",end="")
	print()	

2.打印十行十列小星星(隔列换色)

for i in range(10):
	for j in range(10):
		if j % 2 == 0:
			print("★",end="")
		else:
			print("☆",end="")	
	print()            

3.打印十行十列小星星(隔行换色)

for i in range(10):
	for j in range(10):
		if i % 2 == 0:
			print("★",end="")
		else:	
			print("☆",end="")
	print()		

4.99乘法表

方式一

for i in range(1,10):
	for j in range(1,i+1):
		print("%d*%d=%2d " % (i,j,i*j),end="")
	print()	

方式二

for i in range(9,0,-1):
	for j in range(1,i+1):
		print("%d*%d=%2d " % (i,j,i*j),end="")
	print()	

方式三

for i in range(1,10):
	for k in range(9-i,0,-1):
		print("       ",end="")
	for j in range(1,i+1):
    	print("%d*%d=%2d " % (i,j,i*j),end="")
	print()	

方式四

for i in range(9,0,-1):
	for k in range(9-i,0,-1):
		print("       ",end="")
	for j in range(1,i+1):
		print("%d*%d=%2d " % (i,j,i*j),end="")
	print()		

5.求吉利数字100 ~ 999 666 888 111 222 333 444 … 123 789 567 765 432

方法一

for i in range(100,1000):
	gewei = i % 10
	shiwei = i // 10 % 10
	baiwei = i // 100
	# 111
	if gewei == shiwei and shiwei == baiwei:
		print(i)
	# 123
	elif shiwei == gewei - 1 and shiwei == baiwei + 1:
		print(i)
	# 321	
	elif shiwei == gewei + 1 and shiwei == baiwei - 1:
		print(i)

方法二

for i in range(100,1000):
	strvar = str(i)
	baiwei = int(strvar[0])
	shiwei = int(strvar[1])
	gewei = int(strvar[-1])
	if gewei == shiwei and shiwei == baiwei:
		print(i)
	elif shiwei == gewei - 1 and shiwei == baiwei + 1:
		print(i)
	elif shiwei == gewei + 1 and shiwei == baiwei - 1:
		print(i)

6.百钱买百鸡

公鸡1块钱1只,母鸡3块钱1只,小鸡0.5块钱1只,问花100块钱买100只鸡,有多少种买法?

count = 0
for x in range(0,101):
	for y in range(0,34):
		for z in range(0,101):
			if x+y+z == 100 and x*1+y*3+z*0.5 == 100:
				print(x,y,z)
				count+=1
print(count)				

3. 关键字的使用 pass break continue

1. pass 过(占位)

关键字 pass : 如果在代码块中有一段代码逻辑不知道怎么写,我们可以先写上关键字pass,继续写后面的代码,

​ 等到想出来这段代码逻辑,我们再把pass替换掉.

if 10 == 10:
	pass

while True:
	pass

2. break 终止当前循环

关键字 break : 注意点 => 终止的是当前循环

# 打印 1 ~ 10 , 遇到5就终止循环
i = 1
while i <= 10:
	if i == 5:
		break
	print(i)
	i+=1

# break 终止的是当前循环
i = 1
while i <= 3:
	j = 1
	while j <= 3:
		if j == 2:
			break
		print(i,j)
		j+=1  
	i+=1

3. continue 跳过当前循环,从下一次循环开始

关键字 continue : 当执行 continue 时,后面的代码不执行,会跳到while循环的条件判断处

# 打印 1 ~ 10 , 跳过5
i = 1
while i <= 10:
	if i == 5:
		# 需手动自增加1 当执行 continue 时,后面的代码不执行,跳到while循环的条件判断处,会造成死循环
		i+=1
		continue
	print(i)
	i+=1
    
# 打印 1 ~ 100 , 所有不含4的数字
"""
// 可以取到一个数的高位
%  可以取到一个数的低位
46 // 10 = 4
46 %  10 = 6
"""

# 方法一
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

4. for 循环

for 循环 : 遍历 循环 迭代

for : 主要用于遍历数据而提出的, while 在遍历数据的时候,有局限性

for 循环的代码结构 :

for 变量 in 可迭代的对象:

​ code1

​ code2

可迭代的对象 : 容器类型数据,range对象,迭代器

lst = ["熊大","张三","李四","王五"]
i = 0
while i < len(lst):
	print(lst[i])
	i+=1
# 遍历字符串
container = "今天是个好日子"
# 遍历列表
container = ["熊大","张三","李四","王五"]
# 遍历元组
container = (1,2,3,4,66)
# 遍历集合
container = {"小明","小花","小红","小兰","小鹿"}
# 遍历字典 (遍历字典时,只遍历键)
container = {"dgz":"刚强","dbt":"智慧","dpz":"嘴炮","huaer":"彪悍"}

for i in container:
	print(i)
    
# 遍历不等长的二级容器
container = [["小明","小东","小花","小路"],("小兰","小莲")]

for i in container:
	for j in i:
		print(j)
        
# 变量的解包
a,b = 1,2
a,b = [3,4]
a,b = {"a":5,"b":6}
print(a,b)

# 遍历等长的二级容器
container = [("宋晓峰","宋小宝","宋大兵"),("马云","马化腾","马三炮"),["姜东九","李俊基","韩允儿"]]
for a,b,c in container:
	print(a,b,c)
# a,b,c = ("宋晓峰","宋小宝","宋大兵")
# a,b,c = ("马云","马化腾","马三炮")
# a,b,c = ["姜东九","李俊基","韩允儿"]

range对象 的结构:

range(开始值,结束值,步长)

结束值本身取不到,只能取到结束值之前的那个数

# 只有一个值
for i in range(10):
	print(i)       # 0 1 2 3 4 5 6 7 8 9
	
# 只有两个值
for i in range(3,11):
	print(i)       # 3 4 5 6 7 8 9 10

# 只有三个值
for i in range(1,11,3):
	print(i)       # 1 4 7 10

# 倒叙打印 10 ~ 1
for i in range(10,0,-1):
	print(i)       # 10 9 8 7 6 5 4 3 2 1

总结 :

while : 较为复杂的逻辑

for : 数据的遍历

while 和 for 部分代码可以互相转换 (可以参考前两节"双向循环练习"中 while 循环和 for 循环的相互转换)

区别写法1

# 打印 1 ~ 10 跳过 5

# while 循环
i = 1
while i <= 10:
	if i == 5:
		i+=1
		continue
	print(i)
	i+=1

# for 循环
for i in range(1,11):
	if i == 5:
		continue
	print(i)	    

区别写法2

# 99乘法表

# 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 循环
for i in range(1,10):
	for j in range(1,i+1):
		print("%d*%d=%2d " % (i,j,i*j),end="")
	print()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I believe I can fly~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值