CiaraZHAO用户 - CiaraZHAO - HydroOJ
Chap5 循环
for循环和循环范围
特点:基于提供的范围,重复执行特定次数的操作
range():
-本质是一个生成器,生成一个数字范围,默认的起始范围是0
-range(x, y)是左闭右开区间,包含x,不包含y
-range(n+1)=range(0, n+1)
-range(x, y, k) #k为步长step
-也可以通过修改循环内部代码来改变步长
-生成反向数字序列:
range(10, -1, -1)(不建议使用)
建议用反转函数reversed(range(0, 10 ,1))
for循环嵌套:
python原生的for循环语法非常慢,如果要求效率,尽量不要用for循环,考虑python和c++的混合编程
如果想依次控制循环内容,就需要用外层循环的变量值当作内层循环的范围
while循环:
与for循环的区别:在知道循环范围的情况下使用for,反之使用while
break与continue语句:
运行:0 % 3 = 0 →跳过/结束这次循环,立刻跳到下一个循环(即不print 0)
continue-跳过当次循环
break-跳过整个循环
_:黑洞,什么都能装进去,但不会变成任何一个变量
假·死循环:
与环境交互后,在特定条件下终止的循环
while True:
提升算法的操作:剪枝
-eg.在判断质数时将所有偶数直接排除
合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率
end=””:为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串
print()默认是打印一行,结尾加换行。end=””意思是末尾不换行,加空格。
判断质数:
后半部分需要理解一下(之后补上)
作业题:
最后两道找第n个回文素数和carrylessAdd的提高题写了比较长的时间
回文素数:写判断回文数时花了一段时间,后来问题主要出现在运行超时。一开始的想法是定义两个函数分别判断素数和回文数,然后再逐个判断是否两个条件都满足,但这样运行太复杂,需要优化。将判断回文数改成先生成回文数,然后再判断回文数是否是质数,但这样容易漏掉情况,还需要再思考一下
carrylessAdd:这题主要是感受到做python题目的思路和平时做数学题的思路相差挺大的
课程资料来源:Datawhale课程简介 - 聪明办法学 Python 第二版 (datawhalechina.github.io)