Python从零开始系列连载(16)——Python程序的基本控制流程(下)

浏览: 6494

前言

前文传送门:

Python从零开始系列连载(1)——安装环境

Python从零开始系列连载(2)——jupyter的常用操作(上)

Python从零开始系列连载(3)——jupyter的常用操作(中)

Python从零开始系列连载(4)——jupyter的常用操作(下)

Python从零开始系列连载(5)——Python的基本数据类型(上)

Python从零开始系列连载(6)——Python的基本数据类型(中)

Python从零开始系列连载(7)——Python的基本数据类型(中二)

Python从零开始系列连载(8)——Python的基本数据类型(下)

Python从零开始系列连载(9)——Python的基本运算和表达式(上)

Python从零开始系列连载(10)——Python的基本运算和表达式(中)

Python从零开始系列连载(11)——Python的基本运算和表达式(中二)

Python从零开始系列连载(12)——Python的基本运算和表达式(下)

Python从零开始系列连载(13)——Python程序的基本控制流程(上)

Python从零开始系列连载(14)——Python程序的基本控制流程(中) 

Python从零开始系列连载(15)——Python程序的基本控制流程(中二)


循环语句嵌套

循环语句嵌套指的是,在一个程序中,存在这多个循环,而且这多个循环是相互嵌套的

还记得分支语句那节我们说的分支语句的嵌套么

还记得俄罗斯套娃么


形式是一样的


我们来玩一下学编程很喜欢打印输出的九九乘法表


Clipboard Image.png


我们尝试用派森实现一下:


Clipboard Image.png


内容结果是对了,但是这个格式不是我们熟悉的三角形的


我们调一下格式,让它每次输出print时候不要自动换行,我在print()函数里加了个参数end='':


Clipboard Image.png


但是我们见到的是 i 结束一轮,应该换行的


外面 i 的循环叫做外循环,里面的 j 循环叫做内循环


内循环循环一轮,外循环才循环一次


所以大家试一下的时候发现这个执行速度还是不快的


所以在Python中,能不用双层循环就不用,会拖慢执行速度


我们继续调整一下格式,在每执行一次外循环之前,换一行:


Clipboard Image.png


看上去样子已经很ok了,细心观察发现,运算式子之间靠的太近,我们使用空格隔开:


Clipboard Image.png


终于成功打印啦~


循环的中断


循环的中断就是,比如你在做游戏任务,要击杀20个河妖,然后你就循环在击杀,眼看着就要完成任务了!


突然!你的班主任无声无息出现在窗口


Clipboard Image.png


然后,你懂的,可能下次年级大会就要被警告处分了【这是后话了】


Clipboard Image.png


当前的影响就是,你的手机被没收了,游戏没法打了,河妖还没循环杀满20个,循环提前结束了


咳咳,小明,你低着头双手在有所动作,是不是在刷怪升级!!!


当然,还有其他可能,毕竟小明前段时间被我发现在看《那些年,我们一起追的女孩的》


Clipboard Image.png


好了,我们今天讲的循环的中断就是提前结束了循环【循环的终止条件还没达到】


循环结束有break和continue两种


break结束本次循环,跳出所在的循环


break是中断当前循环,跳出本次循环

跳出,你懂么,就是和本次循环没关系啦


Clipboard Image.png


上面是一个用break结束死循环的例子


continue结束本次循环,继续进行下一次循环


这就像,抓娃娃,在地铁站,商场经常有抓娃娃的机器

我也是非常喜欢的

我就抓到过一只熊本熊和一只小火龙


Clipboard Image.png


抓过的人都知道,每次都是有几十秒的计时,当你投了几个硬币或者扫码支付了几次

这几次就是循环次数

准备大展身手的时候

你在游戏里目测着,心里做着受力分析

时间过得很快

当你没有按去抓的按钮时候,时间到了

爪子自动抓了下去,本次循环执行结束,没抓到!!!


t01b4b54ef65ab8b442.gif


下一次循环开始,注意,上一次你没有操作,就结束了本次循环开始了下次循环


这就和continue很相似

和break不同之处就是,不是结束整个循环,而是结束了这次

如果抓娃娃,一次没在给定时间操作就让你后面的支付都作废

那我肯定要砸了机器,把娃娃拿走了


我们通过代码演示一下


每次都会让你输入一个数


Clipboard Image.png


我们加入continue:


Clipboard Image.png


注意:这里没有用else,当超过30秒,执行if的内容,然后跳过本次循环,之后的打印也就不输出了

如果没到30秒,if不执行,最后一句打印会执行

是不是很巧妙【自我陶醉中】


作业:

编写一个最多猜10次数字的游戏,猜测范围1~100,根据input内容提示猜大或者猜小,如果猜中,结束循环


下课

人生苦短,我选Python

未完待续,连载中......

现在还坚持再看连载学习的你们真的很棒棒!


下一篇:Python从零开始系列连载(17)——Python特色数据类型(列表)(上)

推荐 6
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

39 个评论

for i in range(5):
num =int(input('Please enter this time of operation:'))
if num >30:
print('Time is out!')
continue
print('you have spend %d seconds'%num)
试了一下,删去continue,代码运行结果是一样的,所以还是不太理解continue的作用。
晓得了,没有continue,对于大于30的会输出两个结果
是的
for i in range(0,10):
a = int(input('请输入一个数字(1~100): '))
if a < 66:
print('还可以大点')
elif a > 66:
print('太大了')
else:
print('猜对了')
break
666
加了个随机数。
import random
a=random.randint(1,100)
for i in range(0,10):
num=int(input("请输入一个1-100之间的整数!"))
if num>a:
print("你输入的数字大咯!")
continue
elif a>num:
print("你输入的数字小咯!")
continue
print("猜对咯!这个数是%d"%num)
break
continue可以不加哦
x = 55
i = 5
while i:
y = int(input('Plz input a number between (1-100), you have %d times left:' % i))
if y < x:
print('too small')
elif y > x:
print('too large')
i -= 1
if i == 0:
print('end of try')
break
elif x == y:
print('you are right')
break
结果倒是对了,代码写的总觉得别扭,纯小白,请指正。
可以看看上面别人的评论 比较一下
for i in range(0,10):
num=int(input('请随机输入一个0-100的整数:'))
if num>50:
print('请输入小一点的数字')
continue
elif num<50:
print('请输入大一点的数字')
continue
else:
print('猜对啦')
break
这样才是对的吧
可以
for i in range(1,10):
for j in range(1,i+1):
q=i*j
print('%d*%d=%d '%(j,i,q),end='')
print('\n')
我搞了个更好看的乘法表格式- - i和j的位置换了下
a = 21 #自定义数字。。
for i in range(0,11):
print('第%d次'%(i+1))
if i ==10:
print('十次都没猜对,糖没有啦!')
break
else:
inpt = int(input('猜数字啦 对的给糖吃:'))
if inpt < a:
print('你猜的数字%d小了'%inpt)
continue
elif inpt>a:
print('你猜的数字%d大了'%inpt)
continue
else:
print('恭喜你第%d次终于猜对啦~正确数字是%d'%(i+1,inpt))
break

'''
感觉自己写的比较乱
数字是自己定义的。。我这里写的是21(不会弄随机数。。) 代码测试了挺多次 有一个不足就是如果输入的不是数字他会报错。。暂时还不知道怎么处理 = 。=
'''
这个问题之后文章里说到了,加个try的异常处理就行
import random
a = random.randint (1,100)
for i in range (1,11):
print ('第%d次'%i)
b = int (input ('请输入一个整数(1-100):'))
if b > a:
print ('你给出的数字%d太大啦,再来一次'%b)
elif b < a:
print ('你给出的数字%d太小啦,再来一次'%b)
else:
print ('你给出的数字%d是对的,恭喜你第%d次猜对了!'%(b,i))
break
if i == 10:
print ('厉害了,居然%d次都错了'%i)
break
学习了好几个人的答案写出来的。老师,最后的那个break 不加是不是对于整体来说是无任何影响的呢?
是的
是的
请问如何输出乘法表,格式要是
1*1=1
2*1=2,2*2=4
就是要把i,j的值打印出来
另外int[14]之后的int[1]加了continue,程序是死的,无法执行,请斑竹看看是什么问题
for i in range(1,10) :
for j in range(1,1+i):
q = i * j
print('%d*%d=%d'%(i,j,q),end=' ' )
print('\n')
可以参考我的
不错 把固定的i j换成 %d即可
哈哈 写的太快 是我的失误 已经有同学回复你啦~
我觉得你这个代码有问题,如果我第十次猜对了,程序还是会报:厉害了,居然10次都错了;另外,break我觉得还是有影响的,如果不加break即便不到10次就猜对了,程序还是会继续运行
for i in range(1,10):
num=int(input('请输入1-100的数字:'))
if num==10:
print('恭喜你猜对了')
break
else:
i=10-i
print('猜错了,请重新输入,你还有%d次机会'%(i))

总感觉哪里 有问题,老师指正下
i = 10 - i 去掉
i = 10 - i 去掉
谢老师
import random
num=random.randint(1,100)
for i in range(0,10):
answer=int(input('请输入一个1-100的整数:'))
if answer > num:
print('太大了')
elif answer < num:
print("太小了")
else:
print('你猜对了')
break
再写一个while的,这题用while应该更合适
import random
num=random.randint(1,100)
answer = 0
while num != answer:
answer=int(input('请输入一个1-100的整数:'))
if answer > num:
print('太大了')
elif answer < num:
print("太小了")
else:
print('你猜对了')
import random
i = random.randint(1,100)
for j in range(1,10):
num = int(input('请输入一个整数:'))
if num > i:
print('您输入的值过大!已用次数%d'%j)
elif num < i:
print('您输入的值过小!已用次数%d'%j)
else:
print('恭喜您猜对了,正确数字为%d'%i)
break
import random
x = random.randint(1,100)
for i in range(1,10):
num = int(input('猜一猜是哪个数字:'))
if num != x:
if num > x:
print('大了大了!')
else:
print('小了小了!')
if num == x:
break
i = 56
for w in range(1,10):
q = int(input('请输入猜测数字(1-100):'))
if q > i:
print('大了')
continue
if q < i:
print('小了')
continue
if q == i:
print('正确')
break
print('猜数字游戏')
for i in range(1,11):
num=int(input('请输入1-100内的一个整数(你有10次机会):'))
if 1<=num<49:
print('你输入的是%d,猜错啦!还可以猜大一点。请重新再来。你还有'%num,10-i,'次机会')
continue
elif 49<num<=100:
print('你输入的是%d,猜错啦!要小一点点啦!请重新再来。你还有'%num,10-i,'次机会')
continue
elif num==49:
print('恭喜你,猜对了,一共猜了',i,'次')
break
else:
print('输入错误,请重新输入。你还有',10-i,'次机会')
# 打印乘法表,还原小学时候文具盒上的表
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d = %d "%(i,j,i*j),end="")
print('\n')
a=66
for i in range(0,9):
num=input('请输入提示信息:')
b=int(input('请输入你本次所猜想的数字(1~100):'))
if b==a:
print('恭喜,你所猜的答案正确!')
break
print('对不起,回答错误!')
for i in range(1,11):
a=int(input("请猜大小(0~100):"))
if i>9:
print("已经猜了10次\n游戏结束")
break
elif a< 0 or a>100:
print("数字不在规定范围内,请重新猜")
else:
if a>50:
print("数字太大,请重新猜")
elif a<50:
print("数字太小,请重新猜")
else:
print("恭喜你猜对了\n游戏结束")
break
for i in range(1,10):
for j in range(1,i+1):
k = i*j;
print('%d * %d = %d '%(i,j,k),end='')
print('\n')
import random
number = random.randint(1,100)
for i in range(10):
guess = int(input('在1-100中猜一个数字:'))
if guess == number:
print('猜对了')
break
elif guess > number:
print('大了')
elif guess < number:
print('小了')
elif guess < 1 or guess > 100:
print('必须在1-100以内')
else:
print('结束了')
for i in range(1,11):
for j in range(1,101):
j=int(input('Please input the number you guess:'))
if j >50:
print('%d is bigger than the RIGHT number,you have only %d chances!'%(j,10-i))
elif j<50:
print('%d is smaller than the RIGHT number,you have only %d chance!'%(j,10-i))
else:
print('Congratulation!%d is the RIGHT number!'%j)
i+=1
if i>10:
break
halo all,break 会终止运行吗?超过十次还可以继续输入??

要回复文章请先登录注册