第一章
PYTHON学习
1、安装PYTHON
2、启动PYTHON 终端会话。(简化文本编辑器的配置工作)
方法:win+R打开命令窗口—>输入cmd—>回车(enter)—>输入“python”—>回车(enter)
(或者:按住shift,右击桌面,选择“在此处打开命令窗口”—>输入“python”—>回车(enter))

嗯,证明好使了。
3、在终端对话中运行Python。
输入
print("Hello Python world!")
输出了
![]()
嗯,成功了。
(记住,要运行Python代码时,就打开命令窗口并启动Python终端会话)
关闭终端会话的方法:1、按ctrl+z,再按回车键
2、输入exit() 。

Geany 是一款简单的文本编辑器(功能:可以运行几乎所有的程序,而不用通过终端运行)
4、安装文本编辑器Geany。
先创建一个文件夹叫python_work。(我是在桌面创建的)
返回Geany,
选择菜单“文件”里的保存(将这个我们啥都没写的空文件保存到python_work中)
命名为hello_world.py(以.py结尾,Geany就知道这是一个python文件了,编辑器将使用python解释器来运行它)
5、配置Geany。
为啥要配置呢以及咋配置?
因为Geany不知道python路径。要设置python路径。在“生成”—>“设置生成命令”里。
在windows资源管理器(就是任务栏固定的“计算机文件”)中搜索“python”,找到C:\Users\china\AppData\Local\Microsoft\WindowsApps\python.exe,这就是python的存储位置。
然后,在“生成”—>“设置生成命令”里,设置python路径。
执行一下,成功了。打印出了“Hello Python world!”

第二章
变量:
message="Hello Python world!"
print(message)
而有趣的是,我打错了,打成了print("message"),结果不是Hello Python world!,而是message。

也就是说,只要print里加了" "," "里的内容就是print最后输出的内容。
接下来

程序可以随时修改变量的值,而Python会随时记录变量的最新值。
变量名只能包含字母,下划线,数字,而且只能以字母,下划线打头。例如,可命名为message_1,而不能命名为1_message。变量名不能包含空格,但可以使用下划线来分隔单词,例如,greeting_message。
编程要给变量设置合适的名称,变量名不能与关键字和内置函数重复。
要既简短又有描述性。比如name,student_name,name_length等。
python变量名尽量小写。
使用变量发生错误:
NameError(名称错误):或者是使用变量前忘记赋值了,或者是变量名拼写错误。
例如,

而如果这样的话,

上面的变量名和下面的变量名对应一致的话,那也可以运行成功。
Python官方文档
简单消息,文件命名为simple_message.py

多条简单消息,文件命名为simple_messages.py

字符串(用引号括起的都是字符串,引号可以是单引号,也可以是双引号,非常自由。)
例如,
"This is a string."
'This is also a string.'
或者,
“The language 'Python' is named after Monty Python, not the snake.”
'I told my friend, "Python is my favorite language!"'
"One of Python's strengths is its diverse and supportive community."
使用方法修改字符串的大小写

“方法”:Python可对数据执行的操作。“.”让Python对变量name执行方法title的操作。方法后面跟着的一对括号:因为方法有时需要额外的信息来完成工作。
title():以首字母大写的方式显示每个单词。(有时我们希望程序将Ada,ADA,ada视为同一个名字,并都显示为Ada,这时就可以用title()了)

方法upper()全部大写,lower()全部小写(在存储数据时可以用lower,用户提供的大小写可能不正确,我们用lower先将字符串都转换为小写,再存储它们。显示这些信息时再转换为合适的大小写方式)
合并(拼接)字符串
Python使用“+”合并字符串。
例如,想把姓和名存储到不同的变量里,等到要显示的时候把他们合二为一。
小提示:当你打英文时,而且这个英文在前面出现过,所以在你打一半时,系统在英文下面自动给出完整拼写时,按enter键就可以显示完整拼写了。F5是执行键。
first_name="ada"
last_name="lovelace"
full_name=first_name+" "+last_name
print(full_name)
本来是这个,我打错了。""中间应该有空格

对了。

使用制表符和换行符添加空白。

删除空白
方法:rstrip():剔除字符串里末尾多余的空白

就如图中所看到的,只能短暂的删除空白
所以,要永久的删除空白,就要先用方法把空白剔除后,再将结果存回原来的变量中。存完之后,值就是存到变量中的那个方法之后的值。
lstrip():剔除字符串开头多余的空白。
strip():剔除字符串两端的空白。
使用字符串时避免语法错误。(语法错误,SyntaxError很棘手)
P23页,动手试一试。
2-3 把用户的性姓名存在变量里,并向该用户发一条消息。如下图

我犯了一个错误:NameError,名称错误。在变量name里没有为Eric加引号。

这回对了。
2-4 调整名字的大小写
还记不记得小写,大写和首字母大写的方法了?
lower(),upper(),title()

特意没有把方法放进变量中,否则就是永久显示方法后的变量,没用,这道题只要输出大小写就行。
突然想到,为什么要把,比如,名字这样的,放进变量中,因为不是一输出名字就完事了,而是,后面还要用到这个名字。所以,把它当作变量存储起来,方便后面使用。
我又想到,各种方法,为什么有的放进变量里呢?有的却不用放呢?
比如,这段文字的好几行之前写过lower()这个方法,在存储用户的名字之前,因为用户填写的大小写不统一,程序员喜欢把它们都先用lower()函数改成小写的,统一了之后,显示这些信息时再转换成合适的大小写。
2-5 名言(考查引号的正确使用)

2-6

对了。
2-7 剔除人名中的空白

注释
python之禅

flat is better than nested.平坦的比嵌套的好。
美观的比丑陋的好。
explicit is better than implicit.明确的比模糊的好。
简单的比复杂的好。
complex is better than complicated.复杂的比复杂的难以理解的好。
sparse is better than dense.稀疏的比稠密的好。
readability counts.可读性很重要。
数字

乘方运算:**,乘法运算:*
浮点数
如下图,可以妥善的处理浮点数,但是包含的小数位数可能是不确定的。

使用函数str()避免类型错误。
想祝某人23岁生日快乐,可以直接打出来

或者,

也可以设置age变量,令age=23。
而此时,python不知道age是字符2和3还是数值23,所以,我们要evident的指出希望将这个整数用作字符串,所以调用函数str().

注释 “#”表示
注释不能直接用“#中文”模式来写,python可能不能接受文件里有中文,所以在文件开头要写
"#coding:utf-8"

P27页,动手试一试。
2-8

2-9

列表:列表由一系列按特定顺序排列的元素组成。
给列表指定一个表示复数的名称。例、letters,digits,names.
用方括号[]表示列表,用逗号分隔其中的元素。
下面是一个列表,包含几种自行车。

上面这种输出把方括号[],各种自行车类型都显示出来了,不是最终让客户所看到的输出
所以,下面来学习如何访问列表元素。print(bicycles[0])
因为列表是有序的,所以要访问的话,只需要访问该元素的位置或索引即可。

变量名+方法:bicycles[0].title()。
第一个列表元素,使用索引0,同理,索引=列表位置-1。

在不知道列表长度的情况下,python提供一种特殊语法,最后一个列表元素,索引指定为-1,倒数第二个,索引指定为-2,第三个,索引是-3,以此类推。
P33页 动手试一试
3-1 将列表中的名字打印出来,为了干净,整洁的输出,使用了方法title()

3-2 问候语

3-3 自己的列表

修改,添加和删除元素
创建的列表大多都是动态的,比如创建一个游戏,要求玩家射杀从天而降的外星人,那么就有本来在列表中的外星人因为被射杀后删除,又有新增的外星人。
要修改列表元素和指定列表元素相似。

在列表中添加元素
分为2种情况,在列表末尾添加元素,在列表中插入元素。
在列表末尾添加元素,用方法append(),这个方法不一样,前面我们说的title(),upper(),lower()等方法,都是变量名.方法,而这个append()却是变量名.append('要添加的元素')
英文中append是添加的意思。

将变量设为空列表,用变量名.append('.....') 往里面添加元素。

为控制用户,先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每个新值附加到列表里。
在列表中插入元素(变量.append('....'))
使用方法insert()在任何位置添加新元素。在insert()里,你需要指定新元素的索引和值。(这2样东西不能少)
如下图,将新元素放到第一个位置,而旧的第一个位置的元素以及后面的元素都向右移动。所以,新元素的索引被设置为0。

删除元素
1、del()语句(知道删除元素在列表中的位置时,你可以使用该语句)
(del 变量名[索引位置])

提示:使用del()语句删除元素后,你就无法再访问该元素了
2、pop()删除元素
pop“弹出”的意思
将元素从列表中删除,但是能接着使用它的值。比如将用户从活跃用户中删除,并将其加入到非活跃用户列表里。列表相当于一个栈,删除末尾的元素相当于弹出栈顶元素。
新的列表名popped_motorcycles=旧列表名.pop(),相当于新变量名popped_motorcycles里储存的是被弹出的栈顶元素。

如图所示,最后删除的是列表末尾的元素,也相当于弹出了栈顶元素。
上图中,一共有3次print输出,第一次是整个输出列表,第二次是输出栈顶元素被删除后的整个列表,第三次是输出新的列表,也就是被弹出的栈顶元素所在的列表。
***方法pop()是如何起作用的呢?
加入列表中的摩托车是按购买时间存储的,使用pop()打印一条信息,指出最后购买的是哪款摩托车。

如上图,是拿颜色举的例子。
实际上,可以用pop()删除列表中的任何位置的元素,新的列表名=旧列表名.pop(索引代表的数字)

根据值删除元素(不知道删除的位置,只知道删除的值时)
总结一下,从删除操作来说的话,知道删除索引后,可以使用del 列表名[索引],而方法pop()可以pop(索引值)。只有不知道索引值(即位置),只知道准备删除的值时,用下面介绍的方法。
原列表名.remove('要删除元素的值')

值得一提的是,remove()和pop()一样,删除的元素仍可以接着使用它的值。



值得一提的是,remove()只删除第一次指定的该值,即使删除的值在后面出现过多次,在第7章学习如何面对这种情况。

3.3组织列表
用sort()进行永久性排序 cars.sort()

这样就将汽车按字母顺序永久性排序了
那么,如何按字母顺序的相反顺序排序呢?向sort()方法传递参数 reverse=True,其中True的T是大写的。

使用sorted()进行临时排序 sorted(cars)
用特定顺序显示列表,但是不影响原始排列顺序。

用sorted方法,倒序显示列表呢? sorted(cars,reverse=True)

也就是说,用sort()是,cars.sort()和cars.sort(reverse=True),按字母顺序排列
而用sorted()是,sorted(cars)和sorted(cars,reverse=True),按字母顺序排列
总结一下,sort()是永久排序,sorted()是临时显示排序。
倒着打印列表(比如,汽车是按时间购买的,用相反的顺序排列其中的汽车)cars.reverse(),将cars按相反顺序排列,再次cars.reverse(),再次反转顺序,即此时cars的顺序和正常的cars的顺序一样了。
总结一下,将列表cars中的元素按首字母大小写的顺序排列,cars.sort()或者sorted(cars)
将列表cars中的元素按首字母大小写的顺序倒序排列,cars.sort(reverse=True)或者sorted(cars,reverse=True)
将列表cars中的元素顺序反转排列,cars.reverse(),再次反转顺序是,cars.reverse()

cars.reverse()永久的反转列表中的元素,但是可以随时恢复(对此的理解是,“永久”省的写完这一个指令就完事了,就print()一下就完事,“永久”后面也可以受该指令的影响),只需要对列表再次调用reverse即可

确定列表的长度 len(cars)

如下图所示,因为上一个程序已经删除完了列表第一个元素EXO,在没有添加新元素的情况下,第一个元素是BTS,所以这种连续删除的情况,要想删除BTS,不是pop(1),而应该是pop(0)

第四章 操作列表
4.1 遍历整个列表

#coding:utf-8
magicians=['alice','david','carolina']
for magician in magicians:
#for循环,别忘了冒号。从列表magicians中取出一个名字,并存储到变量magician中。然后进行for循环,列表中的所有名字都遍历,都存储在变量magician中。for循环,持续执行第3,4行代码
print(magician)#打印出来
代码中
for magician in magicians:
最后有 “:” 别忘了!!!!!
4.1.1 深入的研究循环
4.1.2 在for循环中执行更更多的操作

4.1.3 在for循环结束后执行一些操作

4.2 避免缩进错误
4.2.1 忘记缩进
IndentationError:expected an indented block
4.2.2 忘记缩进额外的代码行

print("\n")
magicians=['alice','david','carolina']
for magician in magicians:
print(magician)
print(magician.title()+",that was a great trick!\n")
print("I can't wait to see your next trick,"+magician.title()+".\n")
#因为magician的终值是carolina,而我们忘记了缩进这一行print,因此只有carolina收到了这行消息。
#也就是说因为忘记缩进,这行代码只执行了一次。
4.2.3 不必要的缩进
IndentationError:unexpected indent
4.2.4 循环后不必要的缩进
4.2.5 遗漏了冒号
p50页,动手试一试
错误示例

以上图中是一个错误示例。第三行中,pizza是一个列表,在print中列表只能单独输出,不能再和别的放在一起输出。
正确示例



4-1

4-2

4.3 创建数字列表
4.3.1 使用函数range()

使用range时,如果输出不符合预期,尝试将指定的值加1或减1。(实在弄不明白的时候)
4.3.2 使用range()创建数字列表
list(range(1,6)),这时候就是1~5的列表了

使用range()函数,可以指定步长


创建一个列表,包含前10个整数的平方

放大版:



4.3.3 对数字列表执行简单的统计计算
专门处理数字列表的python函数。min(列表),max(),sum().

4.3.4 列表解析
列表解析将for循环和创建新元素的代码合并成1行,并自动附加新元素。

题4-7

答案

整体答案

4.4 使用列表的一部分
4.4.1 切片
列表的部分元素叫做切片。
列表=[]
print(列表[索引1:索引2])
#列表[索引1:索引2]这就是切片



4.4.2 遍历切片

![]()
4.4.3 复制列表(用到切片)
复制列表的方法:同时省略起始索引和终止索引。friends_foods=my_foods[:](正确)
这就相当于什么呢,
相当于从列表my_foods中提取整个列表的完整切片,friends_foods相当于是my_foods列表的副本
错误方法:直接friend_foods=my_foods(错误)
P58页4-12


4.5 元组
列表是可修改的,适合存储可能变化的数据集。
不可变的列表叫做元组。元组用()来标识。定义元组后就可以用索引来访问其元素。
4.5.1 定义元组

4.5.2 遍历元组中的所有值
前面我们学了,可以用for循环遍历列表,遍历列表的切片。同时,也可以遍历整个元组。

4.5.3 修改元组变量
元组里的元素是不能修改的,但是有另一种方法,可以重新定义元组。(把新元组存储到变量中)
如果要存储一组值,在程序的整个生命周期内都不变,可以使用元组。
也就是说,不可以单独拎出元组中某个元素修改,而是要把这个元组都重新定义了。
4.6 设置代码格式
4.6.1 格式设置指南
4.6.2 缩进
缩进使用4个空格
4.6.3 行长
4.6.4 空行
4.6.5 其他格式设置指南
缩进代码块ctrl+I
撤销缩进的代码块ctrl+U
4.7 小结
第5章 if语句
5.1 一个简单示例
if语句后面要加冒号“:”

5.2 条件测试
检查是否相等

第一行是给car赋值,第二行是看car是否等于'bmw',如果是的话,就是True

不相等,就是False
python在检查是否相等时考虑大小写,也就是说,一样的字母,有大小写之分的话,python系统也认为是False

所以如果大小写无关紧要,只是想检查变量的值,可以统一将变量的值变为小写形式,再进行比较。

在网站上,用户提交新的用户名时,每当用户提交新的用户名时,就把它转换为小写,并与已有用户名的小写版本进行比较。如果已经有用户名'john'(不管大小写如何),则用户提交用名'John'时将遭到拒绝。 这样可以确保用户名是独一无二的。
5.2.3 检查是否不相等。
!= 不相等
5.2.4 比较数字

5.2.5 检查多个条件 and,or
使用and 检查多个条件
只要有一个条件没通过,就是False。

使用or检查多个条件
只要有一个条件满足,就能通过测试。

5.2.6 检查特定值是否包含在列表中
执行操作前先检查特定值是否包含在列表里了
使用关键字in

5.2.7 检验特定的值是否不包含在列表中
not in

5.2.8 布尔表达式
布尔表达式的结果是True 或False。
布尔值用于记录条件,如游戏是否在进行,用户是否可以编辑网站的特定内容。
game_active=True
can_edit=False
动手试一试
5-1 条件测试

5-2 更多的条件测试


5.3 if语句
5.3.1 简单的if语句
简单的if语句只有一个测试和一个操作:
if conditional_test:
do something

5.3.2 if-else语句

5.3.3 if-elif-else语句

让代码更简洁:如下图

5.3.4 使用多个elif 代码块

5.3.5 省略else代码块
像以上的代码,可以省略else实现。

5.3.6 测试多个条件
虽然if-elif-else功能很强大,但是如果测试多个条件,就只能用if。
示例:在披萨里加调料。假如顾客点了几个配料放在列表里。就要挨个用if 测试配料是否在列表顾客点的配料里,而不能用除if之外的elif或者else。if-elif-else是三选一,只要有一个满足条件了,后面的条件就不看了,这是他们的区别所在。所以要用if...in...
小总结:如果只想执行一个代码块(即,三选一),就使用if-elif-else。如果要运行多个代码块,就使用一系列独立的if语句


想要执行多个代码块:if-if-if
执行一个代码块:if-elif-elif 或者if-elif-else
P76页答案alien_color_5-3.py
5.4 使用if语句处理列表
5.4.1 检查特殊元素

5.4.2 确定列表不是空的
在使用列表提供的信息之前,先确定列表不是空的。
这就和前面的检查特殊元素不同了,不是直接执行for循环,而是用if 检查列表是否为空。



![]()
5.4.3 使用多个列表



status report 文献



![]()



结果




5.5 设置if语句的格式
比较运算符比如 <= , >= , == 等,在左右两边各添加一个空格,不影响代码的解读,只是阅读起来容易。
5.6 小结
第六章 字典
6.1 一个简单的字典

6.2 使用字典
字典是一系列键值对。
键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。
键:color ;值:green
键:points ;值:5
6.2.1 访问字典中的值

6.2.2 添加键-值对
字典是一种动态结构,可以随时添加键值对。
要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。
注意,键值对的排列数序和添加顺序不一样。不关心添加顺序,只关心键值关系。

6.2.3 先创建一个空字典
使用字典来存储用户提供的数据或在编写能自动生成大量键—值对的代码时,通常都需要先定义一个空字典。

![]()
6.2.4 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

对一个能够以不同速度移动的外星人的位置进行跟踪。为此,我们将存储该外星人的当前速度,并据此确定该外星人将向右移动多远:

6.2.5 删除键-值对

6.2.6 由类似对象组成的字典
在前面的示例中,一个字典里存储的是一个外星人的多种信息。而字典也可以存储众多示例中的同一种信息。

正如你看到的,我们将一个较大的字典放在了多行中。其中每个键都是一个被调查者的名字,而每个值都是被调查者喜欢的语言。确定需要使用多行来定义字典时,在输入左花括号后按回车键,再在下一行缩进四个空格,指定第一个键—值对,并在它后面加上一个逗号。此后你再次按回车键时,文本编辑器将自动缩进后续键—值对,且缩进量与第一个键—值对相同。 定义好字典后,在最后一个键—值对的下一行添加一个右花括号,并缩进四个空格,使其与字典中的键对齐。另外一种不错的做法是在最后一个键—值对后面也加上逗号,为以后在下一行添加键—值对做好准备。
给定被调查者的名字,可使用这个字典轻松地获悉他喜欢的语言:

![]()

6.3 遍历字典
有多种遍历字典的方式:可遍历字典的所有键—值对、键或值
6.3.1 遍历所有的键-值对
方法:items():返回一个键—值对列表



6.3.2 遍历字典中的所有键
方法keys():遍历所有的键
方法items():遍历所有的键—值对


#遍历所有的键-值对:for name,language in favorite_languages.items():
#遍历字典中所有的键,方法keys():for name in favorite_languages.keys():
下面来打印两条消息,指出两位朋友喜欢的语言。我们像前面一样遍历字典中的名字(即,键),但在名字为指定朋友(创建friends列表,在字典中找2个键放在列表里)的名字时,打印一条消息,指出其喜欢的语言


另一种方法,结果有一点不同

name:键
favorite_languages[name]:值

6.3.3 按顺序遍历字典中的所有键


6.3.4 遍历字典中的所有值


这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须是独一无二的


6.4 嵌套
6.4.1 字典列表(在列表中存储字典)



未完成待续
本文详细介绍了Python的安装过程,包括如何启动Python终端会话、配置文本编辑器Geany,以及如何处理Python路径。此外,还讨论了变量的概念、变量命名规则以及在终端中运行Python代码的基本操作。内容涵盖了从初学者角度理解Python编程的基础知识。
1988

被折叠的 条评论
为什么被折叠?



