文章目录

  • 1. 双向循环的练习
  • 2. break_pass_continue的使用
  • 3. for循环
  • 4. 小练习

1. 双向循环的练习

# 1.用两个循环完成十行十列的小星星
j = 0
while j < 10:# 打印星星i = 0while i < 10:print("*",end="")i+=1# 打印换行print()j += 1# 2.用两个循环完成十行十列隔列换色的小星星
"""
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
"""i = 0
while i < 10:# 打印一行黑白相间的星星j = 0while j < 10:if j % 2 == 0:print("☆",end="")else:print("★",end="")j +=1# 打印换行print()    i+=1# 3.用两个循环完成十行十列隔行换色的小星星
"""
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
"""
"""
外层的循环i动的慢
内层的循环j动的快
外层的i动一次, 内层的循环动10次"""
i = 0
while i < 10 :j = 0while j < 10:if i % 2 == 0:print("☆",end="")else:print("★",end="")j +=1print()i +=1# 4.99乘法表
# 方向一
i = 1
while i <= 9:# 打印对应的表达式j = 1while j <= i:print("%d*%d=%2d " % (i,j,i*j) ,end="" )j+=1# 打印换行print()i +=1# 方向二
i = 9
while i >= 1:# 打印对应的表达式j = 1while j <= i:print("%d*%d=%2d " % (i,j,i*j) ,end="" )j+=1# 打印换行print()i -= 1
print("<====================>")
# 方向三
i = 1
while i <= 9 :kongge = 9 - i# 打印空格while kongge > 0:print("       ",end="")kongge -= 1  # 打印表达式j = 1while j <= i:print("%d*%d=%2d " % (i,j,i*j) ,end="" )j+=1# 换行print()i +=1print("<===============>")
# 方向四
i = 9
while i >= 1 :kongge = 9 - i# 打印空格while kongge > 0:print("       ",end="")kongge -= 1  # 打印表达式j = 1while j <= i:print("%d*%d=%2d " % (i,j,i*j) ,end="" )j+=1# 打印换行print()i -=1# 求吉利数字 100 ~ 999 之间 找 111 222 333 123 456 654 321 ...
"""
// 可以获取一个数高位
%  可以获取一个数低位
baiwei = 345 // 100
shiwei = 345 // 10 % 10
gewei  = 345 % 10
print(gewei)
"""# 方法一
i = 100
while i <= 999:baiwei = i // 100shiwei = i // 10 % 10gewei = i % 10if shiwei == gewei  and shiwei == baiwei :print(i)# 123elif shiwei == gewei - 1 and shiwei == baiwei + 1:print(i)# 987elif shiwei == gewei + 1 and shiwei == baiwei - 1:print(i)i +=1# 方法二
print("<====>")
i = 100
while i <= 999:strvar = str(i)# print(strvar, type(strvar))gewei = int(strvar[-1])shiwei = int(strvar[1])baiwei = int(strvar[0])if shiwei == gewei  and shiwei == baiwei :print(i)# 123elif shiwei == gewei - 1 and shiwei == baiwei + 1:print(i)# 987elif shiwei == gewei + 1 and shiwei == baiwei - 1:print(i)i +=1# 方法三
print("<====>")
i = 100
while i <= 999:strvar = str(i)# print(strvar, type(strvar))gewei = int(strvar[-1])shiwei = int(strvar[1])baiwei = int(strvar[0])if 2 * shiwei == gewei + baiwei and (shiwei == gewei + 1 or shiwei == gewei -1 ):print(i)elif gewei == shiwei and shiwei == baiwei:print(i)i +=1# 百钱买百鸡
# 公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
"""
穷举法:把数据拿出来一个一个试
x = [1,2]
y = [3,4]
z = [5,6]
x+y+z = 10
1 + 3 + 5 = 9
1 + 3 + 6 = 10 bingo
1 + 4 + 5 = 10 bingo
1 + 4 + 6 = 11
2 + 3 + 5 = 10 bingo
2 + 3 + 6 = 11
2 + 4 + 5 = 11
2 + 4 + 6 = 12
""""""
公鸡 : x  母鸡 : y  小鸡: z
鸡的数量:x + y + z = 100
鸡的价格:5 * x + 3 * y + 1/3*z = 100
"""x = 0
while x <= 20:y = 0while y <= 33:z = 0while z <= 100:if x+y+z == 100 and 5*x + 3 * y + 1/3*z == 100 :print(x,y,z)z += 1 y +=1x += 1



2. break_pass_continue的使用

关键字的使用 pass break continue

# pass 过 (代码块中的占位符)
"""
if 20 == 20:passwhile True:pass
"""# break 终止当前循环 (只能用在循环之中)
# 1 ~ 10 遇到5终止循环
i = 1
while i <= 10:print(i)if i == 5:breaki +=1i = 1
while i <= 3:j = 1while j <=3:if j == 2:breakprint(i,j)j+=1i +=1
# 1 1
# 2 1
# 3 1
"""
if 5 == 5: errorbreak
"""# continue 跳过当前循环,从下一次循环开始
# 打印 1 ~ 10 跳过5
i = 1
while i <= 10:  if i == 5:# 在跳过之前,因为会终止执行后面的代码,从下一次循环开始# 为了避免死循环,手动加1i += 1continueprint(i)i +=1# 1 ~ 100 打印所有不含有4的数字
# 方法一
print("<============>")
i = 1
while i <= 100:strvar = str(i)# print(strvar)if "4" in strvar:i += 1continueprint(i)i +=1# 方法二
print("<============>")
i = 1
while i <= 100:if i // 10 == 4 or i % 10 == 4:i+=1continueprint(i)i+=1

3. for循环

while: 逻辑比较复杂用while
for: 逻辑比较简单,遍历数据的话一定是for(while也可以遍历数据,但是遍历的数据不能是无序的)

# 遍历 循环 迭代 , 把容器中的元素一个一个获取出来# while循环在遍历数据时的局限性
"""
lst = [1,2,3,4,5]  # ok
i = 0
while i < len(lst):print(lst[i])i+=1setvar = {"a","b","c"} # not ok
i = 0
while i < len(setvar):print(setvar[i])i+=1
"""# for循环的基本语法
"""
Iterable 可迭代性数据:1.容器类型数据 2.range对象 3.迭代器
for 变量 in Iterable:code1.
"""
# 字符串
container = "北京和深圳温差大概20多度"
# 列表
container = [1,2,3,4,4,5]
# 元组
container = ("孙开洗","孙健","孙悟空")
# 集合
container = {"陈璐","曹静怡","王志国","邓鹏","合力"}
# 字典
container = {"cl":"风流倜傥","cjy":"拳击选手","wzg":"寻花问柳","dp":"帅气,祖国的栋梁","hl":"你是个好人"}# 遍历数据
for i in container:print(i)print("<===================>")
# 1.遍历不等长多级容器
container = [1,2,3,4,("嗄","234",{"马春配","李虎凌","刘子涛"})]
for i in container:# 判断当前元素是否是容器,如果是,进行二次遍历,如果不是,直接打印if isinstance(i,tuple):# ("嗄","234",{"马春配","李虎凌","刘子涛"})for j in i:# 判断当前元素是否是集合,如果是,进行三次遍历,如果不是,直接打印if isinstance(j,set):# j = {"马春配","李虎凌","刘子涛"}for k in j :print(k)else:print(j)# 打印数据else:print(i)# 2.遍历不等长多级容器
container = [("刘玉波","历史源","张光旭"), ("上朝气","于朝志"),("韩瑞晓",)]
for i in container:for j in i:print(j)# 3.遍历等长的容器
container = [("马云","小马哥","马春配") , ["王健林","王思聪","王志国"],{"王宝强","马蓉","宋小宝"}]
for a,b,c in container:print(a,b,c)# 变量的解包
a,b,c = "poi"
a,b = (1,2)
a,b = 1,2
a,b,c = [10,11,12]
a,b = {"林明辉","家率先"}
a,b = {"lmh":"林明辉","jsx":"家率先"}
a,b,c = ("马云","小马哥","马春配")
print(a,b,c)# ### range对象
"""
range([开始值,]结束值[,步长])
取头舍尾,结束值本身获取不到,获取到它之前的那一个数据
"""# range(一个值)
for i in range(5): # 0 ~ 4print(i)# range(二个值)
for i in range(3,8): # 3 4 5 6 7 print(i)# range(三个值) 正向的从左到右
for i in range(1,11,3): # 1 4 7 10 print(i)# range(三个值) 逆向的从右到左
for i in range(10,0,-1): # 10 9 8 7 ... 1 print(i)# 总结:
"""
while 一般用于处理复杂的逻辑关系
for   一般用于迭代数据
部分情况下两个循环可以互相转换;
"""i = 1
while i <= 9:j = 1while j <= i:print("%d*%d=%2d " % (i,j,i*j) ,end="" )j+=1print() i +=1for i in range(1,10):for j in range(1,i+1):print("%d*%d=%2d " % (i,j,i*j) ,end="" )print()# 打印 1 ~ 10 跳过5
i = 1
while i <= 10:  if i == 5:i += 1continueprint(i)i +=1for i in range(1,11):if i == 5:continueprint(i)

小提示:


"".strip() 可以去掉字符串的两边的空白符,包括\n
in 不能在纯数字中使用,如果是字典的话判断你的是字典的键
元组不能用while循环来显示,因为内容是无序的外层是集合,里面不能是列表
lst = [ ["a",1] , {"b","250"}]
dic = dict(lst)
print(dic)    这里可能会输出{'a':1,'b':'250'}或者{'a':1,'250':'b'}lst = ["a1","b2"]
dic = dict(lst)
print(dic) 这里会输出{a:1,b:2}lst = ["a11","b22"]
dic = dict(lst)
print(dic)  这里就会报错isinstance比type用的多在一个文件中-5 - 正无穷
a = 3
b = 3
a和b的id是一样
a = b =3 不管是不是-5到正无穷,a和b的id都是一样的height = int(intput("你身高多少:") )
字符串为什么不能用int进行强转(字符串是小数的)help(print) # print的帮助文档

4. 小练习

问题:

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

答案:

"""
1.利用if语句写出猜大小的游戏:设定一个理想数字比如:66,让用户三次机会猜数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确,退出循环。最多三次都没有猜测正确,退出循环,并显示‘都没猜对,继续努力’。
"""
"""
times = 1
while times <= 3:num = input("请输入一个数字:")if num.isdecimal():num = int(num)if num > 66:print("结果大了")elif num == 66:print("对了 bingo老婶")breakelif num < 66:print("结果小了")else:print("抱歉,数字格式不对~")if times == 3:print("都没猜对,继续努力")times +=1
"""# 2.使用while和for 遍历字符串 "IG战队牛逼"
strvar="IG战队牛逼"
i = 0
while i < len(strvar):print(strvar[i])i +=1for i in strvar:print(i)# 3.使用for循环对s="黄绿青蓝紫"进行循环,每次打印的内容是每个字符加上"色的",    # 例如:黄色的 绿色的 青色的 ... s="黄绿青蓝紫"
for i in s:print(i + "色的" )# 4.完成要求:
# 用户可持续输入(while循环)# 输入A,则显示走大路回家,然后在让用户进一步选择:# 是选择公交车,还是步行?# 选择公交车,显示10分钟到家,并退出整个程序。# 选择步行,显示20分钟到家,并退出整个程序。# 输入B,# 则显示走小路回家,并退出整个程序。# 输入C,# 则显示绕道回家,然后在让用户进一步选择:# 是选择游戏厅玩会,还是网吧?# 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。# 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
"""
sign = True
while sign:opt = input("请输入选项A,B,C")if opt.lower() == "a":print("走大路回家")opt = input("是选择公交车,还是步行?")if opt == "公交车":print("10分钟到家,")sign = False# breakelif opt == "步行":print("20分钟到家")sign = False# breakelif opt.lower() == "b":print("走小路回家")breakelif opt.lower() == "c":print("绕道回家")opt = input("是选择游戏厅玩会,还是网吧?")if opt == "游戏厅":print("一个半小时到家,爸爸在家,拿棍等你。")elif opt == "网吧":print("两个小时到家,妈妈已做好了战斗准备。")
"""# 5.写代码:计算 1 - 2 + 3 - 4 + ... + 99 中除了88以外所有数的总和?
total = 0
for i in range(1,100):if i == 88:continueif i % 2 == 1:total += ielif i%2 == 0:total -= i
print(total)total = 0
i = 1
while i <= 99:if i == 88:i +=1continueif i % 2 == 1:total += ielif i%2 == 0:total -= ii +=1
print(total)# 6.(升级题)打印菱形小星星
"""*************************
***********
************************************
""""""
空格 + 星星 + 换行总行数:
对于任意个星星n ,总行数:  n // 2 + 1
13 -> 7
11 -> 6
9  -> 5
7  -> 4空格:
对于当前行i , 空格数量 = 总行数 - 当前行
1 => 5
2 => 4
3 => 3
4 => 2
5 => 1
6 => 0星星:
对于当前行i , 星星数量 = 2 * 当前行 - 1
1 => 1
2 => 3
3 => 5
4 => 7
"""
# n = int(input("输入星星个数"))
n = 13
hang = n // 2 + 1
i = 1
while i <= hang:# 打印空格kongge = hang - iprint(" " * kongge,end="")# 打印星星 xingxing = 2 * i - 1print("*" * xingxing,end="")# 打印换行print()i += 1i = hang
while i >= 1:# 打印空格kongge = hang - iprint(" " * kongge,end="")# 打印星星 xingxing = 2 * i - 1print("*" * xingxing,end="")# 打印换行print()i -= 1# 方法二
n = 11
hang = n // 2 + 1
i = 1
while i <= hang:# 打印空格kongge = hang - iwhile kongge>0:print(" ",end="")kongge -= 1# 打印星星 xingxing = 2 * i - 1j = 1while j <= xingxing:print("*" ,end="")j += 1# 打印换行print()i += 1i = hang
while i >= 1:# 打印空格kongge = hang - iwhile kongge>0:print(" ",end="")kongge -= 1# 打印星星 xingxing = 2 * i - 1j = 1while j <= xingxing:print("*" ,end="")j += 1# 打印换行print()i -= 1# (扩展了解)
"""abs 求绝对值的内置函数 abs(-1) = 1"""
print("<===11111==>")
for i in range(-6,7):# 只有一句代码的话,可以直接写在冒号的右边;if i == 0:continue        print(" " * (abs(i) - 1),"*" * (13-2*abs(i)))

【六】Python全栈之路--for循环相关推荐

  1. Python全栈之路系列之数字数据类型

    上篇文章中我们简单的体验了Python语言基本概念与语法,那么在继续深入下去的过程中,不妨先学习几个常见的Python内置数据类型?这也是大部分Python教科书的学习目录,由浅至深,慢慢深入. Py ...

  2. 【七】Python全栈之路--字符串_列表相关操作

    文章目录 1. format格式化_填充符号使用 1.1 format格式化 1.2 format的填充符号的使用 2. 字符串相关的方法 3. 列表的相关操作 4. 列表的相关函数 5. 深浅拷贝 ...

  3. 【三十六】Python全栈之路--MySQL

    文章目录 1. mysql_where子句_聚合函数 2. mysql_其他子句语法 3. mysql_子查询 4. exists关键字 5. 练习所需表数据 6. 小练习 1. mysql_wher ...

  4. 【四十六】Python全栈之路--bootstrap

    文章目录 1. bootstrap简单介绍_栅格_布局容器 1.1 bootstrap简单使用 1.2 布局容器 1.3 栅格单位 1.4 表单 2. bootstrao组件和插件简单使用 2.1 简 ...

  5. 【二十六】Python全栈之路--网络编程基础知识

    文章目录 1. 网络的概念 2. 交换机_路由器 3. 三次握手_四次挥手 1. 网络的概念 # ### 1.网络开发两大架构 早期数据交互的格式是没有网络的 两个文件之间的数据交互需要通过第三个文件 ...

  6. 【四十五】Python全栈之路--JQuery

    文章目录 1. lable标签补充 2. jquery引入和简单使用 3. 选择器 3.1 基础选择器 3.2 组合选择 3.3 层级选择器 3.4 属性选择器 3.5 表单对象属性选择器 3.6 表 ...

  7. Python全栈之路---day01(背景、语法初识)

    PART ONE Python背景知识 Python历史 1989年的圣诞节期间,荷兰人吉多·范罗苏姆(Guido van Rossum),即我们熟悉的龟叔,在阿姆斯特丹不堪眼前的无趣生活,决心开发一 ...

  8. 【四十一】Python全栈之路--JS

    文章目录 1. js的数据类型 1.1 js引入方式 1.2 注释变量 1.3 数据类型 2. js类型转换_运算符 2.1 强制转换_Number 2.2 强制转换_String 2.3 强制转换_ ...

  9. Python全栈之路系列----之-----内置函数和匿名函数lamdba

    引子 什么是内置函数? 内置函数就是python 提供给我们直接拿来就可以用的函数   内置函数--内置命名空间   只管调用 不管实现 总共68个 def func(): == #这是自己定义的函数 ...

最新文章

  1. 使用CNN做电影评论的负面检测——本质上感觉和ngram或者LSTM同,因为CNN里图像检测卷积一般是3x3,而文本分类的话是直接是一维的3、4、5...
  2. POJ 1459--最大流算法
  3. 国际计算机杂志排名2015,中国计算机学会推荐国际学术刊物与期刊(新增列表)2015-12-22-06_48_31...
  4. mac 10.11 安装mysql5.7.10压缩版
  5. future.cancel不能关闭线程_多线程与高并发笔记
  6. php怎么使得字体滚动,滚动文字+字体特效代码(全集)
  7. (AirWatch 系列之一)企业移动计算的集大成者--Airwatch简介
  8. JAVA多线程--线程阻塞与唤醒
  9. soupUI生成webservice客户端代码
  10. 数据库点滴积累——索引
  11. 多商家点餐小程序源码
  12. windows系统误删引导分区后如何重装系统
  13. iPhone6S安装XY助手提示未受信任的企业级开发者
  14. 高考改革后计算机老师,高考改革“漏洞”多?2020新高考选科数据曝光!这是选科最佳组合...
  15. 花菁染料Cy3.5 炔烃,Cy3.5 alkyne储存条件及光谱特性解析
  16. [内网渗透学习]内网收集Fscan扫描探测工具
  17. 选一个适合自己的加密芯片,加密IC,如何才能真正的做到不被破解。
  18. 伽利略变换的极限式证明及推论
  19. WEBGIS开发 模型抽拉效果实现 Cesium EarthSDK
  20. CZSC 官方文档(0.6.8)

热门文章

  1. 关于redis多个哨兵sentinel在阿里云的坑 sdown sentinel或者failover-abort-not-elected
  2. you belong with me(你属于我)
  3. keras进阶之poly学习率
  4. DeepMind 最新发文:AlphaZero 的黑箱打开了
  5. 基于matlab的MRC最大合并比误码率仿真,包括维特比译码,MRC,中继
  6. 如何判断应变片式压力传感器是否损坏
  7. Qualcomm msm8996 调试AMOLED屏
  8. 蜂鸣器制作“ 孤勇者 ”音乐
  9. Python-QRCode使用
  10. 流浪地球动态桌面壁纸