在日常生活中,我们往往面临诸多选择,高考报考哪所学校,就业选择哪些企业。而在编程中,我们也会面临很多选择,比如某些剧情游戏。而在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()函数并不会影响原有的变量值。
要检查两个值是否不等,可结合使用感叹号和等号(!=),其中感叹号表示不,在很多编程语言中意义都如此。
除了比较相等,在数字类型中,我们还有很多数学比较,如小于、小于等于、大于、大于等于。
要检查是否两个条件都为True,可使用关键字and将两个条件合二为一,在and关键字中,如果两个条件都通过,则整体为True,如果至少有一个条件不通过,则整体为False。
关键字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 语句中,缩进的作用与for 循环中相同。如果测试通过了,将执行if 语句后面所有缩进的代码行,否则将忽略它们。
有些时候,我们需要在某一条件通过时执行一些操作,并在不通过时也执行一些操作。在这种情况下,可使用if-else语句。if-else 语句块类似于简单的if 语句,但其中的else 语句让你能够指定条件测试未通过时要执行的操作。
age = 20
if age > 18:
print('您已经成年了')
else:
print("您还未成年")
有些时候,我们需要判断超过两种的情况,这时候,我们可以使用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语句来对列表进行一个判断空值的操作。
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())