一、自定义函数
1、使用 def 关键字定义函数
def 函数名([参数名...]): 函数体(代码块) return 表达式函数名()
注意:函数须先定义,后使用
没有 return 语句的函数定义,Python 都会在末尾加上 return None
二、系统函数
print(var1,var2,sep='分隔符',end='结束符') # 打印 len(string) # 字符长度,py3不区分中英文 type(var) # 查看数据类型 input('msg') # 提示用户输入信息
三、变量作用域
1、全局作用域(函数外的变量)
2、局部作用域(函数内的变量,可以调用全局变量)
1、局部变量不能在全局作用域内使用2、局部作用域不能使用其他局部作用域内的变量3、全局变量可以在局部作用域中读取4、名称相同的局部变量和全局变量(尽量避免相同)
3、使用 global 关键字来声明调用的是全局变量
有 4 条法则,区分变量是局部还是局作用域:1.变量在全局作用域中使用,全局变量。2.函数中,变量使用 global 语句,全局变量。3.函数内变量没有用在赋值语句中,全局变量。4.否则,变量用于函数中的赋值语句,局部变量。
四、异常处理
try: rst = 10 / 5except ZeroDivisionError: print('Error: Invalid argument.')
五、案例
1、Collatz 序列
分析条件:编写一个名为 collate()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collate()就打印出 number // 2,并返回该值。如果 number 是奇数,collate()就打印并返回 3 * number + 1。然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collate(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到 1!既使数学家也不能确定为什么。你的程序在研究所谓的“collate序列”,它有时候被称为“最简单的、不可能的数学问题”)。
def collate(number): rst = number % 2 if rst == 0: print('number // 2 = ' + str(number // 2)) return number // 2 else: print( '3 * number + 1 ' + str(3 * number + 1)) return 3 * number + 1num = int(input('Number:'))i = 0while True: num = collate(num) if 1 == num: break i += 1print('循环次数:'+str(i))
2、验证用户输入的是否是整数
isNumber = input('Number:')try: number = int(isNumber) print(number)except ValueError: print('类型不正确')