一、双向循环经典练习

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. Python 最强 IDE 详细使用指南!

    PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm 安装到插件.外部工具.专业版功能等进行了一一介绍,希望能够帮助到大家.作 ...

  2. Hyperledger Fabric 2.1 搭建教程

    Hyperledger Fabric 2.1 搭建教程 环境准备 版本 Ubuntu 18.04 go 1.14.4 fabric 2.1 fabric-sample v1.4.4 nodejs 12 ...

  3. 午间邂逅 | post 和 get 的兄弟情深

    前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 Github 博客 学习导图: image-20200710142453734 image-202007101431049 ...

  4. keyring源码加密解密函数分析

    Encrypt the page data contents. Page type can't be FIL_PAGE_ENCRYPTED, FIL_PAGE_COMPRESSED_AND_ENCRY ...

  5. 【Nginx】如何配置Nginx日志?这是最全面的一篇了!!

    写在前面 日志对于统计排错来说非常有利的.本文总结了 Nginx 日志相关的配置如 access_log. log_format.open_log_file_cache. log_not_found. ...

  6. 微信小程序开发(一)基础知识学习

    1.特点:   ①无DOM对象(虚拟DOM),一切基于组件化(复用.解耦) ②四个重要文件: *.js.*.wxml --> html..wxss --> css.*.json ③无需下载 ...

  7. node的async模块

    废话不多说,直接开始 这个模块有几种方法.分别用于的不通的情况自己喜欢怎么用就怎么用 第一个方法,series  这个方法用于串行切无关联.什么意思那就是,里面的方法是一个一个执行的,每一个方法相互不 ...

  8. 数据页结构 .InnoDb行格式、以及索引底层原理分析

    局部性原理 局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中. 首先要明白局部性原理能解决的是什么问题,也就是主存容量远远比缓存大, CP ...

  9. pandas之数值计算与统计

    数值计算与统计 对于DataFrame来说,求和.最大.最小.平均等统计方法,默认是按列进行统计,即axis = 0,如果添加参数axis = 1则会按照行进行统计. 如果存在空值,在统计时默认会忽略 ...

  10. Salt组件(二)

    四.配置管理States 是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件.比如我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行.这里就需要我们编 ...