3.if语句、dictionary
3.1 if语句
3.1.1 关于条件测试
每条if语句的核心都是一个值为True或False的表达试,这种表达式称为条件测试。
示例:
在Python中检查是否相等时需要区分大小。如果不想比较大小写,只想比较变量的值,可以同时转换为大写或者小写。
示例:
要判断两个值是否不相等可以使用符号(!=)。
示例:
zhouluxun = 'human'
if zhouluxun != 'doge':
print('Zhouluxun is a human')
检查多个条件,可以使用关键字and和or。
示例:
number = 100
if number <= 101 and number > 99:
print(number)
#‘and’ 关键字是交集
print('\n')
if number < 101 or number >10000:
print(number)
#‘or’ 关键字是并交集
确定特定的值未包含在列表中很重要,可使用关键字not in。
示例:
number = 100
if number not in range(100):
print('True')
布尔表达式,他是条件测试的别名。与条件表达式一样,布尔表达式的结果要么是True,要么是False。
3.1.2 if语句的各种简单运用
if语句有很多种,具体要选择哪种取决于你要测试的条件数量。在if语句中,缩进的作用与for
语句的作用相同。如果测试通过了,将会执行if语句后面的所有程序代码,否则将会忽略他们。else是一条包罗万象的语句,但可能会引入无效或者恶意的数据。如果知道最终要测试的条件应当考虑使用一下elif代码。
示例:
number = 100
if number not in range(100):
print(1)
#最为普通的if语句结构
print('\n')
if number < 10:
print(2)
elif number < 99:
print(3)
else:
print(4)
#首先测试if后面的条件是否成立,
#如果不成立就继续之后的测试直到成功为止。
print('\n')
if number < 10:
print(2)
elif number < 99:
print(3)
elif number != 100
print(4)
#与上一个结构不同的是末尾没有了else代码,
#else是所以条件不成立时使用
#而elif是一旦成立就使用
测试多个条件,直接上示例:
requested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings:
print('Adding mushrooms')
if 'peppernoi' in requested_toppings:
print('Adding peppernoi')
if 'extra cheese' in requested_toppings:
print('Adding extra cheese')
如果只想执行一个代码块,就使用if-elif-else结构;如果要执行多个代码块,就使用一系列的独立的if语句。
3.3 使用if语句来处理列表(if语句与for语句的简单结合)
检查特殊元素,示例:
requested_toppings = ['mushrooms', 'extra cheese', 'rencai']
for requested_topping in requested_toppings:
if requested_topping == 'mushrooms':
print("Don't have")
else:
print(requested_topping)
确定列表不是空的,在if语句中将列名用作条件表达式时,Python将在列表至少包含一个元素返回Ture,并在列表为空的时候返回False。
示例:
requested_toppings = []
if requested_toppings:
for x in requested_toppings:
print(x)
print('happle')
else:
print("Don't ture")
3.2 Dictionary
3.2.1 使用字典
在Python中,字典是一系列键值对,每个键都与一个值相关联,我们可以使用键来访问相关联的值。
在Python中,字典用放在花括号({ })中的一系列键值对表示。
示例:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
new_points = alien_0['points']
print(new_points)
添加键值对,示例:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
alien_1 = {}
print(alien_1)
alien_1['x_position'] = 0
alien_1['y_position'] = 25
print(alien_1)
#可以先创建一个空字典,再来添加值键对
要修改字典中的值,可以依次指定字典名、用方括号括起来的键,以及与该键相关联的新值。
示例:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['color'] = 'red'
print(alien_0)
对于字典中不再需要的信息,可以使用del 语句将相对应的键值对彻底删除。
示例:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['color']
print(alien_0)
使用get()来访问值,方法get()的第一个参数用于指定键,是必不可少的;第二个参数为指定的键不存在是要返回的值,是可选的:
示例:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0.get('speed', 'No speed assigned.'))
speed = alien_0.get('speed', 'No speed assigned.')
print(speed)
注意:如果指定的键有可能不存在,应考虑使用方法get(),而不是用方括号表示法。
3.2.2 遍历字典
要编写遍历字典的for循环,可声明两个变量,对于存储键值对的键和值,这两个变量可以使用任意名称。需要使用到方法items(),他将会返回一个键值对列表。
示例:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
print(key)
print(f'{value}\n')
遍历字典中所有的键,使用方法keys(),在不需要使用字典的值的时候。
示例:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key in user_0.keys():
print(f'{key}\n')
同样的可以使用函数sorted()——for name in sorted(favorite_languages.keys()):,来按照顺序遍历字典中所有的键。
遍历字典中所有的值,可以使用方法values()来返回一个值列表,不包含任何键。
示例:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for value in user_0.values():
print(f'{value}\n')
遍历出来的值可能会有重复项,为了剔除重复项,可以使用集合。集合中所有的元素都是不重复的。对于包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。
示例:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
'lasts': 'fermi',
}
for value in set(user_0.values()):
print(f'{value}\n')
user_1 = {'zhou', 'lu', 'xun', 'lu'}
print(user_1)
#可以使用花括号来创建集合
注意:不同与列表和字典,集合不会以特定的顺序储存元素。
3.2.3 嵌套
有时候,需要将一系列字典存储到列表中,或将列表作为值存储到字典中,这就是嵌套。
字典列表的示例:
#创建一个用于存储外星人的空列表
aliens = []
#创建30个外星人
for aliens_number in range(30):
new_alien = {'color': 'green', 'points': 5, 'speend': 'slow'}
aliens.append(new_alien)
#改变前三个外星人的color=yellow,speed=medium,points=10
for alien in aliens[:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
for alien in aliens[:5]:
print(alien)
在字典中存储列表:
favorit_languages = {
'jen': ['Python', 'ruby'],
'sarah': ['c'],
'zhouluxun': ['ruby', 'go'],
}
for name, languages in favorit_languages.items():
print(f"{name}'s languages are:")
for language in languages:
print(f'\t{language}')
注意:列表和字典的嵌套层数不应太多。
在字典中存储字典,示例:
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
}
}
for username, user_info in users.items():
print(username)
print(f"{user_info['first'].title()} {user_info['last'].title()}")
print(f"{user_info['location']}\n")