用来产生 整数等差数列 的函式,常和今天要讲的 for
忆起使用
有三个参数,start
表示数列的第一项(预设为0),数列最後一项不能超过 stop
,step
代表数列的公差(预设为1)
因为 start
, step
有预设值所以 range()
只要有一个引数 stop
就能使用
要显示 range()
产生的内容,可以先存进一个串列(或其他容器)中
l=list(range(5))
print(l)
因为 stop
是数列的上限(不能超过),所以不会包含5
有两个引数时,第一个引数代表数列的开始
l=list(range(2, 5))
print(l)
有三个引数时,第一个引数是开始,第三个引数是公差
l=list(range(0, 5, 2))
print(l)
l=list(range(1, 10, 3))
print(l)
数列可以是倒数
l=list(range(0, -10, -1))
print(l)
用来表示重复执行的指令,有 while
和 for
两种
语法类似 if
,差别在 if
只会执行一次,while
会重复执行,直到条件不成立则跳过
while <条件>:
<执行的内容>
⋮
<执行的内容>
所以 while
执行的顺序是: 判断(成立)→执行内容→判断(成立)→执行内容→...→判断(不成立)→结束回圈
下面例子中,只有 x<3
时才会执行回圈中的内容,每次执行 x
都会递增1,所以会在视窗上显示0~2
因为最後一行的 print()
不在回圈中,所以不论如何都会被执行
x=0
while x<3:
print(x)
x=x+1
print('end')
透过回圈列出串列中所有的元
i=0
data=[4, 5, 3, 7, 10, 43]
while i!=len(data):
print(data[i])
透过回圈找到 n
以内所有2的次方
m=1
n=int(input())
while m<n:
print(m)
m=m*2
for
的语法是:
for <var> in <sequence>:
<执行的内容>
⋮
<执行的内容>
<var>
是一个自订的名称,可以像变数一样在回圈的内容中使用(但值不可变),<sequence>
是容器、range()
等带有多个数值的资料
for
的作用是让 <var>
在回圈执行第 n 次的时候,变成 <sequence>
的第 n 项
所以透过 for
可以从一个容器中的第一项开始,依序看到最後一项
data = [4, 5, 3, 7, 10, 43]
for i in data:
print(i)
i
在第一次执行时为 data
的第一项(4),第二次执行时为 data
的第二项(5)...第六次执行时为 data
的第六项(43),因为总共只有六项,所以回圈结束
但指派 <var>
不会更改 <sequence>
的内容
data = [4, 5, 3, 7, 10, 43]
for i in data:
i=10
print(i)
print(data)
虽然每次回圈都把 i
指派为10,但实际上 data
的内容没有改变
和 range()
结合可以列出等差数列
for i in range(5):
print(i)
也可以透过 range()
产生从0开始的数列,再透过这个数列取得容器中的值
data = [4, 5, 3, 7, 10, 43]
for i in range(len(data)):
print(data[i])
这个例子中,data
的长度是 6
,所以len(data)
的结果是6
range(len(data))
等同 range(6)
,会产生0, 1, 2, 3, 4, 5共6个数字
所以 data[i]
在第一次执行时等同 data[0]
,第二次等同 data[1]
...第六次等同 data[5]
如果资料是字典(Dict),可以用 keys()
取得字典中的所有键,再透过键取得值
student={
'name': 'Jay',
'age': 18,
'single': True
}
for key in student.keys():
print(student[key])
range()
vs 不用 range()
如果回圈执行的内容只用到资料的 值,且不需要知道目前的元是第几个,那就可以不用 range()
列出 data
中每个元的平方,两种方式都可以
data = [4, 5, 3, 7, 10, 43]
for num in data:
print(num**2)
data = [4, 5, 3, 7, 10, 43]
for i in range(len(data)):
print(data[i]**2)
将 l1
的元乘上2,再将计算的结果存到 另一个 串列中
l1 = [4, 5, 3, 7, 10, 43]
l2 = []
for num in data:
l2.append(num*2)
print(l1)
print(l2)
如果回圈执行的内容需要知道目前的数值是第几项,就必须用 range()
如果要把计算的结果存到 原本的 串列中,就必须知道现在计算的资料在串列中的位置
l1 = [4, 5, 3, 7, 10, 43]
for i in range(len(data)):
data[i]=data[i]*2
print(l1)
或是会用到其他项的资料的时候也必须用 range()
下面例子中,l2
的第 n 项是 l1
的第 n 和 n+1 项的和
range()
的引数是 len(l1)-1
,因为如果是 len(l1)
的话最後一次的 i
会变成5,l1[i+1]
(等同l1[6]
)不存在
l1 = [4, 5, 3, 7, 10, 43]
l2 = []
for i in range(len(l1)-1):
l2.append(l1[i]+l1[i+1])
print(l1)
print(l2)
>>: 30天学会C语言: Day 7-switch ON!!!
现在我们会使用基本的伪类选择器做效果了,但看到变化过程一闪而过、冷冰冰的,想增添更多渐变效果,让动...
大家在玩CMS之前应该都有先在本地端做测试的习惯吧,那应该会有遇到那种像是使用了XAMPP在本地端架...
如标题,这篇想用「图解」去解释河内塔的「程序递回执行顺序」为何 因为当初C有一项作业,叫我们用程序去...
Pivot 枢纽可以说是分析资料非常重要的一个工具,特别是在於多维度的资料。所以接下来我们会有一连...
挑战目标: MockNative Camp 想想现在应该有三年多JAVA经验,现在公司的专案也是用J...