《Python编程:从入门到实践》学习笔记
python编程软件PyCharm Community Edition 2022.3.2,快捷键:Ctrl+/ 表示注释Python代码。
一、变量的命名和使用
1.变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打
头,例如,可将变量命名为message_1,但不能将其命名为1_message。
2.变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message
可行,但变量名greeting message会引发错误。
3.不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,
如print。
4.变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length
比length_of_persons_name好。
5.慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
注意:使用符合标准Python 约定的文件名:使用小写字母和下划线,如simple_message.py 和
simple_messages.py。
二、字符串
字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,
也可以是双引号,如下所示:
"This is a string."
'This is also a string.'
1.使用方法修改字符串的大小写
(1)title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写,示例如下:
name = "ada lovelace"
print(name.title())
结果为:Ada Lovelace
(2)将字符串改为全部大写或全部小写,示例如下:
name = "ada lovelace"
#全部大写
print(name.upper())
#全部小写
print(name.lower())
结果为:
ADA LOVELACE
ada lovelace
(3)合并(拼接)字符串
Python使用加号(+)来合并字符串。示例如下:
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("Hello, " + full_name.title() + "!")
结果:Hello, Ada Lovelace!
三、数字
整数
在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。示例如下:
print(2+3)
print(2-3)
print(2*3)
print(6/3)
结果:5 -1 6 2.0
浮点数
Python将带小数点的数字都称为浮点数。示例如下:
print(0.2+0.3)
print(2*0.3)
结果:0.5 0.6
使用函数str()避免类型错误
可调用函数str(),它让Python将非字符串值表示为字符串。示例如下:
age = 23
message = "Happy " + str(age) + "rd Birthday!"
print(message)
结果:Happy 23rd Birthday!
四、注释
在Python中,注释用井号(#)标识。示例如下:
# 向大家问好
print("Hello Python people!")
五、列表
1.列表简介
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。下面是列表的各项操作:创建、修改、添加、插入、删除等各项操作,示例如下:
#创建列表
bicycles=['trek','cannondale','redline','specialized']
#打印列表第一个元素
print(bicycles[0])
#打印列表第一个元素,并大写首字母
print(bicycles[0].title())
#访问列表最后一个元素
print(bicycles[-1])
#修改第一个元素
bicycles[0]='bak'
print(bicycles)
#在列表末尾添加元素
bicycles.append('mas')
print(bicycles)
#在列表中插入元素
bicycles.insert(2,'dasdad')
print(bicycles)
#删除列表中的元素
del bicycles[2]
print(bicycles)
#删除列表中的值,并访问
print(bicycles)
pop_bicycles=bicycles.pop(0)
print(bicycles)
print(pop_bicycles)
#删除指定元素
bicycles.remove('mas')
print(bicycles)
#对列表进行永久性排序
names=['lout','daily','lucy','kaycee']
names.sort()
print(names)
names.sort(reverse=True)
print(names)
#对列表进行临时排序
fruits=['bannase','apple','orege']
print(sorted(fruits))
print(fruits)
#倒着打印列表
fruits.reverse()
print(fruits)
#确定列表长度
print(len(fruits))
注:(1)方法append()将元素添加到列表末尾;
(2)使用方法insert()可在列表的任何位置添加新元素;
(3)使用del可删除任何位置处的列表元素,条件是知道其索引;
(4)方法pop()可删除列表末尾的元素,并让你能够接着使用它;
(5)如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop();
(6)如果你只知道要删除的元素的值,可使用方法remove();
(7)Python方法sort()让你能够较为轻松地对列表进行排序;方法sort()永久性地修改了列表元素的排列顺序;还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参reverse=True;
(8)要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted();
(9)要反转列表元素的排列顺序,可使用方法reverse();方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可;
(10)使用函数len()可快速获悉列表的长度;
2.操作列表
2.1遍历整个列表
使用Python中的for循环,示例如下:
#for循环
for fruit in fruits:
print(fruit)
使用for循环处理数据是一种对数据集执行整体操作的不错的方式。
2.2创建数值列表
2.2.1使用函数range()
Python函数range()让你能够轻松地生成一系列的数字。
#range用法
for value in range(0,5):
print(value)
2.2.2使用range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表。使用函数range()几乎能够创建任何需要的数字集。
numbers = list(range(1,6))
print(numbers)
#打印1~10内的偶数
for v in range(0,11,2):
print(v)
#1.将前10个整数的平方加入到一个列表中
sqs=[]
for value in range(1,11):
sq=value ** 2
sqs.append(sq)
print(sqs)
#2.将前10个整数的平方加入到一个列表中
sqs=[]
for value in range(1,11):
sqs.append(value ** 2)
print(sqs)
2.2.3对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值、
最小值和总和:
#轻松地找出数字列表的最大值、最小值和总和
ss=[1,233,23,44,33,566,88]
print(min(ss))
print(max(ss))
print(sum(ss))
2.2.4列表解析
#使用列表解析创建你在前面看到的平方数列表
squres =[squ ** 2 for squ in range(1,11)]
print(squres)
2.2.5切片
可以处理列表的部分元素——Python称之为切片。
#处理列表的部分元素——Python称之为切片
test=['daaa','qwww','adasd','ffff','bcvc']
print(test[0:3])
print(test[1:4])
print(test[0:])
print(test[:2])
print(test[-3:])
#遍历切片
students=['lili','xiaoxiao','hua','ju','lian']
print('前三名是:')
for student in students[:3]:
print(student)
2.2.6复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
#复制列表
my_foods=['rice','pizza','apple','bananase']
friend_foods=my_foods[:]
print('我喜欢的食物:')
print(my_foods)
print('朋友喜欢的食物:')
print(friend_foods)
my_foods.append('orange')
friend_foods.append('xiangjiao')
print('我喜欢的食物:')
print(my_foods)
print('朋友喜欢的食物:')
print(friend_foods)
2.2.7元组
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来
访问其元素,就像访问列表元素一样。
Python指出不能给元组的元素赋值。
#定义元组 元组不能修改
data=(140,120)
print(data[0])
print(data[1])
#遍历元组中的所有值
ddd=(200,120)
for a in ddd:
print(a)
#修改元组变量
ddd=(500,600)
for b in ddd:
print(b)
相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都
不变,可使用元组。
六、if语句
1.条件测试
#if的用法 判断是否相等
cars=['bubu','das','ww','jh']
for car in cars:
if car=='ww':
print(car.upper())
else:
print(car.title())
#判断
aa='apple'
if aa=='apple':
print('apples')
aa='Apple'
if aa.lower()=='apple':
print('True')
#检查是否不相等
bb='ban'
if bb!='asd':
print('不相等')
#检查是否包含在列表中
aa=['aaa','bbb','ccc']
print('aaa' in aa)
print('asd' in aa)
2.简单的if 语句
# #简单的if语句
age=18
if age>17:
print("How old are you?")
3.if-else 语句
#if-else语句
age=12
if age>17:
print("How old are you?")
else:
print('I are '+str(age) +'岁')
4.if-elif-else 结构
age=12
if age<4:
print("票价为0")
elif age<18:
print('票价为5')
else:
print('票价为10')
#简化代码
age=12
if age<4:
price=0
elif age<18:
price=5
else:
price=10
print('票价为'+str(price))
5.使用多个elif 代码块
age=50
if age<4:
price=0
elif age<18:
price=5
elif age<65:
price=10
else:
price=10
print('票价为'+str(price))
6.测试多个条件
equested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings:
print("Adding mushrooms.")
if 'pepperoni' in requested_toppings:
print("Adding pepperoni.")
if 'extra cheese' in requested_toppings:
print("Adding extra cheese.")
print("\nFinished making your pizza!")
总结:总之,如果你只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就
使用一系列独立的if语句。
七、使用if 语句处理列表
检查特殊元素
打印列表中的所有信息,示例如下:
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")
打印所有,判断其中没有的条件情况,示例如下:
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
if requested_topping == 'green peppers':
print("Sorry, we are out of green peppers right now.")
else:
print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")
2.确定列表不是空的
到目前为止,对于处理的每个列表都做了一个简单的假设,即假设它们都至少包含一个元素。
我们马上就要让用户来提供存储在列表中的信息,因此不能再假设循环运行时列表不是空的。有
鉴于此,在运行for循环前确定列表是否为空很重要。
判断列表是否为空。
requested_toppings = []
if requested_toppings:
for requested_topping in requested_toppings:
print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
3.使用多个列表
#使用多个列表
fruit1=['aplle','bbb','ccc','orange']
fruit2=['aplle','cds','orange']
for fruit in fruit1:
if fruit in fruit2:
print('水果店有'+fruit+'水果')
else:
print('水果店没有'+fruit+'水果')
八、字典
在Python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之
相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对
象用作字典中的值。
在Python中,字典用放在花括号{}中的一系列键—值对表示,如前面的示例所示:
alien_0 = {'color': 'green', 'points': 5}
使用字典
1.1访问字典中的值
#访问字典
alla={'age':'25','sex':'男'}
print(alla['age'])
print(alla['sex'])
运行结果:25 男
1.2添加键—值对
字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用
方括号括起的键和相关联的值。
alla={'age':25,'sex':'男'}
#添加键—值对
alla['项目']='大屏'
alla['薪资']=2000
print(alla)
运行结果:{'age': 25, 'sex': '男', '项目': '大屏', '薪资': 2000}
1.3创建一个空字典
使用字典来存储用户提供的数据或在编写能自动生成大量键—值对的代码时,通常都需要先
定义一个空字典。
foods={}
1.4修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。
#修改字典中的值
alla={'age':25,'sex':'男'}
alla['age']=30
print(alla)
运行结果:{'age': 30, 'sex': '男'}
1.5删除字典中的键值对
对于字典中不再需要的信息,可使用del语句将相应的键—值对彻底删除。使用del语句时,
必须指定字典名和要删除的键。
#删除字典中的键值对
alla={'age':25,'sex':'男'}
print(alla)
del alla['age']
print(alla)
注意:删除的键—值对永远消失了。
1.6遍历字典
1.6.1用一个for循环来遍历字典
#遍历字典
alla={'爱好':'唱歌','sex':'男','姓名':'丽丽'}
for key,value in alla.items():
print(key +':'+value)
注意:即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存
储顺序,而只跟踪键和值之间的关联关系。
即便字典存储的是上千乃至上百万人的调查结果,这种循环也管用。
1.6.2遍历字典中的所有键
在不需要使用字典中的值时,方法keys()很有用。
alla={'爱好':'唱歌','sex':'男','姓名':'丽丽'}
for name in alla.keys():
print(name.title())
1.6.3遍历字典中的所有值
如果你感兴趣的主要是字典包含的值,可使用方法values(),它返回一个值列表,而不包含
任何键。
alla={'爱好':'唱歌','sex':'男','姓名':'丽丽'}
for name in alla.values():
print(name.title())
这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,
但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。
alla={'爱好':'唱歌','sex':'男','姓名':'男'}
for name in set(alla.values()):
print(name.title())
九、嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你
可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
1.字典列表
##在列表中存字典
# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range (0,30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)
for alien in aliens[0:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
if alien['color'] == 'yellow':
alien['color'] = 'red'
alien['speed'] = 'fast'
alien['points'] = 15
# 显示前五个外星人
for alien in aliens[0:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))
运行结果:
经常需要在列表中包含大量的字典,而其中每个字典都包含特定对象的众多信息。例如,你可能需要为网站的每个用户创建一个字典,并将这些字典存储在一个名为users的列表中。在这个列表中,所有字典的结构都相同,因此你可以遍历这个列表,并以相同的方式处理其中的每个字典。
2.在字典中存储列表
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
#在字典中存储列表
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print("\n" + name.title() + "'s favorite languages are:")
for language in languages:
print("\t" + language.title())
运行结果:
3.在字典中存储字典
#3.在字典中存储字典
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
},
}
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())
运行结果: