if语句
-
每条if语句的核心是一个值为True或False的表达式,这种表达式称为条件测试(布尔表达式)。
-
条件测试:
(1)数值比较:不分大小写
(2)检查特定值是否(不)包含在列表中:(not)in
(2)检查多个条件:and or -
语法:
if 表达式:
(要缩进)待执行的代码块1
elif:
(要缩进)待执行的代码块2 #可以有多个
else:
(要缩进)待执行的代码块3 #可以考虑用elif代替(else可能引入无效甚至恶意数据)
Python只执行其中一个代码块,一次检查,测试通过,跳过余下。
若需要检查关心的所有条件,则使用一系列不包含elif和else代码块的简单if语句。
字典
- 字典即一系列键值对,每一个键和一个值相关联,可以用键来访问相关的值,值可以是数、字符串、列表、字典等任何Python对象,最简单的字典只有一个键值对。(字典元素中的"键",可以是Python中任意不可变数据。例如:整数、浮点数、复数、字符串、元组等类型,但不可以是列表、集合、字典或其它可变类型。)
- 语法:字典名 = {键:值,…} (集合的创建为:集合名={元素1,元素2,…} 不同于列表和字典,集合不会以特定的顺序存储元素,且集合内部元素具有互异性)
- 访问字典中的值:字典名[键]
如果指定的键不存在就会出错,可以选用方法get(指定的键,指定的键不存在时要返回的值 若未指定返回None),可在指定的键不存在时返回一个默认值。 - 添加键值对:字典名[键] = 该键相关联的值
(使用字典来存储用户提供的数据或在编写能自动生成大量键值对的代码时,通常需要先定义一个空字典) - 修改字典中的值:字典名[键] = 新值
- 删除键值对:del 字典名[键]
(删除的键值对会永远消失) - 由类似对象组成的字典:多行表示,例如:
favorite_color = {
'ziranxing':'blue and yellow',
'qun':'purple',
'ying':'pink',
}
- 遍历字典:
(1) 所有键值对:
for 键对应的变量名,值对应的变量名 in 字典名.方法items():
(2)所有键:
for 键对应的变量名 in 字典名.方法keys():
此时,方法keys()可以省略,实际上,它返回一个包含字典中的所有键的列表。
(打印时需要加方法title())
实例:
favorite_color = {
'ziranxing':'blue and yellow',
'qun':'purple',
'ying':'pink',
}
for names in favorite_color.keys():
print(names.title())
运行结果为:
Ziranxing
Qun
Ying
Press any key to continue . . .
若需要其按顺序排列,可调用函数sort()。
(3)所有值:利用方法values(),此时方法不可省略,省略了就是遍历键了。
若需要剔除重复值,可调用函数set()。
- 嵌套
用户输入
- 利用函数:input(提示)
(提示通常在冒号之后有一个空格,用于区分用户输入和提示)
将输入解读为字符串。 - 利用函数:int(变量名)
实例:
age = input ("How old is Zi Ranxing? ")
age = int (age)
print(f"She is {age}")
运行结果如下:
How old is Zi Ranxing? 18
She is 18
Press any key to continue . . .
while循环
- 与for区别:
for循环用于针对集合中的每个元素都执行一个代码块,而while循环则不断运行,直到指定条件不再满足。 - 语法: whie 指定条件:
- 利用break语句可以不再运行循环余下的代码,跳出循环;continue可以跳过余下语句直接进行下一次循环。
- 跳出无限循环:Ctrl+C/关闭显示程序输出的终端窗口。
- 可以实现在遍历列表的同时对其进行修改(优于for)
(1)在列表之间移动元素:
实例:
unconfirmed_users = ['孙悟空','猪八戒','沙僧']#待验证用户列表
confirmed_users=[]#已验证用户空列表
while unconfirmed_users: #验证每个用户直到没有未验证用户
current_user = unconfirmed_users.pop()#栈顶首先弹出
print(f"Verifying user:{current_user.title()}")
confirmed_users.append(current_user)
print("\nThe following users have been confirmed: ")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
运行结果如下:
Verifying user:沙僧
Verifying user:猪八戒
Verifying user:孙悟空
The following users have been confirmed:
沙僧
猪八戒
孙悟空
Press any key to continue . . .
函数
定义函数
def 函数名(参数):#函数定义结束
冒号后的所有缩进构成函数体
“”“文档字符串”“” #描述了函数是做什么的
调用函数
函数名(参数)
向函数传递信息
变量是形参,值是实参;
可以在定义时设定形参的默认值为XX(函数调用时可以省略相应的实参)
- 位置实参:基于实参的顺序,将其关联到函数定义中的形参。(默认执行位置实参)
- 关键字实参:形参名=实参
返回值
在函数中,可使用return语句将值返回到调用函数的代码行。
与while连用时,务必提供退出路径。(考虑与break结合使用)
实例(while循环中最后一个实例的优化):
unconfirmed_users = ['孙悟空','猪八戒','沙僧']#待验证用户列表
confirmed_users=[]#已验证用户空列表
def confirm_users(unconfirmed_users,comfirmed_users):
while unconfirmed_users: #验证每个用户直到没有未验证用户
current_user = unconfirmed_users.pop()
print(f"Verifying user:{current_user.title()}")
confirmed_users.append(current_user)
def show_confirmed_users(confirmed_users):
print("\nThe following users have been confirmed: ")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
confirm_users(unconfirmed_users,confirmed_users)
show_confirmed_users(confirmed_users)
运行结果为:
Verifying user:沙僧
Verifying user:猪八戒
Verifying user:孙悟空
The following users have been confirmed:
沙僧
猪八戒
孙悟空
Press any key to continue . . .
创建副本
函数名[:]
除非理由充分,不要创建副本以节省时间和内存。
传递任意数量的实参
- 形参设置为:*形参名
*让Python创建一个名为形参名的空元组,并将收到的所有值都封装到该元组中。
例如:
def make_pizza(*toppings):
print(toppings)#这里也可以用for循环和f{}
make_pizza('mushrooms','extra cheese')
运行结果为:
('mushrooms', 'extra cheese')
Press any key to continue . . .
- 另外,函数若要接受不同类型的实参,让Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个(带*)形参中。
- 若需要使用任意数量的关键字实参:**形参名
**让Python创建一个名为形参名的空字典,并将所有的指定键值对都放到这个字典中。
*args:通用形参名,可以收集任意数量的位置形参。
**kwargs:通用形参名,用于收集任意数量的关键字形参。
类
面对对象编程;
根据类来创建对象称为实例化,对象即为实例。
- 创建和使用类:
class 首字母大写的名称: #通常可认为首字母大写的名称指的是类,而小写的名指的是根据类创建的实例。
“”“对类的功能进行描述”“”
def _inti_(self,形参名) #类中的函数称为方法,开头和结尾各有两个下划线的是特殊方法,每次根据该类创建新实例时,都会被默认调用。
#每个与实例相关联的方法调用都会自动传递实参self,让实例能够访问类中的属性和方法;传递实参时,self会自动传递;以self为前缀的变量可供类中的所有方法使用,可以通过类的任何实例来访问;可通过实例访问的变量称为属性。
- 访问属性:实例名.属性
- 调用方法:实例名.方法
- 修改属性的值:
(1)直接修改:通过实例直接访问,然后对其赋新值;
(2)通过方法:将值传递给方法,由它在内部更新。
def 方法(self,形参名):
self.属性=形参 #将后来传递的实参值赋给属性
继承
一个类继承另一个类时,将自动获得另一个类的所有属性和方法。
原有的类称为父类/超类,新的类称为子类。
子类可以定义自己的属性和方法。
可以将实例赋给属性,例如:self.battery = Battery()
这行代码会创建一个新实例Battery,并将其赋给属性battery
class 父类名:
“”“父类描述”“”
#此处存放父类方法与函数。
class 子类名(父类名)
“”“子类描述”“”
def _init_(self,父类属性)
“”“初始化父类属性,再初始化子类实例特有的属性”“”
super()._init_(父类属性) #super()是一种特殊函数,使你能够实现调用父类的方法;
self.子类属性=初始值
def 方法(self,属性名):
#方法内容
def 父类方法(self,属性)
#重写父类方法
本篇文章参考文献:《Python编程从入门到实践(第2版)》
欢迎指正与讨论!