用户:纳米病毒查看:0 回复:0 评论:0 创建时间:2019-12-14T19:14:50
今天,我来讲解一个十分重要,必须会的算法——遍历。
算法是什么?算法其实就是解决问题的方法(萌新不要被吓坏了)。
说到遍历,大家应该会想到这个
对,这就是今天讲的重点,那么先来看看,以下是这积木的源代码:
for i in range(0,10):
pass
其实,我们学的算法,再日常生活和学习中十分常见,只是我们没留意罢了。
如果你试试这段代码:
for i in range(0,10):
print(i,end=' ')
输出结果是:
0 1 2 3 4 5 6 7 8 9
这说明这个代码让变量i依次设定为0,1,2,3,4,5,6,7,8,9(这种说法不太好,只是为了让人便于理解),然后再依次输出(“end=' '”这个代码只是在输出后不换行并空一格接着输出)。
如你所见,这就是遍历。
那么,遍历再生活与学习中有哪些用处?这可多了呢。比如说老师叫你说出24的因数有多少,你肯定是这样的:
24除以1余0,1是24的因数。
24除以2余0,2是24因数。
24除以3余0,3是24因数。
24除以4余0,4是24因数。
24除以5不余0,5不是24的因数。
......
这样子想直到你从1到24都算了一遍后才知道哪些数是24的因数。
其实刚才你那个过程就是一个遍历了,如果在Python中的就是这样:
for i in range(1,24+1):
if 24 % i == 0:
print(i,end= ' ')
(警告:range()函数的序列值是遍历一个数到一个数前,比如range(0,10)是返回0到9)
在举一个例子,输入两个数a和b,求解他们的最小公倍数。
最小公倍数的范围是哪里啊?那就是a和b中最大的值到a乘b,这也就是我们所需遍历的部分,然后在每次遍历的数值如果以a和b相除的余数都为0那么就输出那个数并退出循环就可以了:
a,b=input().split()
a,b=int(a),int(b) #int()函数将括号内的参数转换为整数类型
for i in range(max(a,b),a*b+1): #max()函数返回传递的所有参数中最大的值
if i%a==0 and i%b==0:
print(i)
break #break语法退出循环
类似的,遍历这种算法也可以解决求解素数,求解公因数等问题。
另外,for语法可以只遍历一串列表或字符串,比如
a=[1,2,3,4,5]
for i in a:
print(i,end=' ')
输出:
1 2 3 4 5
还有:
for i in 'Helloworld':
print(i,end='')
输出:
Helloworld
如何,神奇吧。
掌握了遍历这个技能后,就是打通了学习算法的第一道门,其实像回溯,分治,这些算法中几乎都有遍历的身影。
好了,本期就到这里了。
另外
萌新院QQ:586884452
疯癫工作室QQ:678996214
