python控制流教程_python从入门到入土教程(2)——控制流和函数

一 内置函数和库

二 控制流

* if condition_1:

statement_block_1

* elif condition_2:

statement_block_2

* else:

statement_block_3

x = 114514

if x%3 == 0:

print(x, "能被3整除")

else:

print(x, "不能被3整除")

“闰年”:公历年份被4整除,且若该年可被100整除,则必须同时被400整除。

#year = input("请输入您想查询的年份:")

year = int(year)

if year < 0:

print("silly b")

elif year % 400 == 0:

print("这一年是闰年")

elif year % 4 == 0:

print("这一年是闰年")

else:

print("这一年不是闰年")

#age = int(input("请输入你家狗狗的年龄: "))

if age < 0:

print("silly b")

elif age == 1:

print("相当于 14 岁的人。")

elif age == 2:

print("相当于 22 岁的人。")

elif age > 2:

human = 22 + (age -2) * 5

print("对应人类年龄: ", human)

2 while

i = 1

while condition:

statement

i = i + 1

#前100数之和

n = 100

sum = 0

counter = 1

while counter <= n:

sum = sum + counter

counter += 1

print("1 到 %d 之和为: %d" % (n,sum))

#while 和 else一起使用

count = 0

while count < 6:

print (count, " 小于 6")

count = count + 1

else:

print (count, " 大于或等于 6")

3 for

for in :

else:

for i in 'Python':

print(i)

for i in range(0,10,2):

print(i)

dict = {'name':['Sim','Zhang','Wang'],

'age':[27,24,28],

'gender':['M','F','M'],

'add':['JS','ZJ','AH']}

for key,values in dict.items():

print(key,'-->',values)

x = 10

if x>1:

for i in range(2, x):

if x%i==0:

print(x,"不是质数")

print(i,"是一个质因子")

break

else:

print(x,"是质数")

else:

print(x,"不是质数")

break和continue语句及循环中的else子句

break 语句可以跳出 for 和 while 的循环体。

如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

for letter in 'silly b': # 第一个实例

if letter == 'y':

break

print ('当前字母为 :', letter)

for letter in 'silly b': # 第一个实例

if letter == 'y':

continue

print ('当前字母为 :', letter)

var = 10 # 第二个实例

while var > 0:

print ('当前变量值为 :', var)

var = var -1

if var == 5:

break

var = 10 # 第二个实例

while var > 0:

var = var -1

if var == 5:

continue

print ('当前变量值为 :', var)

Python pass是空语句,是为了保持程序结构的完整性

#可以用enumerate来同时循环索引和值

sequence = [12, 34, 34, 23, 45, 76, 89]

for i, j in enumerate(sequence):

print(i, j)

people_rows = ["希腊,索福克勒斯","俄罗斯,普希金","法国,莫里哀","英国,拜伦","中国,老子","印度,泰戈尔","德国,歌德","中国,李白","俄罗斯,契诃夫","法国,德彪西"]

split_list = []

for row in people_rows:

split_row = row.split(',') # 以逗号分隔每个字符串

split_list.append(split_row) # 将分隔后的字符串存入新的列表

for i in split_list:

print(i) # 查看嵌套列表

从split_list中遍历挑选出所有中国的名人,并将他们的名字存为列表china_people

三 函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。

任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

函数内容以冒号起始,并且缩进。

return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

def area(width, height):

return width * height

area(3,4)

定义一个二次函数求根的函数

# 最大公约数(Great Common Denominator):同时被两个数整除的最大正整数

def gcd(a,b):

# 保证a大b小

if b > a:

a, b = b, a

while a % b != 0: # 当a不整除b(余数不为0)的时候

a,b = b, a%b # b->a, a%b->b

return b

函数的参数

def power(x):

return x * x

#X就是必选参数

#当我们调用power函数时,必须传入有且仅有的一个参数x

#如果我们要计算x3怎么办?可以再定义一个power3函数,但是如果要计算x4、x5……怎么办?我们不可能定义无限多个函数。

#你也许想到了,可以把power(x)修改为power(x, n),用来计算x**n

def power(x, n):

s = 1

while n > 0:

n = n - 1

s = s * x

return s

#由于我们经常计算x2,所以,完全可以把第二个参数n的默认值设定为2,而不用每次都输入

def power(x, n=2):

s = 1

while n > 0:

n = n - 1

s = s * x

return s

从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

#在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个

#给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……

## *nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见

##定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。

def calc(numbers):

sum = 0

for n in numbers:

sum = sum + n * n

return sum

calc([1,2,3])

##可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。

##而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

#函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数

person('Michael', 30)

##也可以传入任意个数的关键字参数:

person('Adam', 45, gender='M', job='Engineer')

关键字参数有什么用?它可以扩展函数的功能。

比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。

试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

#和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去

extra = {'city': 'Beijing', 'job': 'Engineer'}

person('Jack', 24, city=extra['city'], job=extra['job'])

person('Jack', 24, **extra)

## 如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数

def person(name, age, *, city, job):

print(name, age, city, job)

#和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。

#命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。

但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

def f2(a, b, c=0, *, d, **kw):

print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

##函数的递归

def fact(n):

if n==1:

return 1

return n * fact(n - 1)

#Fibonacci数列

def Fibonacci(i):

if i == 0:

return 0

elif i == 1:

return 1

else:

return Fibonacci(i-1) + Fibonacci(i-2)

你可能感兴趣的:(python控制流教程)