一、双向循环经典练习

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. POJ1017贪心

    题意:小P开了一家淘宝店铺,店铺里所有的商品高度都为h,但长和宽分别为1*1,2*2,3*3,4*4,5*5,6*6六种规格.这一天来了一个大客户,他订购了很多物品.所以小P需要将东西都邮寄给他,但是 ...

  2. Linux 相关学习内容(不定期更新)

    Linux 主要目录 / 根目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 /bin 可执行二进制文件的目录,如常用的命令,ls, tar, mv, cat.. /boot 放置 ...

  3. Oracle 对表的基本CURD操作

    Oracle对表的基本Curd操作: 样式表:        接下来对这张(表明:Stud)表进行Curd操作(请看面SQL代码) 增加新的字段列:alter table Stud add(heigh ...

  4. 【JMICRO】 微服务简介及异步RPC体验

    一,为什么写JMicro 印象中初次接触微服务大概是2011年,那会做Eclpise插件开发,网上查看好多关于OSGI的技术文章,发现Spring新出了一个叫Spring-boot的框架,那会没太上心 ...

  5. Python 默认参数 关键词参数 位置参数

    def StudentInfo(country='中国', name): print('%s,%s' % (name, country)) StudentInfo('美国', '大卫') 上述代码报错 ...

  6. JavaScript学习 Ⅲ

    六. 面向对象 对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性. 对象分类 内建对象 由ES标准种定义的对象.比如:Math String Number 宿主对象 由JS的运行环 ...

  7. 数据可视化之分析篇(七)Power BI数据分析应用:水平分析法

    https://zhuanlan.zhihu.com/p/103264851 首先,以财务报表分析为例,介绍通用的分析方法论,整体架构如下图所示: (点击查看大图) 接下来我会围绕这五种不同的方法论, ...

  8. Python Ethical Hacking - Intercepting and Modifying Packets

    INTERCEPTING & MODIFYING PACKETS Scapy can be used to: Create packets. Analyze packets. Send/rec ...

  9. P1776 宝物筛选

    题目: 正文: 啊,多重背包真恶心... 一开始我是把多重背包改成了01背包,然鹅我当时是直接1个1个的往后摞的... 参见以下代码: for(int i=1;i<=n;++i){//平平无奇的 ...

  10. P1525 关押罪犯(洛谷)

    前几天没做题,神经有点错乱,感觉一片虚无.今天开始继续写博客. 题目描述 S 城现有两座监狱,一共关押着N名罪犯,编号分别为1-N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件 ...