前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习手册--第三部分(if语句和字典)

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

作者头像
wangweijun
发布2020-02-14 10:24:10
3.1K0
发布2020-02-14 10:24:10
举报
文章被收录于专栏:wangweijunwangweijun

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

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

代码语言:javascript
复制
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就忽略这些代码。 而大多数条件测试都将一个变量的当前值同特定值进行比较。最简单的条件测试检查变量的值是否与特定值相等:

代码语言:javascript
复制
fruit = 'apple'
print(fruit == 'apple')

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

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

代码语言:javascript
复制
print('apple' == 'Apple')

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

代码语言:javascript
复制
fruit = 'APPle'
print(fruit.lower() == 'apple')

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

使用and 检查多个条件

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

使用or 检查多个条件

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

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

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

代码语言:javascript
复制
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 语句让你能够指定条件测试未通过时要执行的操作。

代码语言:javascript
复制
age = 20
if age > 18:
    print('您已经成年了')
else:
    print("您还未成年")
if-elif-else结构

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

代码语言:javascript
复制
age = 12
if age < 4:
    print("花费$0")
elif age < 18:
    print("花费$5.")
else:
    print("花费$10.")

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

使用if语句处理列表

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

代码语言:javascript
复制
numbers = []
if numbers:
    for num in numbers:
        print(num)
else:
    print('列表为空')

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

字典

一个简单的字典

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

代码语言:javascript
复制
person = {'name': 'zhangsan', 'age': 20}
print(person)

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

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

访问字典中的值

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

代码语言:javascript
复制
person = {'name': 'zhangsan', 'age': 20}
print(person['name'])
print(person['age'])

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

添加键值对

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

代码语言:javascript
复制
person = {'name': 'zhangsan', 'age': 20}
person['height'] = 180
person['weight'] = 110
print(person)

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

修改字典中的值

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

代码语言:javascript
复制
person = {'name': 'zhangsan', 'age': 20}
person['age'] = 22
print(person)

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

删除键值对

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

代码语言:javascript
复制
person = {'name': 'zhangsan', 'age': 20}
del person['name']
print(person)

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

遍历字典

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

代码语言:javascript
复制
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()可让代码更加容易理解,你可以选择这样做,也可以省略它。

代码语言:javascript
复制
person = {'name': 'zhangsan', 'age': 20, 'height': 180, 'weight': 110}
for value in person.keys():
    print(person[value])

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

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

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

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

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

代码语言:javascript
复制
person = {'zhangsan': 20, 'lisi': 24, 'wangwu': 18, 'zhaoliu': 28}
for age in sorted(person.values()):
    print(age)

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

代码语言:javascript
复制
person = {'zhangsan': 20, 'lisi': 20, 'wangwu': 18, 'zhaoliu': 28}
for age in set(person.values()):
    print(age)

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

代码语言:javascript
复制
person1 = {'name': 'zhangsan', 'age': 20}
person2 = {'name': 'lisi', 'age': 22}
person3 = {'name': 'wangwu', 'age': 21}

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

代码语言:javascript
复制
person1 = {'name': 'zhangsan', 'age': 20}
person2 = {'name': 'lisi', 'age': 22}
person3 = {'name': 'wangwu', 'age': 21}

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

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

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

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

代码语言:javascript
复制
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())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • if语句
  • 使用if语句处理列表
  • 字典
    • 遍历字典
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档