Python学习手册--第三部分(if语句和字典)

在日常生活中,我们往往面临诸多选择,高考报考哪所学校,就业选择哪些企业。而在编程中,我们也会面临很多选择,比如某些剧情游戏。而在Python中,if语句能让你检查程序的当前状态,并据此采取相应的措施。

我们来编写一个简单的示例:

fruits = ['apple', 'banana', 'pear', 'watermelon', 'peach']
for fruit in fruits:
    if fruit == 'apple':
        print(fruit.upper())
    else:
        print(fruit.title())

上面的程序将名为apple的元素以全大写的方式输出,将其它元素以首字母大写的方式输出。
每条if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。Python根据条件测试的值为True 还是False 来决定是否执行if 语句中的代码。如果条件测试的值True,Python就执行紧跟在if 语句后面的代码;如果为False ,Python就忽略这些代码。
而大多数条件测试都将一个变量的当前值同特定值进行比较。最简单的条件测试检查变量的值是否与特定值相等:

fruit = 'apple'
print(fruit == 'apple')

我们首先使用一个等号将fruit变量的值设置为apple,然后使用两个等号检查fruit变量的值是否为apple,很显然这是成立的,所以结果会输出True,如果不成立,则输出False。

在Python中,检查两个值是否相等的时候是严格区分大小写的:

print('apple' == 'Apple')

例如上面的这条语句就会输出False。如果你需要它区分大小写,这当然是一件好事,但如果大小写无关紧要,而只想检查变量的值,可将变量的值转换为小写,再进行比较。

fruit = 'APPle'
print(fruit.lower() == 'apple')

这样不管fruit变量的大小写如何,输出都为True,并且lower()函数并不会影响原有的变量值。
要检查两个值是否不等,可结合使用感叹号和等号(!=),其中感叹号表示不,在很多编程语言中意义都如此。
除了比较相等,在数字类型中,我们还有很多数学比较,如小于、小于等于、大于、大于等于。

使用and 检查多个条件

要检查是否两个条件都为True,可使用关键字and将两个条件合二为一,在and关键字中,如果两个条件都通过,则整体为True,如果至少有一个条件不通过,则整体为False。

使用or 检查多个条件

关键字or也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个条件都没有通过时,使用or的表达式才为False。

检查特定值是否包含在列表中

有时候,执行操作前你必须检查列表是否包含特定的值,如,用户在注册时候,需要检查数据库中是否含有用户输入的信息。
要实现这样的需求,我们可使用关键字in。

fruits = ['apple', 'banana', 'pear', 'watermelon', 'peach']
print('apple' in fruits)
print('Hami' in fruits)

当然,要想检查特定值是否不包含在列表中,我们可使用关键字not in。

布尔表达式

刚才的程序中我们已经接触到了布尔表达式,布尔表达式用于表示真或假的两种状态,它的值要么为True,要么为False。

if语句

在文章的开头,我们就简单地使用了一下if语句。现在,我们对if语句进行一个进阶。
在if 语句中,缩进的作用与for 循环中相同。如果测试通过了,将执行if 语句后面所有缩进的代码行,否则将忽略它们。

if-else 语句

有些时候,我们需要在某一条件通过时执行一些操作,并在不通过时也执行一些操作。在这种情况下,可使用if-else语句。if-else 语句块类似于简单的if 语句,但其中的else 语句让你能够指定条件测试未通过时要执行的操作。

age = 20
if age > 18:
    print('您已经成年了')
else:
    print("您还未成年")
if-elif-else结构

有些时候,我们需要判断超过两种的情况,这时候,我们可以使用if-elif-else结构实现。例如:
一个游乐场的收费标准为:
4岁以下免费;
4~18岁收费5美元;
18岁(含)以上收费10美元。
我们根据上述标准编写程序:

age = 12
if age < 4:
    print("花费$0")
elif age < 18:
    print("花费$5.")
else:
    print("花费$10.")

注意:Python并没有规定必须存在else语句,所以,在某些情况下,我们可以省略else。

使用if语句处理列表

在之前对列表的操作中,我们都默认列表中有数据,而且列表中确实是有数据的,而在实际的开发中,经常会出现传递过来的数据可能是空值。所以,我们可以借助if语句来对列表进行一个判断空值的操作。

numbers = []
if numbers:
    for num in numbers:
        print(num)
else:
    print('列表为空')

上述程序检查了numbers列表是否为空,如果为空,输出列表为空提示,如果不为空,则循环打印列表元素。

字典

一个简单的字典

字典是什么呢?字典是一组特殊数据的集合,它通常用来描述一个事物的属性,我们先来编写一个简单的字典:

person = {'name': 'zhangsan', 'age': 20}
print(person)

这就是一个最简单的字典,它描述了一个人的名字和年龄。

在Python中,字典是一系列键——值对,每个键都有一个唯一的值与其对应,你可以使用键来访问与之相关的值。这个值可以是数字、字符串、列表甚至字典。事实上,我们可以将任意值作为字典的值。

访问字典中的值

要想访问字典的值,我们可以通过其对应的键来访问:

person = {'name': 'zhangsan', 'age': 20}
print(person['name'])
print(person['age'])

字典中可以包含任意数量的键值对。

添加键值对

字典是一种动态结构,可随时在其中添加键值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。

person = {'name': 'zhangsan', 'age': 20}
person['height'] = 180
person['weight'] = 110
print(person)

这样,我们就将身高和体重添加进了字典。

修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

person = {'name': 'zhangsan', 'age': 20}
person['age'] = 22
print(person)

上述程序中,我们将年龄改为了22。

删除键值对

对于字典中不再需要的信息,可使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。

person = {'name': 'zhangsan', 'age': 20}
del person['name']
print(person)

上述程序中,我们把姓名从字典中删除了。

遍历字典

具备了前面的知识,现在来遍历字典应该十分简答,我们直接开始编写:

person = {'name': 'zhangsan', 'age': 20, 'height': 180, 'weight': 110}
for key,value in person.items():
    print('key:' + key + '---value:' + str(value))

我们通过item()函数获得字典的每个键值,然后定义两个变量key,value分别存储键和值。即可输出字典的所有值。
注意:Python不关心键值对的存储顺序,所以在遍历字典的时候,顺序可能和原字典不同。
遍历字典时,会默认遍历所有的键,如果显式地使用方法keys()可让代码更加容易理解,你可以选择这样做,也可以省略它。

person = {'name': 'zhangsan', 'age': 20, 'height': 180, 'weight': 110}
for value in person.keys():
    print(person[value])

方法keys() 并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键。

person = {'name': 'zhangsan', 'age': 20, 'height': 180, 'weight': 110}
keys = person.keys()
print(keys)
按顺序遍历字典中的所有键

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常你想要的只是获取与键相关联的正确的值。要以特定的顺序返回元素,一种办法是在for 循环中对返回的键进行排序。为此,可使用函数sorted() 来获得按特定顺序排列的键列表的副本:

person = {'zhangsan': 20, 'lisi': 24, 'wangwu': 18, 'zhaoliu': 28}
for name in sorted(person.keys()):
    print(name)
按顺序遍历字典中的所有值

同样的方法,我们可以按顺序遍历字典中的值:

person = {'zhangsan': 20, 'lisi': 24, 'wangwu': 18, 'zhaoliu': 28}
for age in sorted(person.values()):
    print(age)

如果在某些特定的情况下,我们需要对字典中的值进行去重操作,Python也给我们提供了方法。就是使用集合(set)。集合类似于列表,但是集合中的每个元素都必须是独一无二的。

person = {'zhangsan': 20, 'lisi': 20, 'wangwu': 18, 'zhaoliu': 28}
for age in set(person.values()):
    print(age)

使用字典和列表我们可以组合出复杂的数据。
例如我现在有三个字典:

person1 = {'name': 'zhangsan', 'age': 20}
person2 = {'name': 'lisi', 'age': 22}
person3 = {'name': 'wangwu', 'age': 21}

每个字典都包含了一个人的信息,但无法存储第二个人的信息,这时,我们就可以创建一个存放字典的列表:

person1 = {'name': 'zhangsan', 'age': 20}
person2 = {'name': 'lisi', 'age': 22}
person3 = {'name': 'wangwu', 'age': 21}

person = [person1, person2, person3]
print(person)
在字典中存储列表

某些情况下,我们需要在字典中存储列表,例如:人的爱好可以是多个,所以我们必须通过列表来存储爱好信息:

person = {
    'name': 'zhangsan',
    'age': 20,
    'hobby': ['篮球', '足球', '游泳']
}
print(person)
在字典中存储字典

可在字典中嵌套字典,但这样做时,代码可能很快复杂起来。例如,如果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。在下面的程序中,对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,并访问与每个用户名相关联的信息字典:

for username, user_info in users.items():
    print("\nUsername: " + username)
    full_name = user_info['first'] + " " + user_info['last']
    location = user_info['location']

    print("\tFull name: " + full_name.title())
    print("\tLocation: " + location.title())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.caixukun

你们的支持是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值