首页 > temp > 简明python教程 >
-
Python语法基础(2)
Audo
BWM
Benchi
Toyota
- 条件测试
每条if语句核心都是一个值为True和false的表达式,这种表达式杯称为条件测试。Python根据条件测试的值为True还是false来决定是否执行if语句中的代码。
检查特定的值是否包含在列表中
要判定特定的值是否已经在列表中,可以使用关键字in。
>>> aminal = ['lion','tiger','birl','monkey']
>>> 'lion' in aminal
True
>>> 'fish' in aminal
False
检查特定的值是否不包含在列表中
aminal = ['lion','tiger','birl','monkey']
aaa = 'fish'
if aaa not in aminal:
print(aaa.title()+"不在动物列表中")
Fish不在动物列表中
- 省略else语句块
else是一条包罗万象的语句,只要不满足任何if或者elif中的条件测试,其中的代码就会执行,这可能会引入无效甚至是恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码来代替else代码块。这样,你就可以肯定,仅当满足相应条件时,你的代码才会运行。
- 测试多个条件
if-elif-else: 结构功能强大,但是仅适合一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试。这种行为很好,效率很高。让你能够测试一个特定的条件。
然而,有些时候必须检查你关心的所有条件。在这种情况下,应使用一种不包含elif 和else的代码块的简单if语句。这种方法适合于 ,有多个条件都为true,且需要在每个true条件下执行相关的操作。
essage = ['mushroom','tea','buger','dumpling']
if 'dumpling' in essage:
print("有客人点餐dumpling")
if 'tea' in essage:
print("有客人点餐tea")
if 'apple' in essage:
print("有客人点餐apple")
print("\n点餐完毕")
有客人点餐dumpling
有客人点餐tea
点餐完毕
如果使用if-elif-else语句,代码将不能正确地运行,因为有一个测试通过后,就会跳过余下测试:
essage = ['mushroom','tea','buger','dumpling']
if 'dumpling' in essage:
print("有客人点餐dumpling")
elif 'tea' in essage:
print("有客人点餐tea")
elif 'apple' in essage:
print("有客人点餐apple")
print("\n点餐完毕")
有客人点餐dumpling
点餐完毕
- 使用if语句处理列表
检查特殊元素
继续使用前面的例子,这家餐厅在制作时,客人每次点一道菜都打印一条信息。通过创建一个列表,并使用一个循环来打印出客人点的菜:
essage = ['mushroom','tea','buger','dumpling']
for i in essage:
print("有客人点餐"+i.title())
print("\n点餐完毕")
有客人点餐Mushroom
有客人点餐Tea
有客人点餐Buger
有客人点餐Dumpling
点餐完毕
输出很简单,上述代码不过是一个简单的foe语句
然而,如果餐厅的茶用完了,该如何处理呢?
essage = ['mushroom','tea','buger','dumpling']
for i in essage:
if i == 'tea':
print("不好意思,店里没有tea")
else:
print("有客人点餐"+i.title())
print("\n点餐完毕")
有客人点餐Mushroom
不好意思,店里没有tea
有客人点餐Buger
有客人点餐Dumpling
点餐完毕
day_06(字典)
- 一个简单的字典
创建一个外星人字典
alien_0 = {'color':'green','points':5,'X_position':4,'Y_position':5,'speed':'unknow'}
print(alien_0['color'])
print(alien_0['points'])
new_color = alien_0['color']
new_points = alien_0['points']
print("恭喜,你击败了一个"+ new_color +"外星人,获得了"+str(new_points) +"个点数。")
- 添加键值对
alien_0['X_position'] = 4
alien_0['Y_position'] = 5
print(alien_0)
- 修改字典中的值
print("外星人现在的颜色是:"+alien_0['color'])
alien_0 = {'color':'red'}
print("外星人现在的颜色是:"+alien_0['color'])
- 改变外星人的移动位置
alien_0 = {'color':'green','points':5,'X_position':4,'Y_position':5,'speed':'unknow'}
#外星人的原始坐标
print("外星人的位置("+ str(alien_0['X_position']) +","+ str(alien_0['Y_position']) +")" )
add_number = 0
for i in range(10):
if alien_0['speed'] == 0:
add_number+=1
elif alien_0['speed'] == 'unknow':
add_number+=2
else:
add_number+=3
#新位置等于老位置加上增量
alien_0['X_position'] = alien_0['X_position'] + add_number
alien_0['Y_position'] = alien_0['Y_position'] + add_number
print("现在外星人的坐标是("+ str(alien_0['X_position']) +","+ str(alien_0['Y_position']) +")")
外星人的位置(4,5)
现在外星人的坐标是(6,7)
现在外星人的坐标是(10,11)
现在外星人的坐标是(16,17)
现在外星人的坐标是(24,25)
现在外星人的坐标是(34,35)
现在外星人的坐标是(46,47)
现在外星人的坐标是(60,61)
现在外星人的坐标是(76,77)
现在外星人的坐标是(94,95)
现在外星人的坐标是(114,115)
- 删除键值对
对于字典中不再需要的值,可以使用del语句将相应的键值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
下面的代码中,将alien_0中删除键'points' 及其值:
alien_0 = {'color':'green','points':5,'X_position':4,'Y_position':5,'speed':'unknow'}
print(alien_0)
del alien_0['points']
print(alien_0)
{'color': 'green', 'points': 5, 'X_position': 4, 'Y_position': 5, 'speed': 'unknow'}
{'color': 'green', 'X_position': 4, 'Y_position': 5, 'speed': 'unknow'}
删除的键值对,永远消失
- 由类似对象组成的字典
利用字典存储多个键值对时,可以使用以下的格式:
favorite_language = {
'herry':'java',
'mical':'python',
'jun':'ruby',
'lily':'C'
}
print("herry最喜欢的语言是:"+ favorite_language['herry'].title())
herry最喜欢的语言是:Java
这个示例演示了如何将较长的print语句分成多行。
- 遍历字典
遍历所有的键值对
下面的字典中存储了一名用户的用户名、名和姓:
user_0= {
'user_name':'GHP',
'first':'G',
'last':'P'
}
for key,value in user_0.items(): #利用两个变量分别存储键和值
print('\n键: '+key)
print('值: '+value)
可以使用for来遍历字典
键: user_name
值: GHP
键: first
值: G
键: last
值: P
- 遍历字典中所有的键
user_0= {
'user_name':'GHP',
'first':'G',
'last':'P'
}
for name in user_0.keys():
print(name.title())
User_Name
First
Last
创建一个列表,使用列表中的值来遍历字典
favorite_language = {
'herry':'java',
'mical':'python',
'jun':'ruby',
'lily':'C'
}
friends = ['herry','mical']
for name in favorite_language.keys():
print(name.title())
if name in friends:
print("你好," + name.title() + "我知道你最喜欢的语言是" + favorite_language[name].title())
Herry
你好,Herry我知道你最喜欢的语言是Java
Mical
你好,Mical我知道你最喜欢的语言是Python
Jun
Lily
按照顺序遍历字典中的所有键
字典总是明确的记录键之间的关联关系,但是获取字典元素时,获取顺序是不可预测的。
可以使用sorted() 来获取按特定顺序排列的键列表的副本:
favorite_language = {
'herry':'java',
'mical':'python',
'jun':'ruby',
'lily':'C'
}
for name in sorted(favorite_language.keys()):
print(name.title()+"谢谢你\n")
================= RESTART: H:\python练习\Python\Python38-32\字典.py ================
Herry谢谢你
Jun谢谢你
Lily谢谢你
Mical谢谢你
>>>
================= RESTART: H:\python练习\Python\Python38-32\字典.py ================
Herry谢谢你
Jun谢谢你
Lily谢谢你
Mical谢谢你
输出了两次,都是按字典中键的顺序输出
遍历字典中的所有值
如果你只想输出字典中所有的值,不输出键,你可以使用方法values(),它返回一个值列表,而不包含任何的值。
favorite_language = {
'herry':'java',
'mical':'python',
'jun':'ruby',
'lily':'C'
}
for language in sorted(favorite_language.values()):
print("他们喜欢的语言有:"+language.title())
他们喜欢的语言有:C
他们喜欢的语言有:Java
他们喜欢的语言有:Python
他们喜欢的语言有:Ruby
- 嵌套
有时候需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称之为嵌套。你可以在列表中嵌套字典,在字典中嵌套列表甚至在字典中嵌套字典。
字典列表
如何管理成群结队的外星人?一种方法是创建一个外星人列表,其中每一个外星人都是一个字典,包含有外星人的各种信息。
alien_0 = {'color':'green','points':3}
alien_1 = {'color':'red','points':4}
alien_2 = {'color':'orange','points':6}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
{'color': 'green', 'points': 3}
{'color': 'red', 'points': 4}
{'color': 'orange', 'points': 6}
下面我们使用range() 生成30个外星人:
#创建一个外星人的空列表
aliens = []
#创建30个外星人
for alien in range(30):
new_aliens = {'color':'green','points':3}
aliens.append(new_aliens)
#显示5个外星人
for alien in aliens[:5]:
print(alien)
print("...\n")
print("一共创建了"+ str(len(aliens))+"个机器人。")
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
...
一共创建了30个机器人。
修改每个机器人的相关数值
#创建一个外星人的空列表
aliens = []
#创建30个外星人
for alien in range(30):
new_aliens = {'color':'green','points':3}
aliens.append(new_aliens)
#显示5个外星人
for alien in aliens[0:3]:
if alien['color'] == 'green':
alien['color'] = 'red'
alien['points'] = 6
for alien in aliens[0:7]:
print(alien)
print("...\n")
print("一共创建了"+ str(len(aliens))+"个机器人。")
{'color': 'red', 'points': 6}
{'color': 'red', 'points': 6}
{'color': 'red', 'points': 6}
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
{'color': 'green', 'points': 3}
...
一共创建了30个机器人。
还可以添加一些条件
#显示5个外星人
for alien in aliens[0:3]:
if alien['color'] == 'green':
alien['color'] = 'red'
alien['points'] = 6
elif alien['color'] == 'red':
alien['color'] = 'green'
alien['points'] = 3
在字典中存储列表
存储披萨的信息
pizza = {
"面皮":"榴莲面皮",
"佐料":["榴莲","虾仁","牛肉","芝士"]
}
#错误,列表不能直接输出,需要用循环遍历,不能再错
'''print("你点的是1号披萨,是"+pizza["面皮"]+","+"里面有"+pizza["佐料"]+"的pizza.")'''
print("你点的是1号"+pizza["面皮"]+"披萨")
for i in pizza["佐料"]:
print("其中1号披萨中的佐料有\t"+i)
你点的是1号榴莲面皮披萨
其中1号披萨中的佐料有 榴莲
其中1号披萨中的佐料有 虾仁
其中1号披萨中的佐料有 牛肉
其中1号披萨中的佐料有 芝士
输出每个人喜欢的语言:
favorite_language = {
'harry':['python','php'],
'merry':['java'],
'micle':['c'],
'ben':['嵌入式','c++']
}
for k,v in favorite_language.items():
print("\n"+k+"喜欢的是")
for language in v:
print("\t"+language.title())
harry喜欢的是
Python
Php
merry喜欢的是
Java
micle喜欢的是
C
ben喜欢的是
嵌入式
C++
在字典中存储字典
创建一个城市字典
cities = {
'Beijing':{
'population':3000000,
'country':'中国',
'foods':['北京烤鸭','豆汁']
},
'GuangZhou':{
'population':20000000,
'country':'中国',
'foods':['云吞','烧麦']
},
'NewYork':{
'population':4000000,
'country':'美国',
'foods':['汉堡','牛排']
}
}
for k,v in cities.items(): #v就是一个小字典
print("\n城市的名字"+k)
new_population = v['population']
countries = v['country']
print("它的人口有"+str(new_population))
print("这个城市属于"+countries)
for food in v['foods']:
print("他们喜欢的食物是:"+food)
城市的名字Beijing
它的人口有3000000
这个城市属于中国
他们喜欢的食物是:北京烤鸭
他们喜欢的食物是:豆汁
城市的名字GuangZhou
它的人口有20000000
这个城市属于中国
他们喜欢的食物是:云吞
他们喜欢的食物是:烧麦
城市的名字NewYork
它的人口有4000000
这个城市属于美国
他们喜欢的食物是:汉堡
他们喜欢的食物是:牛排
day_07 (用户输入和while循环)
- 使用while循环
while循环与for循环的区别,for循环用于针对集合中的每个元素的一个代码块,而while循环不断地运行,直到指定的条件不满足为止:
使用while循环来数数:
#while循环
i = 0
while (i<5):
i+=1
print(i)
1
2
3
4
5
让用户选择何时退出
message_0 = "你有两个选择,要么输入一条信息,要么输入'quit'退出程序"
message_1 = " "
while message_1 != 'quit':
message_1 = input(message_0)
print(message_1)
你有两个选择,要么输入一条信息,要么输入'quit'退出程序你好啊
你好啊
你有两个选择,要么输入一条信息,要么输入'quit'退出程序hello
hello
你有两个选择,要么输入一条信息,要么输入'quit'退出程序quit
quit
不输出最后的quit,需要再加一个判断语句;
message_0 = "你有两个选择,要么输入一条信息,要么输入'quit'退出程序"
message_1 = " "
while message_1 != 'quit':
message_1 = input(message_0)
if message_1 !='quit':
print(message_1)
你有两个选择,要么输入一条信息,要么输入'quit'退出程序不要在意别人拥有的
不要在意别人拥有的
你有两个选择,要么输入一条信息,要么输入'quit'退出程序quit
- 使用标志
在要求很多条件满足才能继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志,充当了程序的交通信号灯。你可以让程序在标志为True时继续运行,并在任何事件导致标志的值为Flase时让程序停止运行。这样,在while语句中就只需检出一个条件——标志的当前值是否为True,并将所有的测试都放在其他地方,从而让程序更加简洁。
message_0 = "你有两个选择,要么输入一条信息,要么输入'quit'退出程序"
message_1 = " "
active = True
while active:
message_1 = input(message_0)
if message_1 =='quit':
active = False
else:
print(message_1)
你有两个选择,要么输入一条信息,要么输入'quit'退出程序nihao
nihao
你有两个选择,要么输入一条信息,要么输入'quit'退出程序quit
- 使用while循环来处理列表和字典
#在列表之间移动元素
#首先创建两个列表
first_list = ['apple','orange','cherry','banana']
second_list = []
#验证每个元素,直到没有元素为止
#将每个已验证的元素,移到空列表当中
while first_list:
fruits = first_list.pop()
print("已经验证的元素:"+fruits.title())
second_list.append(fruits)
#显示所有已验证的元素
print("\n已经验证的元素")
for i in second_list:
print(i)
已经验证的元素:Banana
已经验证的元素:Cherry
已经验证的元素:Orange
已经验证的元素:Apple
已经验证的元素
banana
cherry
orange
apple
删除包含特定值的所有列表元素
列表中有多个相同的元素,我们该如何只是将相同的元素删除:
#创建一个宠物列表
pets = ['dog','cat','dog','cat','fish','rabbit','cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
['dog', 'cat', 'dog', 'cat', 'fish', 'rabbit', 'cat']
['dog', 'dog', 'fish', 'rabbit']
使用用户输入来填充字典
#使用用户输入来充填字典
responses = {} #创建一个空字典
#设置一个标签,用于指出调查是否继续
active = True
while active:
#提示输入被调查者的名字和回答
name = input(