Python学习笔记——第二课堂
变量和数据类型
变量
- 仅限于字母、数字及下划线的组合。
- 名称可由字母或下划线开头。
- 不得以数字开头。
- 允许用下划线分隔单词。
- 不应选用 reserved keywords and built-in functions.
- 既简洁又富有意义.
- 特别提示:应避免使用小写L与大写O.
练习
简单消息:将一条消息储存到变量中,再将其打印出来
massage = "Hello Python"
print(massage)
python
Hello Python
多个简短的消息:每条消息依次赋值给一个变量并输出显示;接着更新该变量为新的消息内容并再次输出显示。
massage = "Hello"
print(massage)
massage = "World"
print(massage)
python
Hello
World
字符串
字符串是一种由多个字符组成的序列,在计算机科学中被广泛使用以表示可变的数据内容
修改字符串的大小写
name = "ada lovelace"
print(name.title())
python
合并字符串
Python通过加号运算符(+)来进行字符串的连接。该方法被称为字符串连接操作;通过将变量中的数据进行连接操作,则可以构建出完整的消息。
使用制表符或换行符来添加空白
在编程中, 空格泛指任何非打印字符类别中的典型代表, 具体来说涉及的是空格键按下的结果以及制表符和回车键的作用等. 建议你采用适当的方式安排输出内容的布局以提高可读性.
删除空白
Python具备识别字符串前后空格的能力。可以通过调用函数rstrip()来去除字符串的后端空格。
你可以去除以字符串开头的空白字符,并非仅仅局限于只去除一个方向上的空格。或者同时去除字符串两端的空白字符。例如,在不同情况下可分别采用lstrip() 和strip()的方法来实现这一目标。
练习
个性化信息:将用户的姓名赋值到一个变量中,并同时向该用户发送一条信息。发送的信息应当简洁明了,并且示例信息为'Hello Eric, would you like to learn some Python today?'。
name = "ada lovelace"
print("Hello " + name.title() + " , would you like to learn some Python today?")
python
Hello Ada Lovelace , would you like to learn some Python today?
设置变量存储人名,并分别以小写字母形式、全大写字母形式以及首字母大写的格式呈现人名
name = "ada lovelace"
print(name.upper())
print(name.lower())
print(name.title())
python
ADA LOVELACE
ada lovelace
Ada Lovelace
去除人名前后空白字符,并在其前后各带一些空白字符。确保在处理时使用换行符和制表符各至少一次。输出该名字以展示前后空格情况,并依次对名字应用lstrip、rstrip及strip函数以去除首尾空格,并显示处理后的结果。
name = " alsa \tLili Blue \n"
print(name)
print(name.lstrip())
print(name.rstrip())
print(name.strip())
python
alsa Lili Blue
alsa Lili Blue
alsa Lili Blue
alsa Lili Blue
数字
在Python中,可对整数执行加(+ )减(- )乘(* )除(/ )运算
Python通常将带有小数位的数字归类为浮点数值。许多编程语言采用了这一术语,并揭示了该特征:小数点可以在数字的不同位置上运行。
练习
最爱的颜色: 将你的最爱的颜色存储在一个变量中,并利用该变量生成一条信息告知你的最爱。最后输出这条信息。
num = 7
print("my best number is " + str(num))
python
my best number is 7
列表
集合由一系列按特定顺序排列的元素组成。你可以构建一个包含英文字母、数字0至9以及所有家庭成员名字的数据集合;同样可以将任何类型的数据加入到这个数据集合中。其中各元素之间并无固定关联关系。为这样的数据集合命名(如letters、digits或names)是一个合理且实用的做法。
在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。
修改列表元素
更改列表中的规则如同访问时使用的规则相仿。若需更改列表中的某个元素,请先确定其名称,并找出该元素的位置索引;然后设置新的值即可。
在列表中添加元素
当向一个列表中进行操作并试图插入新元素时,默认情况下该元素会被放置在其后的位置上。
函数append()让灵活地生成列表变得轻而易举;初始化一个空列表后, 你只需调用函数append()依次追加所需元素。
该方法允许在列表的任意位置插入新元素。为了实现这一功能,请确保明确指定插入的位置索引以及要插入的具体内容。
在列表中删除元素
当知道要删除的元素在列表中的具体位置时,允许使用del语句进行操作.通过del操作可以删除列表中的任意元素,但需明确其索引位置.
该功能允许删除表中最后一个项,并从而使你随后继续使用它。术语 pop(即 弹出)源自这样一个比喻:将表中的最后一个项取出等同于从栈中取出顶端项。
具体来说,在Python中你可以通过调用list.pop(index)来移除列表中的任意一个元素。
当你不知道列表中元素的具体位置时,在尝试从列表中删除该元素时可能会遇到问题。如果已知需要删除的元素值,则可以通过调用remove()方法来实现删除操作。
练习
将一些朋友的姓名存储到一个名为names的列表中,并遍历该列表以输出每位朋友的具体姓名
names = ['bababab', 'lili', 'oppop', 'whilesh', 'hahaha']
for item in names:
print(item)
python
bababab
lili
oppop
whilesh
hahaha
问候:请继续使用练习3-1中的列表,并不再输出每个朋友的姓名。每个消息都将包含相同的问候,并标注相应的友名。
names = ['bababab', 'lili', 'opop', 'jkjk']
for item in names:
print(item + " , How are you?")
python
bababab , How are you?
lili , How are you?
opop , How are you?
jkjk , How are you?
考虑一下你偏爱的出行通勤方式吧!比如骑摩托车或者开私家车吧?然后创建一个包含多种不同出行通勤方式的具体列表吧!基于此列表生成一系列与这些不同出行通勤方式相关的声明吧!比如“I would like to acquire a Honda motorcycle.”
vehicles = ["bike", "car", "motorcycle", "bus", "on foot"]
for item in vehicles:
print("I would like to go to school by " + item )
python
I would like to go to school by bike
I would like to go to school by car
I would like to go to school by motorcycle
I would like to go to school by bus
I would like to go to school by on foot
Guest List: 如果你能够邀请任何人共进晚餐(不论是 contemporary 还是 past figures),你将邀请哪些人?请创建一个包含至少三个人物的列表;然后,请通过这个列表发送出邀请函。
people = ["mom", "teacher", "frind", "lili", "zip", "mmoy"]
for item in people:
print(item + " , Would you like to take dinna with me?")
python
mom , Would you like to take dinna with me?
teacher , Would you like to take dinna with me?
frind , Would you like to take dinna with me?
lili , Would you like to take dinna with me?
zip , Would you like to take dinna with me?
mmoy , Would you like to take dinna with me?
因某位嘉宾因故无法出席,请额外邀请一位嘉宾来修改嘉宾名单。
基于你完成练习3-4时编写的程序,在最后添加一条print语句来告知哪位嘉宾无法参加。
更新嘉宾名单内容,在无法参加者的姓名处填写新邀请者的姓名。
重新输出所有消息,并向每一位在名单中的嘉宾发送邀请。
people = ["mom", "teacher", "frind", "lili", "zip", "mmoy"]
for item in people:
print(item + " , Would you like to take dinna with me?")
print("lili could not take dinna with me")
people.remove("lili")
people.append("lucy")
for item in people:
print(item + " , Would you like to take dinna with me?")
python
mom , Would you like to take dinna with me?
teacher , Would you like to take dinna with me?
frind , Would you like to take dinna with me?
lili , Would you like to take dinna with me?
zip , Would you like to take dinna with me?
mmoy , Would you like to take dinna with me?
lili could not take dinna with me
mom , Would you like to take dinna with me?
teacher , Would you like to take dinna with me?
frind , Would you like to take dinna with me?
zip , Would you like to take dinna with me?
mmoy , Would you like to take dinna with me?
lucy , Would you like to take dinna with me?

增补人员:您刚刚发现了能够容纳更多人的餐桌,请问您还希望再邀请哪几位贵宾共进晚餐?
people = ["lili", "popo", "wow", "gree", "moon", "ana"]
print("We have a big table!")
people.insert(0, "lucy")
people.append("xixi")
for item in people:
print(item + " , Would you like to take dinna with me?")
python
We have a big table!
lucy , Would you like to take dinna with me?
lili , Would you like to take dinna with me?
popo , Would you like to take dinna with me?
wow , Would you like to take dinna with me?
gree , Would you like to take dinna with me?
moon , Would you like to take dinna with me?
ana , Would you like to take dinna with me?
xixi , Would you like to take dinna with me?
缩简列表:得知新添置的餐桌无法及时配送后, 只能邀请两人共度晚餐时光.
基于你在练习3-6中编写的程序, 向该程序末尾添加一行代码, 输出信息: 只能邀请这两人共进晚餐.
通过不断调用pop方法移除列表中的参与者, 直到列表仅剩下两名成员. 在此过程中, 每次移除一名成员后, 输出相关信息: 对这位被排除的友人表示遗憾.
对于剩下的那两名参与者中的每一位, 输出信息: 他仍然是受邀者之一.
最后, 使用del关键字删除最后两名参与者. 然后输出当前的状态信息: 列表已完全清空.
print("aoh,I can only invite two people")
people = ["lili", "poop", "greeen"]
people_non = people.pop()
print("sorry," + people_non + ", I could not take dinna with you")
for i in people:
print(i + " , You are still in list.")
del people[1]
del people[0]
print(people)
python
aoh,I can only invite two people
sorry,greeen, I could not take dinna with you
lili , You are still in list.
poop , You are still in list.
[]
使用sort()对列表进行永久性排序
该排序方法永久地调整了列表项的排序方式。那些按照字母次序组织的列表成员,在经过排序处理后就不再能够恢复其原有的排列状态。
你还可以按照逆字母顺序排列列表元素;通过将sort()方法中的参数设置为reverse=True即可实现这一目标。
使用sorted()对列表进行临时排序
若希望将列表元素按照特定顺序呈现而不改变其原始排列位置,则可以使用函数sorted()。该函数的作用是根据指定参数调整元素排列,并且不会打乱原有的位置。
确定列表的长度
使用函数len() 可快速获悉列表的长度。
倒着打印列表
要翻转列表元素的排列顺序,则需调用reverse()方法。请注意,并非通过将列表中的元素按字母反序重新排列来实现翻转;相反地,reverse()的作用仅仅是调整列表元素的位置。
练习
展望未来:想象几个你最想去的目的地并将其存储在一个名为destinations的列表中,并按照你所选择的方式进行排序以便后续访问无需重新排序
place = ["dalian", "datong", "beijin", "chengdu", "nanjin", "wulumuqi"]
print(place)
print(sorted(place))
print(place)
place.sort()
print(place)
place.sort(reverse=True)
print(place)
python
['dalian', 'datong', 'beijin', 'chengdu', 'nanjin', 'wulumuqi']
['beijin', 'chengdu', 'dalian', 'datong', 'nanjin', 'wulumuqi']
['dalian', 'datong', 'beijin', 'chengdu', 'nanjin', 'wulumuqi']
['beijin', 'chengdu', 'dalian', 'datong', 'nanjin', 'wulumuqi']
['wulumuqi', 'nanjin', 'datong', 'dalian', 'chengdu', 'beijin']
晚餐嘉宾 :在完成练习3-4至练习3-7期间编写的程序中的一项中调用len函数输出一条信息以计算并显示邀请的嘉宾人数。
people=["lili", "opop", "ghgh", "anna"]
print("I have invited "+ str(len(people)) + " people")
python
I have invited 4 people
使用range()创建数值列表
Python函数range() 让你能够轻松地生成一系列的数字。
使用一个for 循环打印数字1~20(含)
for num in range(1, 21):
print(num)
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

生成一个包含数字的列表,并使用min()和max()函数验证该列表的最小值是否为1以及最大值是否为1,000,000;随后对该列表执行求和操作,并评估在Python中累加一百万个元素所需的时间
nums = list(range(1, 1000001))
print(min(nums))
print(max(nums))
print(sum(nums))
python
1
1000000
500000500000
odd numbers can be generated by specifying the third argument in the range() function to create a list containing odd numbers from 1 to 20; subsequently, a for loop can be employed to print out these numbers.
nums = list(range(1, 21, 2))
for num in nums:
print(num)
python
1
3
5
7
9
11
13
15
17
19

找出所有能被三整除且在1到三十之间的数字;这些数值将包括从1至30之间所有能被三整除的数。通过使用循环结构遍历该列表并输出每一个元素。
nums = list(range(3, 31, 3))
for num in nums:
print(num)
python
3
6
9
12
15
18
21
24
27
30

立方:称为同一个数字的三次幂。例如,在Python编程语言中计算一个数的三次方通常使用运算符**来表示。请创建一个包含从1到10这十个整数各自求其三次幂所形成的列表,并利用列表推导式生成该列表
nums = [num**3 for num in range(1, 11)]
print(nums)
python
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
切片的使用
为了生成切片对象,请选择起始和结束索引以界定所需范围。如同range()函数,在遍历到你所指定了结束索引之前的元素时会停止运算。若想获取列表中的前三个元素,则需提供起始位置0至终止位置2
复制列表
如果需要复制列表,则可以通过创建包含整个列表的一个切片来实现。具体方法是通过使用切片操作符[:]来省略起始索引和终止索引([:])。这样一来,则会使得Python生成从第一个元素开始到最后一个元素结束的切片。
练习
切片:在本章编写的一个程序的基础上,在其末尾添加几行代码以完成以下任务。
输出提示信息"The first three items in the list are:", 并通过切片功能进一步输出列表的前三个元素。
输出提示信息"Three items from the middle of the list are:", 并利用切片功能显示中间位置的三个元素。
输出提示信息"The last three items in the list are:", 并借助切片功能展示列表最后面的部分内容。
list = ["lili", "coco", "song", "vivi", "fgfg", "emm"]
print("The first three items in list are: ")
print(list[:3])
print("Three items from the middle of the are: ")
print(list[1:4])
print("The last three items in the list are: ")
print(list[-3:])
python
The first three items in list are:
['lili', 'coco', 'song']
Three items from the middle of the are:
['coco', 'song', 'vivi']
The last three items in the list are:
['vivi', 'fgfg', 'emm']
在你的编程练习4-1中,请创建一个新的pizzas列表副本,并将其存储于变量friend_pizzas中。之后,请完成以下操作:向原有的pizzas列表添加一个新的条目;向friend_pizzas列表追加另一种类型的pizza。为了确认这两个pizzas列表确实存在差异,请输出提示信息:'My favorite pizzas are:';然后通过循环遍历第一个pizzas列表并输出每种pizza的名称;同样地,请输出提示信息:'My friend’s favorite pizzas are:';接着再次循环遍历friend_pizzas列表并显示其中的所有pizza类型。请确认新增的pizza正确地分配到了相应的类别里
friend_pizzas = ["apple", "food", "fish", "joke", "orange"]
my_pizzas = friend_pizzas[:]
friend_pizzas.append("beef")
print("My favorite pizzas are: ")
for food in my_pizzas:
print(food)
print("My friends favorite pizzas are;")
for food in friend_pizzas:
print(food)
python

My favorite pizzas are:
apple
food
fish
joke
orange
My friends favorite pizzas are;
apple
food
fish
joke
orange
beef

元组
对于程序运行期间可能出现变化的数据集合来说,列表是一个特别适合的选择。由于其可修改性特点,在处理网站用户的动态列表以及游戏中的角色数据时显得尤为重要。
但是,在某些情况下你可能需要创建一组无法更改的对象(objects),这时候元组就可以派上用场)。Python会将无法被修改的数据类型称为immutable(不可变),而无法被修改的具体数据结构则被称为tuple(元组)。
定义元组
在外观上类似于列表,在定义时我们通过圆括号而非方括号进行标识。一旦定义了元组,则可以通过索引来访问其中的各个元素,并且类似于访问列表中的元素的方式。
练习
自助餐上有一家自助餐馆,它仅提供五种基础食物.请列举出这五种简单食物,并将它们存储在一个元组中.
编写代码以遍历并输出该餐馆提供的所有五种食品.
尝试更改其中一个元素,验证Python不允许这种操作.
餐馆更新了菜单,更换了其中两种提供的食物.请完成以下任务:重新定义一个新的元组来表示更新后的菜品组合;并依次输出这些菜品.
menu = ("pizza", "fish", "ice-cream", "hamburger", "apple")
# menu[0] = orange
menu = ("pizza", "fish", "ice-cream", "beef", "corn")
print("I have changed the menu")
for food in menu:
print(food)
python
I have changed the menu
pizza
fish
ice-cream
beef
corn
if 语句
每条if语句的核心都是一个值为True或False的表达式;这种表达式称为条件判断。
Python取决于条件测试的结果是否为True或False来控制执行if语句中的代码。当条件测试的结果是True时,Python会执行紧跟在if语句后面的指令;否则会跳过这些指令
if-elif-else结构
通常需要核查超过两个的情况。为此,在Python中可以利用其提供的if-elif-else结构来实现这一功能。该结构确保只会运行其中一个代码块,并依次评估每个条件判断;当找到满足的条件判断时,则会立即执行其后续的语句,并跳过其他后续代码。
使用多个elif代码块
忽略else代码块
Python不需要if-elif结构后面必须有else代码块。有时会使用else代码块很有用;另一种情况则是使用一条单独的elif语句来处理特定的情形更为清晰。
else是一条涵盖各种情况的语句,在任何不满足if或elif中的条件测试时都会执行其中的指令段落内容可能会导致输入数据出现潜在的安全漏洞因此建议如果明确知道需要测试的具体条件则应当考虑采用一个elif语句来替代否则这一结构可能会引发不必要的安全风险通过这种方式你可以确保只有在相应条件下程序才会执行从而避免潜在风险的发生
练习
设置一组条件测试;对于每个测试及其预期结果与实际观察到的结果进行记录。
深入分析这些结果,直至弄清楚它们为何返回True或False。
设计至少10个测试,并确保其中包含5个返回True和5个返回False的案例。
car = "subaru"
print("Is car == 'subaru'? I predict True.")
print(car == 'subaru')
print("\nIs car == 'audi'? I predict False.")
print(car == 'audi')
python
Is car == 'subaru'? I predict True.
True
Is car == 'audi'? I predict False.
False
当在游戏中刚射杀了一个外星人时,请设置一个名为alien_color 的变量,并将其赋值为'green' 、'yellow' 或者'red' 。编写这条if语句来判断外星人的颜色;如果为绿色,则输出一条消息告知玩家获得了5分。编写两个版本的程序:一个是测试通过版,在测试通过时会输出消息;另一个是未通过版,在测试未通过时不输出。
alien_color = "green"
if alien_color == "green":
print("You have 5 poins")
python
You have 5 poins
alien_color = "red"
if alien_color =="green":
print("You have 5 poins")
python
按照练习5-3的方式设定外星人的颜色,并构建相应的if-else逻辑结构。当外星人的颜色是绿色时,则会输出一条信息表明玩家击杀了该特定类型的外星人并获得了5个点数奖励。否则的情况则会显示另一条信息说明玩家获得了10个点数奖励。开发两个程序版本:其中一个版本将执行if代码块而忽略else部分;另一个则相反。
alien_color = "green"
if alien_color == "green":
print("You have killed the alien_color,attained 5 points ")
else:
print("You attain 10 points ")
python
You have killed the alien_color,attained 5 points
alien_color = "red"
if alien_color == "green":
print("abaaba")
else:
print("You attain 10 points ")
python
You attain 10 points
将练习5-4中的逻辑结构从if-else 更改为if-elif-else。
当外星人的颜色为绿色时, 输出一条信息, 表示玩家获得了5个点。
当外星人的颜色为黄色时, 输出一条信息, 表示玩家获得了10个点。
当外星人的颜色为红色时, 输出一条信息, 表示玩家获得了15个点。
编写三个版本程序: 第一个版本在外星人为绿色时运行第一个版本程序; 第二个版本在外星人为黄色时运行第二个版本程序; 第三个版本在外星人为红色时运行第三个版本程序.
if alien_color == "green":
print("You have attained 5 points")
elif alien_color == "yellow":
print("You have attained 10 points")
elif alien_color == "red":
print("You have attained 15 points")
python
使用if语句处理列表(确定列表不是空的)
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?")
python
练习
以特殊方式跟管理员打招呼:首先生成一个包含至少五个用户名的列表,并确保其中一个用户名为’admin’ 。编写代码时,在每位用户登录后都会发送一条问候信息。然后遍历该列表中的每个用户名,并向每位用户发送问候信息。接着检查当前用户名是否为’admin’ ,如果是,则发送一条特殊问候;否则发送普通问候信息。
users = ["admin", "admax", "ada", "aba", "bbc", "mmm"]
for user in users:
if user == "admin":
print("Hello admin, would you like to see a atatus report?")
else:
print("hello, " + user + "thank you for logging in again")
python
Hello admin, would you like to see a atatus report?
hello, admaxthank you for logging in again
hello, adathank you for logging in again
hello, abathank you for logging in again
hello, bbcthank you for logging in again
hello, mmmthank you for logging in again
处理无用户情况:在为完成练习5至8编写的程序中加入一条if语句来验证用户名列表是否为空。
如果验证结果为空,则输出提示信息'我们需要找到一些用户!'。
清空用户名列表,并以确保输出正确的提示信息。
users = []
if users:
for user in users:
if user == "admin":
print("Hello admin, would you like to see a atatus report?")
else:
print("hello, " + user + "thank you for logging in again")
else:
print("We need to find some users!")
python

We need to find some users!
字典
在Python中 Python中的字典是 一系列键-值对 。每个键 都关联着一个值 你可以通过该键访问其对应的值
与键相关联的值可包含数字、字符串或列表等类型。值得注意的是,在Python中任何对象都可以作为字典中的键值对的一部分。
在Python中,字典用放在花括号{} 中的一系列键—值对表示
对应关系中包含两个相关的值:键与值之间以冒号分隔。当指定一个键时 Python 会返回与其相关的那个特定的值-键对列表中的相应项
添加键–值对
字典作为一种能够灵活调整其内容的数据结构,在实际使用中具有很高的灵活性特点。为了实现往其中加入键—值对的功能,在编程语言中通常会按照以下步骤操作:首先指定一个变量名称作为字典名;然后使用方括号将需要加入的关键码包裹起来;最后将关键码与其对应的值配对存入字典中
修改字典中的值
在Python中对字典进行数值修改时,可以通过以下步骤进行:首先指定其名称;接着在方括号内确定键的位置;最后指定对应的更新数值.
删除键–值对
当遇到不再需要的信息时,可以通过del操作将对应的键—值对从字典中彻底移除。在执行del操作时,请确保明确指定字典名称以及需被移除的具体键。
练习
为了便于管理一位熟悉的朋友的信息,请使用一个字典来保存其详细资料。这个数据结构应包含字段first_name、last_name、age以及city。该程序将实现对这些数据的输出。
man = {'first_name':'Green', 'last_name':'lili', 'age':18, 'city':'chongqing'}
print(man['first_name'])
print(man['last_name'])
print(man['age'])
print(man['city'])
python
Green
lili
18
chongqing
词汇表 :Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n )插入一个空行,然后在下一行以缩进的方式打印词汇的含义
langevage = {"python":"len", "java":"str", "C":"printf", "go":"for"}
print("python : " + langevage["python"])
print("java: " + langevage["java"])
print("C: " + langevage["C"])
print("go: " + langevage["go"])
python
python : len
java: str
C: printf
go: for
遍历字典中所有的键或值
当无需访问字典中的值时,则方法keys()非常有用。具体来说,则该方法将生成一个列表,并包含有字典中全部的键
如果你关注的是字典中的具体值内容,请使用字典的values()方法来获取所有元素的副本。该方法将提供所有元素的副本,并不会涉及任何键信息。
为了去除重复项而无需考虑其多次出现的情况,我们可以采用集合(Set)。然而,在这种情况下,与列表不同的是每个元素都是唯一的。
在字典中储存列表
在字典中储存字典
练习
词汇表2 :因为掌握了如何遍历字典的知识,请 you to organize the code you wrote for Exercise 6-3. 将其转换为一个使用字典键值对进行操作的循环结构。确定该循环正确无误后,在词汇表中添加术语。下一次运行该程序时,这些新术语及其含义将自动包含在输出中。
langevage = {"python":"len", "java":"str", "C":"printf", "go":"for"}
langevage.update({"temo":"help"})
for key, value in langevage.items():
print(key)
print(value)
python
python
len
java
str
C
printf
go
for
temo
help

用户输入与while循环
函数input()的工作原理
函数input() 使得程序暂时停止,并等待接收用户输入的一段文本。在接收用户输入之后,Python会将这些信息存储于一个变量中以便后续操作。
函数input()支持处理一个参数:该函数的设计目标是为用户提供清晰的操作指导,并附有必要的指导信息。
练习
汽车租赁:开发一个程序向用户查询所需车型,并输出一条提示信息。例如,请您提供您需要的车辆型号吗?
python
使用标志
在多个条件均需满足以持续运行的程序中, 可以定义一个变量来判断整个程序是否处于活动状态. 这个变量如同交通信号灯般地指示着程序的状态. 可以让它在当前值为真时保持运行, 并且一旦有任何事件导致其值变为假, 就会立即停止执行. 这样一来, 在while循环体里就只需检查该变量当前是否为真即可, 并且将所有这些测试(即那些会导致该变量设为假的行为)放置到其他位置上, 进而使代码更加简洁明了.
使用break退出循环
在任何Python循环中都可使用break 语句。
在循环中使用continue
必须返回至循环的起始位置,并依据条件测试的结果来判断是否继续执行循环。可以用continue语句实现。
删除包含特定值的所有列表元素
我们调用remove()函数来去除指定的元素;这是因为要删除的元素在整个列表中是唯一的。
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
python
['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['dog', 'dog', 'goldfish', 'rabbit']
使用用户输入来填充字典
函数
通过关键字def向Python解释如何创建和执行一个新的功能流程。这也是编程中常见的做法,在这个过程中,在最后阶段完成的标记是冒号。
实参和形参
参数即为调用函数时传递给该函数的信息。
在调用函数的过程中,在括号中放置所需信息。
位置实参
在调用函数的过程中,在将函数调用中的每个实际参数与函数定义中的形式参数进行绑定时(为了实现这一目标),Python会按照实际参数的顺序进行绑定。这种方式通常被称作'位置参数绑定'
关键字实参
通过在实参中实现了名称与值之间的对应关系…从而避免了混淆
返回值
并不是总能立即显示输出结果,并且它能够接收并处理一些数据信息,并最终提供一个或多个结果
在函数中修改列表
当一个列表被传递给某个函数时,在该函数内部对该列表进行操作也是可行的。一旦在该函数中对该列表进行任何修改,则这种改变是不可逆的。这也让你能够在处理大量数据时更加高效。
将函数存储在模块中
将函数存储于命名为模块的独立文件中,并将其导入到主程序中。import语句允许当前的程序文件调用模块中的代码。
导入整个模块
为了使函数具有可导入性, 必须先建立一个命名为模块.py的文件
导入特定的函数
from module_name import function_name
from module_name import function_0, function_1, function_2
python
使用as给函数指定别名
import module_name as mn
python
导入模块中的所有函数
使用星号(* )运算符可让Python导入模块中的所有函数
类
定义类
使用关键字 class 定义类,类名通常采用首字母大写的命名规范。
class MyClass:
# 类的属性和方法定义
python
实例化对象
通过类创建对象的过程称为实例化。
obj = MyClass() # 创建 MyClass 类的一个对象
python
类的属性
类的属性是对象的数据或状态,可以通过对象的实例访问。
obj.attribute = value
python
构造函数 init
init 是一个特殊的方法,用于初始化对象的属性。
class MyClass:
def __init__(self, attribute):
self.attribute = attribute
python
类的方法
类的方法是与类相关联的函数,可以操作对象的属性。
class MyClass:
def my_method(self):
# 方法实现
python
继承
基于继承机制可以生成一个新的子类,在这种情况下子类将继承基类的所有属性与方法并可重新定义或增强基类的功能
class ChildClass(ParentClass):
# 子类的属性和方法定义
python
多态
多态指的是不同类的对象可以使用相同的方法名
类的特殊方法: 在Python编程语言中存在一些特殊的成员函数(special methods),它们都以两个下划线符号(double underscores)开头和结尾(例如:init、_str_和_repr_等)。这些特殊的成员函数被设计用于执行特定的任务(tasks),例如对象初始化(object initialization)、字符串表示(string representation)等操作。
类属性与方法访问权限: 可采用访问控制标记(如public、protected、private)来实现对类属性与方法的访问权限管理。然而,在Python中,并未提供明确的关键字或符号直接定义这些权限;通常情况下,则是通过命名约定的方式来完成相应的管理操作。
类的封装技术、继承机制以及多态性是面向对象编程三大核心特性的具体体现,在实际编程中能够有效地提高代码的可维护性和复用性。
文件
读取整个文件
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
python
该函数open() 生成一个表示文件的对象;在此情境下打开名为pi_digits.txt的文件时会生成一个对应于该文件的对象;Python程序会将这个对象存储在后续操作中使用的变量里。
当不再需要访问文件时将其关闭。你只需要打开文件并在必要时使用它而无需担心Python会自行妥善关闭之。
为了让Python执行不在当前目录下的文件,并且指定完整的路径信息 ,它会引导Python在系统指定的位置查找这些文件。
逐行读取
要以每次一行的方式检查文件,可对文件对象使用for 循环
创建一个包含文件隔行内容的列表
使用关键字with时,在open()函数返回文件对象仅限于with语句所定义的代码块范围内有效使用;如果希望在with代码块外也能获取文件内容,则应在with语句执行过程中将文件各行依次存入一个列表中,并可在with语句结束后通过该列表进行文件内容的获取与操作
方法readlines() 从文件中读取每一行,并将其存储在一个列表中;
使用文件的内容
当处理文本文件时,在Python中所有文本都会被解析为字符串格式。如果所获取的数据是数字形式但需将其作为数值运算处理,则必须调用int()函数将其转换为整型数据或float()函数将其转换为浮点型数据以满足计算需求
写入文件
在向文件中添加内容时,在打开一个文件进行读写操作时必须指定一个额外参数,并且必须明确指定目标文件路径。
在打开一个文件时,在Python中可以选择指定不同的访问权限来设置如何操作该文件。这些权限包括:
- 读取操作:使用'r'。
- 写入操作:使用'w'。
- 附加操作:使用'a'。
此外还有一种混合操作:使用'r+'允许同时进行读取和写入操作。
如果你没有提供访问权限参数,默认情况下Python会以只读的方式打开文件。
当你要将一个文件保存到磁盘时,并未预先确认其是否存在时,默认情况下函数open()将会为你创建一个新的空白文档;需要注意的是,在使用'w'模式打开并保存文件时必须谨慎操作:因为一旦指定路径对应的文档已存在系统会提前将其内容清除以便为你腾出空间完成保存操作
写入多行
函数write() 不会自动在输入文本末尾添加回车键,并且如果输入包含多个段落时,则必须明确放置回车键。
附加到文件
当你要向文档中添加内容而不希望覆盖现有内容时,请使用append-only模式打开该文档。当你以append-only模式打开该文档时,在返回前不会清空当前已有的内容;新增的内容将被添加到文字段落末尾处。若指定的路径不存在,则会创建一个新的空白文档。
