流程控制
if语句
选择结构;一般使用if…elif…elif…代替其他语言的switch…case语句.
代码练习:
x = int(input("Please enter an integer: "))
if x < 0:
x = 0
print("Negative changed to zero")
elif x == 0:
print("Zero")
elif x == 1:
print("Single")
else:
print("More")
for语句
Python的for语句可以按照元素出现的顺序迭代任何序列(列表或字符串)
例如:
# for可以迭代任何序列(列表或字符串)
words = ['cat', 'window', 'defenestrate']
for w in words:
print(w)
如果要在循环内修改正在迭代的序列,我们最好首先创建原序列的拷贝.我们需要知道,迭代序列不会隐式地创建副本,我们可以使用切片来创建一个序列副本:
words = ['cat', 'window', 'defenestrate']
#若想在循环内修改正在迭代的序列,建议首先创建原序列的拷贝
for w in words[:]:
if len(w) > 5:
words.insert(0,w)
print(words)
range()函数
我们可以使用内置函数range()来创建一个数字序列,以便方便遍历:
#range函数生成等差数列
for i in range(3):
print(i, end=" ")
print()
我们也可以指定range()的范围:
#设置range函数生成范围
for i in range(5,9):
print(i, end=" ")
print()
我们也可以指定range()的步长:
#设置range函数的步长
for i in range(0, 10, 3):
print(i, end=" ")
print()
range的一个很重要的特性是可以迭代序列:
#range()可以迭代序列
a = ['mary','had','a','little','lamb']
for i in range(len(a)):
print(i, a[i])
break和continue,以及循环中else子句
break可以跳出最近的for或while循环.
continue可以跳过当前的循环,继续下一次迭代.
循环中的else子句:当for循环迭代完整个列表或while循环条件变为假,而非由break语句终止时,就会执行这个else语句.
定义函数
关键字def定义函数
def fib(n):
"""输出n之前的斐波那契数列"""
a, b = 0, 1
while a < n:
print(a, end=" ")
a, b = b, a+b
print()
fib(10)
# 函数可以赋值到一个变量
f = fib
f(5)
注意:Python中都是对象引用,所以一个函数是可以赋值给一个变量的
补充:没有返回值的函数称为过程,有返回值的函数称为函数;python的函数都有返回值,如果没有写return的话就会返回None,解释器一般不会打印None出来
练习:写一个函数返回斐波那契数列的列表,而不是打印出来
def fib2(n):
"""将n之前的斐波那契数列存到一个序列中,并返回数列"""
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return l
print(fib2(7))