Python学习(三)条件判断,if语句,字典

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循环的形式进行输出。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值