一、双向循环经典练习

1.打印十行十列小星星(2个循环)

# j 外循环用来控制行数
j = 0
while j<10: # 打印一行十个星星
i = 0
while i <10:
# 写上循环的逻辑
print("*",end="")
i+=1 # 打印换行
print() j+=1

2.打印十行十列小星星(隔列换色小星星,两个循环)

i = 0
while i<10:
# 打印隔列换色星星
j = 0
while j < 10:
if j % 2 == 0:
print("★",end="")
else:
print("☆",end="")
j+=1 # 打印换行
print()
i+=1

3.打印十行十列小星星(隔行换色小星星,两个循环)

"""外层循环动一次,内层循环动10次,外层循环动的慢,内层循环动的快"""
i = 0
while i<10:
# 打印隔列换色星星
j = 0
while j < 10:
if i % 2 == 0:
print("★",end="")
else:
print("☆",end="")
j+=1 # 打印换行
print()
i+=1

4.99乘法表

方式一

# i控制行
i = 1
while i <= 9:
# j 控制列
# 打印表达式
j = 1
while j<=i:
# 打印表达式 谁*谁=谁 %2d 默认居右显示
print("%d*%d=%2d " % (i,j,i*j),end="")
j+=1 # 打印换行
print()
i+=1

方式二

print("<=====>")
# i控制行
i = 9
while i >= 1:
# j 控制列
# 打印表达式
j = 1
while j<=i:
# 打印表达式 谁*谁=谁 %2d 默认居右显示
print("%d*%d=%2d " % (i,j,i*j),end="")
j+=1 # 打印换行
print()
i-=1

5. 99乘法表按方式一纵轴向右折叠

i = 1
while i<=9: # 1.打印空格
"""
第一行循环8组空格 8~1 是循环8组空格
第二行循环7组空格 7~1 是循环7组空格
...
第八行循环1组空格 1 是循环1组空格
第九行 不需要空格 所以 k>0
"""
k = 9 - i
while k>0:
print(" " , end="")
k -= 1 # 2.打印表达式
""""""
j = 1
while j<=i:
# 打印表达式 谁*谁=谁 %2d 默认居右显示
print("%d*%d=%2d " % (i,j,i*j),end="")
j+=1 # 3.打印换行
print() i+=1

6. 99乘法表按方式二纵轴向右折叠

i = 9
while i>=1: # 1.打印空格
"""
第一行循环8组空格 8~1 是循环8组空格
第二行循环7组空格 7~1 是循环7组空格
...
第八行循环1组空格 1 是循环1组空格
第九行 不需要空格 所以 k>0
"""
k = 9 - i
while k>0:
print(" " , end="")
k -= 1 # 2.打印表达式
j = 1
while j<=i:
# 打印表达式 谁*谁=谁 %2d 默认居右显示
print("%d*%d=%2d " % (i,j,i*j),end="")
j+=1 # 3.打印换行
print() i-=1

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

方法一

"""
个位: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 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)
i+=1

方法二

i = 100
while i<1000:
strvar = str(i) # "123"
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)
i+=1

8.百钱买百鸡

"""
公鸡x 母鸡y 小鸡z
公鸡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 要
1+4+5 = 10 要
1+4+6 = 11 不要 2 + 3 + 5 = 10 要
2 + 3 + 6 = 11 不要
2 + 4 + 5 = 11 不要
2 + 4 + 6 = 12 不要
""" """
# 两个条件同时满足
x+y+z = 100
x*1 + y*3 + z*0.5 = 100
""" # 公鸡
x = 0
count = 0
while x <= 100: # y母鸡
y = 0
while y <= 33: # z小鸡
z = 0
while z <= 100:
if x+y+z == 100 and x*1 + y*3 + z*0.5 == 100:
count += 1
print(x,y,z)
z+=1 y+=1 x += 1 print(count)

二、pass

if 10 == 10:
print(123) while True:
pass

三、break 终止当前循环

1、打印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

四、continue 跳过当前循环,从下一次循环开始

1、打印1~10 跳过5

i = 1
while i<=10: if i == 5:
# 需手动自增加1. 当执行continue时,后面的代码不执行,跳到while循环的条件判断处,会造成死循环
i+=1
continue
print(i) i+=1

2、打印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 "" in strvar:
i+=1
continue print(i)
i+=1

五、for 循环

# for主要用于遍历数据而提出,while在遍历数据时,有局限性
# for 变量 in 可迭代对象:
# code1
# code2
# 可迭代对象(容器类型数据,range对象,迭代器)

# 遍历字符串
container = "雷霆嘎巴,ZBC,无情哈拉少"
# 遍历列表
container = ["刘鑫","刘子豪","刘子涛","晏国彰"]
# 遍历元组
container = (1,2,3,45)
# 遍历集合
container = {"白星","高峰峰","孙志和","刘鹏","牧树人"}
# 遍历字典 (遍历字典时,只遍历键)
container = {"ww":"伟大的人,风流倜傥","msr":"树人,伟大的人","mh":"猥琐的老男人"} for i in container:
print(i) # 遍历不等长的二级容器
container = [["刘聪","毛洪磊","余锐","张家豪"],("崔文君","张捷")] for i in container:
# print(i)
for j in i:
print(j)

1、变量的解包

a,b = 1,2
a,b = [3,4]
a,b = {"a":5,"b":6}
print(a,b)

2、遍历等长的二级容器

container = [("王健林","王思聪","王美丽") , ("马云","马化腾","马生平") , ("王宝强","马蓉","宋小宝")  ]
for a,b,c in container:
print(a,b,c)
# a,b,c = ("王健林","王思聪","王美丽")
# a,b,c = ("马云","马化腾","马生平")
# a,b,c = ("王宝强","马蓉","宋小宝")

3、range对象

"""
range(开始值,结束值,步长)
结束值本身取不到,取到结束值之前的那个数
"""

# 只有一个值  0~9
for i in range(10):
print(i) # 只有两个值
for i in range(3,11):
print(i) # 只有三个值
for i in range(1,10,3):
print(i) # 1,4,7
#1 (1+3)=>4 (4+3)=>7 (7+3)=>10取不到 # 倒序打印10 ~ 1
for i in range(10,0,-1):
print(i)
# 10 9 8 7 6 .... 1

总结

"""
while : 较为复杂的逻辑
for : 数据的遍历
while 和 for 部分代码可以互相转换
"""

六、练习

'''
1.利用if语句写出猜大小的游戏:
设定一个理想数字比如:66,
让用户三次机会猜数字,如果比66大,则显示猜测的结果大了;
如果比66小,则显示猜测的结果小了;
只有等于66,显示猜测结果正确,退出循环。
最多三次都没有猜测正确,退出循环,并显示‘都没猜对,继续努力’。 2.使用while循环分别打印字符串s="asdfer"中每个元素 3.使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb,
例如:asb, bsb,csb,...gsb。 4.完成要求:
用户可持续输入(while循环)
输入A,则显示走大路回家,然后在让用户进一步选择:
是选择公交车,还是步行?
选择公交车,显示10分钟到家,并退出整个程序。
选择步行,显示20分钟到家,并退出整个程序。
输入B,
则显示走小路回家,并退出整个程序。
输入C,
则显示绕道回家,然后在让用户进一步选择:
是选择游戏厅玩会,还是网吧?
选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。 4.写代码:计算 1 - 2 + 3 - 4 + ... + 99 中除了88以外所有数的总和? 5.(升级题)打印菱形小星星
'''
*
***
*****
*******
*********
***********
***********
*********
*******
*****
***
*
'''
'''

"""
num = 66
times = 1
while times <= 3: num = input("请输入猜测的数字")
if num.isdecimal():
num = int(num)
if num > 66:
print("猜测的结果大了")
elif num < 66:
print("猜测的结果小了")
else:
print("猜对了")
break
else:
print("输入有误") if times == 3:
print("都没猜对,继续努力") times +=1
""" """
num = 66
times = 1
sign = True
while sign: num = input("请输入猜测的数字")
if num.isdecimal():
num = int(num)
if num > 66:
print("猜测的结果大了")
elif num < 66:
print("猜测的结果小了")
else:
print("猜对了")
break
else:
print("输入有误") if times == 3:
print("都没猜对,继续努力")
sign = False times +=1
"""

1

# 2.使用while循环分别打印字符串s="asdfer"中每个元素
s="asdfer"
i = 0
while i < len(s):
print(s[i])
i+=1

2

# 3.使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb,
# 例如:asb, bsb,csb,...gsb。
s = "abcdefg"
for i in s:
print(i + "sb")

3

"""
4.完成要求:
用户可持续输入(while循环)
输入A,则显示走大路回家,然后在让用户进一步选择:
是选择公交车,还是步行?
选择公交车,显示10分钟到家,并退出整个程序。
选择步行,显示20分钟到家,并退出整个程序。
输入B,
则显示走小路回家,并退出整个程序。
输入C,
则显示绕道回家,然后在让用户进一步选择:
是选择游戏厅玩会,还是网吧?
选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
"""
"""
sign = True
while sign:
choice = input("请输入A,B,C选项")
if choice.upper() == "A":
choice2 = input("是选择公交车,还是步行?")
if choice2 == "公交车":
print("10分钟到家")
break
elif choice2 == "步行":
print("20分钟到家")
break elif choice.upper() == "B":
print("走小路回家")
break
elif choice.upper() == "C":
print("绕道回家")
choice = input("是选择游戏厅玩会,还是网吧?")
if choice == "游戏厅":
print("一个半小时到家,爸爸在家,拿棍等你。")
elif choice == "网吧":
print("两个小时到家,妈妈已做好了战斗准备。")
"""

4

i = 1
total = 0
while i < 100: if i == 88:
i+=1
continue if i % 2 == 0:
total -= i
else:
total += i
i+=1 print(total) total = 0
for i in range(1,100):
if i == 88 :
continue
if i % 2 == 0:
total -= i
else:
total += i
print(total)

4

'''
*
***
*****
*******
*********
*********** ***********
*********
*******
*****
***
*
''' """
n = 11
13 => 7
11 => 6
9 => 5
... n => n // 2 + 1
星星 和 行数之间的关系 hang = n // 2 + 1 1 => 5
2 => 4
3 => 3
4 => 2
5 => 1
6 => 0 当前行i 和 空格之间的关系 kongge = hang - i
空格数 = 总行数 - 当前行 1 -> 1
2 -> 3
3 -> 5
4 -> 7
5 -> 9 当前行i 和 星星之间的关系 xingxing = 2*i - 1 """
n = 13
hang = n // 2 + 1
i = 1
while i <= hang: # 1 ~ 6
# 打印空格
print(" " *(hang - i),end="" ) # 打印星星
print("*" * (2*i - 1),end="") # 打印换行
print()
i+=1 i = hang
while i > 0:
# 打印空格
print(" " *(hang - i),end="" ) # 打印星星
print("*" * (2*i - 1),end="") # 打印换行
print()
i-=1 n = 11
hang = n // 2 + 1
i = 1
while i <= hang: # 1 ~ 6
# 打印空格
k = hang - i
while k>0:
print(" ",end="")
k-=1 # 打印星星
xingxing = 2*i - 1
j = 1
while j <=xingxing:
print("*",end="")
j+=1 # 打印换行
print()
i+=1 i = hang
while i > 0:
# 打印空格
k = hang - i
while k>0:
print(" ",end="")
k-=1 # 打印星星
xingxing = 2*i - 1
j = 1
while j <=xingxing:
print("*",end="")
j+=1 # 打印换行
print()
i-=1 print(abs(-1)) # 6 5 4 3 2 1 1 2 3 4 5 6
#
# abs(-6) = 6 """
# 行数和空格之间的关系
-6 -> 5
-5 -> 4
-4 -> 3
-3 -> 2
-2 -> 1
-1 -> 0
0 -> 跳过 # 行数 和 星星之间的关系
n = 11
-6 -> 1
-5 -> 3
-4 -> 5 13 - abs(i) * 2
13 - 12 = 1
13 - 10 = 3
13 - 8 = 5
""" # abs用来算绝对值
n = 29
hang = n // 2 + 1 for i in range(-hang,hang+1): if i == 0:
continue # 打印空格
print(" " * (abs(i)-1) , end="")
# 打印星星
print("*" * (n+2 - abs(i) * 2) )

5

day6. while双项循环及for循环的更多相关文章

  1. [Leetcode]双项队列解决滑动窗口最大值难题

    这道题是从优先队列的难题里面找到的一个题目.可是解法并不是优先队列,而是双项队列deque 其实只要知道思路,这一道题直接写没有太大的问题.我们看看题 给定一个数组 nums,有一个大小为 k 的滑动 ...

  2. C# foreach循环较for循环的优势与劣势

    一.foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1.foreach语句简洁 2.效率比for要高(C#是强类型检查,for循环 ...

  3. what's the python之if判断、while循环以及for循环

    Python缩进原则 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格 Python程序语言指定任何非0和非空的布 ...

  4. python 循环高级用法 [expression for x in X [if condition] for y in Y [if condition] ... for n in N [if condition] ]按照从左至右的顺序,分别是外层循环到内层循环

    高级语法 除了像上面介绍的 [x ** 2 for x in L] 这种基本语法之外,列表推导式还有一些高级的扩展. 4.1. 带有if语句 我们可以在 for 语句后面跟上一个 if 判断语句,用于 ...

  5. 分支结构,for循环,while循环,跳出循环

    #流程控制 概念:通过规定的语句让程序代码有条件的按照一定的方 式执行 顺序结构 按照书写顺序来执行,是程序中最基本的流程结构 选择结构(分支结构.条件结构) 分支结构 单路分支:if(执行的条件){ ...

  6. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  7. while 循环 于 for循环语句

    while 循环 while 循环 while 条件: 如果条件是真的,就继续的循环 如果条件是假的,就停止循环 循环的意思就是让程序重复地执行某些语句,whiler循环就是循环结构的一种,当事先不知 ...

  8. bzoj2765[JLOI2010]铁人双项比赛

    题意:铁人双项比赛由长跑和骑自行车组成,参赛选手必须先完成k公里的长跑,然后完成r公里的骑车,才能到达终点.参赛选手有的擅长长跑,有的擅长骑车. 如果总赛程s=k+r一定,那么K越大,对擅长长跑的选手 ...

  9. 1. while循环(当循环) 2. do{}while()循环 3. switch cose(多选一) 例子:当选循环下求百鸡百钱 用 switch cose人机剪刀石头布

    1. while循环: 当选循环下求百鸡百钱:如下: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

随机推荐

  1. request.headers.get头部获取内容的缺失

    1.说明 今天遇到了一个小坑,在做权限控制的时候,用头部传递了参数取名为table_privilege_id, 在本地测试的时候是可以接到这个参数的,但是通过ngxin转发之后,奇怪了,怎么也拿不到这 ...

  2. JavaScript图片预览

    预览选中的图片文件 jQuery $("#selectImage").change(function(){ $("#image").attr("src ...

  3. 记一次线上服务CPU 100%的处理过程

    告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误.查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%. 赶紧从会上下来,SSH登录 ...

  4. commons-fileload图片文件上传工具 , servlet文件图片上传案列

    本案列是java  maven工程小项目,提供个大家学习! 1.在pom.xml文件中导入依赖: <!--文件上传依赖--><dependency> <groupId&g ...

  5. Ethical Hacking - NETWORK PENETRATION TESTING(24)

    Detecting suspicious activities using Wireshark You can use make the MAC address of the router to st ...

  6. Python Ethical Hacking - Bypass HTTPS(2)

    Injecting Code in HTTPS Pages: #!/usr/bin/env python import re from netfilterqueue import NetfilterQ ...

  7. ASP.Net Core 3.1 With Autofac ConfigureServices returning an System.IServiceProvider isn't supported.

    ASP.Net Core 3.1 With Autofac ConfigureServices returning an System.IServiceProvider isn't supported ...

  8. vue : 使用stylus less (包括sublime插件支持)

    版本: vue 2.5.2 webpack 3.6.0 先说stylus. 用npm装个包. npm install stylus stylus-loader --save-dev 然后在.vue文件 ...

  9. 【真实分享】学习linux!让我工资翻5倍!从月薪3000到年薪18W!只用了六个月!

    月薪3000到年薪18W,我用了六个月时间.从只会皮毛,到一家公司的运维工程师主力,我的故事蛮神奇的,今天和大家分享一下我自己的经历. 我今年26岁,之前做个体,修过电脑,卖过电脑,做过桌面运维,一直 ...

  10. Python协程之Gevent模块

    背景 进程是操作系统分配资源的最小单位,每个进程独享4G的内存地址空间,因此进程内数据是安全的,检查间的通信需要使用特定的方法.同理,正是因为进程是数据安全的,所以导致进程的切换是一个很麻烦效率不高的 ...