文章目录
Python学习(三)
条件判断
每个if语句的核心都是一个结果为True或者False的表达式,Python根据这些表达式来决定是否执行if语句中的代码,如果为True,就执行紧跟在if语句后的代码,如果为False,就忽略这些代码。
检查是否相等
Python使用==
来检测是否相等。相等运算符在值相等时返回结果为True,否则返回False.
phone_1 = "小米"
phone_2 = "苹果"
Phone_3 = "小米"
print(phone_1 == phone_2) #False
print(phone_1 == phone_3) #True
从上边我们也可以看出,一个等号是赋值,两个等号是对两边的值进行比较。
检测相等时不考虑大小写
在上述的比较中,Python会比较大小写,但是有时候比如我们输入验证码时,只关心是否正确,而不关心大小写,这时候我们可以将所有的变量转换为小写再比较;
name_1 = "Yun TianHe"
print(name_1.lower() == "YUN TIANHE".lower()) #True
函数lower()
并不会改变变量中原始的值。
检查是否不相等
在Python中,和其他语言类似的,可以使用!=
判断两个值是或否不相等,其中感叹号表示不。
phone_1 = "小米"
phone_2 = "苹果"
print(phone_1 != phone_2) #True
比较数字
数字的相等和不等比较与上边类似,但是数字还可以进行大于,小于,大于等于,小于等于的比较,符号依次如下:>,<,>=,<=
print(2 == 4) #False
print(2 != 4) #True
print(2 > 4) #False
print(2 < 4) #True
print(2 >= 4) #False
print(2 <= 4) #True
检查多个条件
有时侯可能需要同时判断多个条件,当这些条件都为True时才执行某项操作,而有时候只要有一个True就执行操作,这时候可以使用关键字and和关键字or
使用and连接多个判断语句
要在所有条件都为True的时候再执行某种操作,可以使用and连接词进行连接,如果所有条件表达式为True,则整表达式就为True,否则整个表达式为False
age_0 = 18
age_1 = 15
print(age_0 >= 18 and age_1 >= 18) #True and False #False
print(age_0 >= 15 and age_1 >= 15) #True and True #True
为了改善可读性,也可以将每个条件判断语句放到小括号中。
使用or连接多个判断语句
关键字or也能够连接多个条件判断语句,但是只要有一个条件判断语句为真,整个表达式的真值就为真。
age_0 = 18
age_1 = 15
print(age_0 >= 18 or age_1 >= 18) #True or False #Ture
print(age_0 >= 20 or age_1 >= 20) #False or False #False
检查列表中是否有特定值
要判断特定的值是否包含在列表中,可以使用关键词in,如果存在则返回True,否则返回False。
mobilephones = ["苹果","三星","华为","小米","oppo","vivo"]
print("小米" in mobilephones) #True
print("锤子" in mobilephones) #False
如果想检查特定的值是否不包含在列表中,可以使用关键词not in,如果包含在其中返回False,不包含在其中返回True。
mobilephones = ["苹果","三星","华为","小米","oppo","vivo"]
print("小米" not in mobilephones) #False
print("锤子" not in mobilephones) #True
布尔表达式
布尔表达式时条件判断或者条件测试的别名,结果要么为True,要么为False,布尔值通常用于记录条件。
game_active = True
can_edit = False
有时候可以用布尔值直接替换条件判断语句,以此来检测程序是否正确。
if语句
if语句能够让你检查程序目前的状态,并据此采取相应的措施。
简单的if语句
最简单的if语句只有一个条件判断:
age = 19
if age >= 18:
print("已经成年了") #已经成年了
再第二句话中将检测变量age的值是否大于或等于18,如果判断为True将执行后边连续紧跟的具有缩进的代码行,如果判断为False,则忽略它们。
if-else语句
if-else语句可以在条件通过时执行一个操作,在条件没有通过时执行另外一个操作。
age = 17
if age >= 18:
print("已经成年了")
else:
print("你还没有成年哦")
#你还没有成年哦
可以看出在if的判断没有通过时,系统会转而执行else后边的语句,如果if后接的判断语句针织为True,那么else后的语句就会被省略。
if-elif-else
有时候我们可能会对多个条件进行判断,这时候可以使用if-elif-else的结构,Python只会执行这个结构中的一句代码,它会依次检查每个判断语句,直到遇到了真值为True的那一个:
score = 75
if score >= 90:
print("成绩优秀")
elif score >= 80:
print("成绩良好")
elif score >= 60:
print("成绩及格")
else:
print("不及格")
#成绩及格
我们可以根据需要使用任意数量的elif代码块,同时Python并不要求if-elif结构最后一定要有else语句。
测试多个条件
if-elif-else结构的功能很强大,但是只适合只有一个条件满足时的情况,只要一个条件判断语句的真值为True,就会跳过剩下的测试。但是有时候,我们必须检查所有必需的条件,同时在条件成立时运行多个代码块,这个时候应该使用多个简单的if语句。
字典
在Python中,字典是一系列的键值对,每个键都和一个值相关联,我们可以使用键访问与之关联的值。与键相关联的值可以是,数字,字符串,列表,甚至字典。
字典用放在花括号{}中的一系列键值对来表示,键和值用冒号分隔,键值对用逗号分隔,如下所示:
user = {"name":"yuejinzhao","age":18}
上边的字典总共包括两个键值对,其中name和age是键,yuejinzhao和age是与其相关联的值。
访问字典中的值
要获取与键有关的值,可以依次指定指定字典名和放在方括号中的键:
user = {"name":"yuejinzhao","age":18}
print(user["name"]) #yuejinzhao
添加键值对
字典是一种动态结构,可以随时在其中添加键值对,要添加键值对,可以依次指定字典名,用方括号括起来的键和相关联的值。
user = {"name":"yuejinzhao","age":18}
user["sex"] = "man"
print(user) #{'name': 'yuejinzhao', 'age': 18, 'sex': 'man'}
创建一个空字典
一般情况下,我们都需要先创建一个空字典,然后再在字典中加入键值对,创建空字典只需要一对花括号即可。
user = {}
修改字典中的值
要修改字典中的值,可以依次指定字典名、用方括号括起的键以及与该键关联的新的值。
user = {"name":"yuejinzhao","age":18}
user["age"] = 22
print(user) #{'name': 'yuejinzhao', 'age': 22}
删除键值对
对于字典中不再需要的信息,可以使用del语句将键值对彻底删除。使用del语句时,必须指明字典名和要删除的键。
user = {"name":"yuejinzhao","age":18}
del user["age"]
print(user) #{'name': 'yuejinzhao'}
由类似对象组成的字典(多行创建字典)
字典也可以用来存储众多对象的同一种信息,比如存储不同人的年龄:
ages = {
"jane":13,
"maria":15,
"jack":16,
"tom":14,
}
print(ages) #{'jane': 13, 'maria': 15, 'jack': 16, 'tom': 14}
有时候字典中的容量会很大,为了便于存储,我们可以多行键入字典的值。确定需要使用多行来定义字典,在输入做花括号后按回车键,再在下一行缩进四个空格,指定第一个键值对,再在后边加上逗号。此后每次按回车时,系统会自动缩进后续键值对。定义好键值对后,再在最后一个键值对的下一行添加右花括号,并缩进四个空格,我们也可以在最后一个键值对的末尾加上逗号,为以后增加键值对做准备。
遍历字典
遍历所有键值对
我们通常使用for循环遍历字典,因为一个键值对包括两个值,所以我们需要声明两个变量来分别保存键和其对应的值。在这里,我们利用items()
方法,他会返回一个键值对列表,然后由for循环将每一个键值对保存到两个变量中。
user = {"name":"yuejinzhao","age":18}
for key, value in user.items():
print("\nkey" + key)
print("value" + str(value))
'''
key: name
value: yuejinzhao
key: age
value: 18
'''
这种方式在遍历字典时,键值对返回的顺序可能与存储的顺序不一样,Python不关心键值对的存储顺序,只关注键和值的关联关系。
遍历字典中所有的键
在不需要使用字典中的值的时候,可以使用方法keys()
来仅仅获得字典中的键值。
ages = {"jane":13, "maria":15, "jack":16, "tom":14}
for name in ages.keys():
print(name)
'''
jane
maria
jack
tom
'''
实际上,在遍历字典时会默认遍历所有的键。如果是将上述代码改为for name in ages
,代码的输出结果并不会发生改变。但是使用keys()
方法会使代码更容易理解。
另外。方法keys()
并非只能用于遍历,实际上该方法返回一个列表,里边包括所有的键:
ages = {"jane":13, "maria":15, "jack":16, "tom":14}
print(ages.keys()) #dict_keys(['jane', 'maria', 'jack', 'tom'])
print("tom" in ages.keys()) #True
按顺序遍历字典中的所有键
由于字典不关心键值对的顺序,在获取字典的元素时,结果往往是无法预料的,如果想要以特定的顺序返回元素,可以在for循环中使用sorted()
函数对返回的键进行排序:
ages = {"jane":13, "maria":15, "jack":16, "tom":14}
for name in sorted(ages.keys()):
print(name)
'''
jack
jane
maria
tom
'''
遍历字典中的所有值
如果仅仅想获得字典中的值,而对键不感兴趣,可以使用values()
方法,它返回一个值的列表,同时不包括键。
ages = {"jane":13, "maria":15, "jack":16, "tom":13}
for number in sorted(ages.values()):
print(number)
'''
13
13
15
16
'''
但是,这样返回的值可能会有重复值,为了剔除值中的重复项,我们可以使用集合set,集合类似于列表,但是其中的每个值都是独一无二的。
ages = {"jane":13, "maria":15, "jack":16, "tom":13}
for number in set(ages.values()):
print(number)
'''
16
13
15
'''
嵌套
前边说过字典中可以可以存储几乎所有的对象,我们可以将一系列字典存储在列表中,也可以将列表作为值存储在字典中,甚至也可以将字典存储在字典中,这种方法被称为嵌套。
在列表中存储字典
字典user只包含一个用户的信息,无法再存储第二用户的。如果我们想存储大量的用户信息,这时候我们可以创建一个用户列表,其中每个用户都是一个字典。
user_1 = {"name":"yuejinzhao","age":18}
user_2 = {"name":"zhangsan","age":19}
user_3 = {"name":"lisi","age":20}
users = [user_1,user_2,user_3]
for user in users:
print(user)
'''
{'name': 'yuejinzhao', 'age': 18}
{'name': 'zhangsan', 'age': 19}
{'name': 'lisi', 'age': 20}
'''
在字典中存储列表
当需要在字典中将一个键关联到到多个值时,可以在字典中嵌套一个列表:
user = {"name":"yuejinzhao","hobbys":["music","play games"]}
print("the user`s name is " + user["name"])
print("the user`s hobbys is")
for hobby in user["hobbys"]:
print("\t" + hobby)
'''
the user`s name is yuejinzhao
the user`s hobbys is
music
play games
'''
在字典中存储字典
我们也可以在字典中存储字典,例如用户在不同的网站有不同的昵称和密码:
users = {
"name":{
"baidu":"张三",
"QQ":"李四",
},
"password":{
"baidu":"123",
"QQ":"456"
}
}
for names, password in users.items():
print("\nname: " + names)
for key, value in password.items():
print(key)
print(value)
'''
name: name
baidu
张三
QQ
李四
name: password
baidu
123
QQ
456
'''
在这里需要注意的是上述的输出格式,其中names中保存的是users字典中的两个键,password保存的是users字典中的值,其中这两个值也是字典。在对值进行输出时,由于值是字典,因此也需要for循环的形式进行输出。