写在前面
本篇为下面这本书的读书笔记,对应练习可见Gitee地址:
python仓库 欢迎补充指正
4 函数
python3.5一共68个内建函数,简单来讲是安装完就可以使用,是“自带的”。
如print(),input(),len(),int()等
4.1 开始创建函数
几个常见的词:
def(define,定义):定义一个函数
arg(argument,参数):有时还有parameter,二者都是参数的意思,稍有不同
return:返回结果
def和return是关键字(keyword)
# 定义一个函数
def fahrenheit_converter(C):
fahrenheit = C * 9 / 5 + 32
return str(fahrenheit) + '˚F'
C2F = fahrenheit_converter(35)
print(C2F) # 95.0˚F
# 对函数作出修改
def fahrenheit_converter(C):
fahrenheit = C * 9 / 5 + 32
print(str(fahrenheit) + '˚F')
print(fahrenheit_converter(35))
print是一个函数并非关键字
4.2 练习题
- 设计一个重量转换器,输入以“g”为单位的数字后返回换算成“kg”的结果
- 设计一个求直角三角形斜边长的函数(两条直角边为参数,求最长边)
4.3 传递参数与参数类型
对于在一开始就设定了必要参数的函数来说,打出函数名并向括号中传递参数实现对函数的调用(call),只要把参数放进函数的括号中即可
def fahrenheit_converter(C):
fahrenheit = C * 9 / 5 + 32
return str(fahrenheit) + '˚F'
fahrenheit_converter(35)
fahrenheit_converter(15)
fahrenheit_converter(0)
fahrenheit_converter(-3)
实际上传递参数有两种方式:位置参数和关键词参数
def trapezoid_area(base_up, base_down, height):
return 1 / 2 * (base_up + base_down) * height
print(trapezoid_area(1, 2, 3)) # 4.5(位置参数)
print(trapezoid_area(base_up=1, base_down=2, height=3)) # 4.5(关键词参数)
# trapezoid_area(height=3, base_down=2, base_up=1) # 关键词参数反序输入并不影响函数正常运作
# trapezoid_area(height=3, base_down=2, 1) # 错误语法,最后一个位置应该是参数height的位置,但与前面height已经按名称传入的3冲突
# trapezoid_area(base_up=1, base_down=2, 3) # 参数正序传入,前两个关键词的方式,最后一个以位置参数传入,可正常运行
# trapezoid_area(1, 2, height=3) # 参数正序传入,前两个以位置方式传入,最后一个以关键字参数传入,可正常运行
# 给一组变量赋值然后调用
5 循环与判断
5.1 逻辑控制与循环
5.1.1 布尔类型:True & False(首字母一定要大写)
使用命令行/终端只为更快展示结果,在IDE返回布尔值仍需使用print函数来实现
1>2 # False
1<2<3 # True
42 != '42' # True
'Name' == 'name' # False
'M' in 'Magic' # True
number = 12 # 没有输出
number is 12 # python3不能这样写
5.1.2 比较运算(Comparison)
比较式成立返回True,不成立返回False
除此之外,还有多条件的比较。先给变量赋值再比较
注: abs()表示取绝对值函数
- 比较运算的一些小问题:
不同类型的对象不能使用“<,>,<=,>=”进行比较,但可用‘==’和‘!=’
浮点数和整数虽是不同类型,但不影响到比较运算
True = 1, False = 0
1 <> 3 其实等价于 1 != 3
5.1.3 成员运算符与身份运算符
in & is
- in后面是一个集合形态的对象,字符串满足此特性,因此可用in进行测试
- is 和 is not是表示身份鉴别的布尔运算符,in 和 not in表示归属关系的布尔运算符号
- python中任何一个对象都要满足身份、类型、值这三点。is用来进行身份对比
# the_Eddie = 'Eddie'
# name = 'Eddie'
# the_Eddie == name
# the_Eddie is name
两个变量一致时经过is对比返回True,在python中任何对象都可判断其布尔值,除了0、None和所有空序列与集合(列表、字典、集合)布尔值为False之外其他都为
True。可使用函数bool()进行判别
5.1.4 布尔运算符 and、or
5.2 条件控制 if …else
# 给函数增加一个重置密码的功能
password_list = ['*#*#', '12345'] # 创建一个列表,存储用户的密码 、初始密码和其他数据(对实际用户数据库的简单模拟)
def account_login(): # 定义函数
password = input('Password:') # 获得字符串并存在变量中
password_correct = password == password_list[-1] # 当用户输入的密码等于密码列表中最后一个元素时(即用户最新设定的密码)登录成功
password_reset = password == password_list[0]
if password_correct:
print('Login success!')
elif password_reset:
new_password = input("Enter a new password:")