一、双向循环经典练习

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. Centos 6.4最小化安装后的优化(2)

    1.关闭不必要的服务 众所周知,服务越少,系统占用的资源就会越少,所以应当关闭不需要的服务器.首先可以先看下系统中存在哪些已经开启了的服务.查看命令如下: ntsysv 下面列出的是需要启动的服务器, ...

  2. 03 Vue实例成员

    Vue实例 1.el:实例 new Vue({ el: '#app' }) // 实例与页面挂载点一一对应 // 一个页面中可以出现多个实例对应多个挂载点 // 实例只操作挂载点内部内容 2.data ...

  3. Mysql基础(十一):流程控制结构、分支结构、循环结构

    流程控制结构 说明:顺序结构:程序从上往下依次执行分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行循环结构:程序满足一定条件下,重复执行一组语句 分支结构 特点:1.if函数功能:实现 ...

  4. java 面向对象(十四):面向对象的特征二:继承性 (三) 关键字:super以及子类对象实例化全过程

    关键字:super 1.super 关键字可以理解为:父类的2.可以用来调用的结构:属性.方法.构造器3.super调用属性.方法:3.1 我们可以在子类的方法或构造器中.通过使用"supe ...

  5. Python之爬虫(二十四) 爬虫与反爬虫大战

    爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序反爬虫:使用技术手段防止爬虫程序爬取数据误伤:反爬虫技术将普通用 ...

  6. Django框架04 /模板相关、别名/反向解析/路由分发

    Django框架04 /模板相关.别名/反向解析/路由分发 目录 Django框架04 /模板相关.别名/反向解析/路由分发 1. 语法 2. 变量/万能的点 3 . 过滤器 4. 标签Tags 5. ...

  7. JSON基础使用详解

    JSON:JavaScript对象表示法 1.1 JSON说明 曾经一段时间,XML是互联网传递数据的统一标准,但是业界一直不乏质疑XML的人士,他们都认为XML过于繁琐,冗长:提取数据也过于麻烦 2 ...

  8. C#程序安装为windows服务的方式

    项目开发中,需要将采集程序以windows服务的形式进行部署,可分为定时采集程序以及监控采集程序. 1.定时采集程序 采用Quartz.net框架实现定时任务,针对该种情形,可采用批处理文件的形式进行 ...

  9. bzoj3378[Usaco2004 Open]MooFest 狂欢节*

    bzoj3378[Usaco2004 Open]MooFest 狂欢节 题意: n只奶牛,第i只听力为vi,坐标为xi,两只奶牛聊天时音量是max(vi,vj)*abs(xi-xj).求n(n-1)/ ...

  10. JVM系列-方法调用的原理

    JVM系列-方法调用的原理 最近重新看了一些JVM方面的笔记和资料,收获颇丰,尤其解决了长久以来心中关于JVM方法管理的一些疑问.下面介绍一下JVM中有关方法调用的知识. 目的 方法调用,目的是选择方 ...