day6. while双项循环及for循环
一、双向循环经典练习
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循环的更多相关文章
- [Leetcode]双项队列解决滑动窗口最大值难题
这道题是从优先队列的难题里面找到的一个题目.可是解法并不是优先队列,而是双项队列deque 其实只要知道思路,这一道题直接写没有太大的问题.我们看看题 给定一个数组 nums,有一个大小为 k 的滑动 ...
- C# foreach循环较for循环的优势与劣势
一.foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1.foreach语句简洁 2.效率比for要高(C#是强类型检查,for循环 ...
- what's the python之if判断、while循环以及for循环
Python缩进原则 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格 Python程序语言指定任何非0和非空的布 ...
- 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 判断语句,用于 ...
- 分支结构,for循环,while循环,跳出循环
#流程控制 概念:通过规定的语句让程序代码有条件的按照一定的方 式执行 顺序结构 按照书写顺序来执行,是程序中最基本的流程结构 选择结构(分支结构.条件结构) 分支结构 单路分支:if(执行的条件){ ...
- sqlserver中的循环遍历(普通循环和游标循环)
sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- while 循环 于 for循环语句
while 循环 while 循环 while 条件: 如果条件是真的,就继续的循环 如果条件是假的,就停止循环 循环的意思就是让程序重复地执行某些语句,whiler循环就是循环结构的一种,当事先不知 ...
- bzoj2765[JLOI2010]铁人双项比赛
题意:铁人双项比赛由长跑和骑自行车组成,参赛选手必须先完成k公里的长跑,然后完成r公里的骑车,才能到达终点.参赛选手有的擅长长跑,有的擅长骑车. 如果总赛程s=k+r一定,那么K越大,对擅长长跑的选手 ...
- 1. while循环(当循环) 2. do{}while()循环 3. switch cose(多选一) 例子:当选循环下求百鸡百钱 用 switch cose人机剪刀石头布
1. while循环: 当选循环下求百鸡百钱:如下: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
随机推荐
- python—模块optparse的用法
1.什么是optparse: 在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数 optparse用于处理命令行 ...
- WPF DataGrid ScrollBar Style
效果图如下 代码 <DataGrid.Resources> <Style TargetType="{x:Type ScrollBar}"> <Sett ...
- 组件toast(类似于element-ui的message组件)的实现
实现的toast组件可以通过this.$toast()调用 需要的知识: vue.extend(); new Vue().$mount(); //如果mount内没有要挂载的元素vue只会渲染元素而不 ...
- PowerShell创建参考窗口
背景 平常我们经常遇到这样一个问题,在使用一个窗口工作时常常需要参考其他窗口的文字或图片,此时就需要频繁切换窗口:或者是看视频时需要参考前面进度的画面:或者是阅读或写文档时需要参考其他位置的文字,这时 ...
- Git操作(二)
很久以前写的git入门,最近又巩固了一下Git分支操作,下面是我的一些整理. 1.分支与合并 #创建并切换到该分支 git checkout -b xxx #查看当前分支 git branch #进行 ...
- C、C++、Java到Python,编程入门学习什么语言好?
摘要:回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准并学精一两门编程语言更加显得至关重要. 最近,TIOBE更新了7月的编程语言榜单,常年霸榜的C ...
- (2)简单理解和使用webpack-dev-server
webpack-dev-server能做什么? 每次打包都得像之前一样使用webapck 入口文件 -o 出口文件,每次修改都得打包一次过于麻烦,可以使用webpack-dev-server实现自动打 ...
- Spirngboot-自定义Starter
一.Spring Boot Starter简介 Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件 ...
- INS-40718 和 INS - 30516
RAC 安装的时候报错, INS-40718 这个是自己填写的 scan name 和 /etc/hosts 里定义的不一致 可以cat /etc/hosts 看一下 INS - 30 ...
- 因为mac不支持移动硬盘的NTFS格式,mac电脑无法写入移动硬盘的终极解决办法
相信很多实用mac的同学,都有磁盘容量问题,所以才使用移动硬盘 当移动硬盘在windows电脑上使用过之后,会被格式化为NTFS格式 而mac电脑不支持NTFS格式 这里有两种方法 第一种是把移动硬盘 ...