安装Python教程:https://blog.csdn.net/pdcfighting/article/details/80297499
参考用书:Python 编程从入门到实践 【美】Eric Matthes 袁国忠 译
这篇blog 将基于 Python 3 详细讲解 Python 基础语法
全程手敲,有错难免,欢迎指出
起步
1.1.2 运行代码片段
Python自带了一个在终端窗口种运行的解释器,让你无需保存并运行整个程序就能尝试运行代码片段
>>> print("Hello Python interpreter!")
Hello Python interpreter!
1.1.3 Hello World程序
print("Hello World")
运行上述代码,你将看到
Hello World
2.2 变量
message = "Hello Python World!"
print(message)
运行这个程序,看看结果如何。你会发现与以前相同:
Hello Python World!
变量可以修改,例如对上面的程序片段进行修改
message = "Hello Python World!"
print(message)
message = "Hello Python Crash Course World!"
print(message)
现在如果运行这个程序,将看到两行输出:
Hello Python World!
Hello Python Crash Course World!
2.2.1变量名的使用
- 变量名只能包含字母、数字、下划线。变量名可以字母或下划线打头,但是不能用数字打头。例如,可以将变量名命名为message_1, 但是不能 1_message
- 变量名不能包含空格,例如greeting_message合法,greeting message非法
- 不要将Python 的关键字和函数名用作变量名
2.3 字符串
2.3.1使用方法修改字符串的大小写
对于字符串,可执行的最简单的操作之一就是修改其中的单词的大小写。提供一些字符串一些操作
string.title() 首字母大写
string.upper() 全都大写
string.lower() 全都小写
name.py
name = "Ada lovelace"
print(name.title())
print(name.upper())
print(name.lower())
保存这个name.py,再运行它。你将看到如下输出:
Ada Lovelace
ADA LOVELACE
ada lovelace
2.3.2合并字符串
很多情况下,都需要合并字符串。例如,你可能想将姓和名储存在不同的变量中,等到显示姓名的时候再将他们合并:
first_name = "ada"
last_name = "lovelace"
full_name = first_name + ' ' + last_name
print(full_name)
print("Hello," + full_name.title() + "!")
message = "Hello," + full_name.title() + "!"
print(message)
Python用 “+" 合并字符串 。在这个示例中,我们使用+来合并first_name和空格和last_name,以得到完整的姓名,其结果如下:
ada lovelace
Hello, Ada Lovelace!
Hello, Ada Lovelace!
2.3.3 使用制表符或换行符来添加空白
>>> print("\tPython")
Python
要在字符串中添加换行符,也以使用\n
>>> print("Languages:\nPython\nC\nJavaScript")
Languages:
Python
C
JavaScript
2.3.4 删除空白
在程序中,额外的空白可能令人迷惑。对于程序员来说,‘python '和’python'看起来差不多,但是程序不这么认为。空白很重要,因为你经常需要比较两个字符串是否相同。例如,一个重要的示例是,在用户登陆网站是检查其用户名。但是一些简单得多的情况下,额外的空白也可能令人迷惑。所幸在Python 中,删除用户输入的数据易如反掌。
Python 能够找出字符串开头和末尾多余的空白。确保字符串末尾没有空白,可使用方法rstrip()
>>> favorite_language = 'python '
>>>favorate_language
'python '
>>>favorate_language.rstrip()
'python'
>>>favorate_language
'python'
>>>favorate_language = favorate_language.rstrip()
>>>favorate_language.rstrip()
'python'
删除开头空格 用 .lstrip()
删除所有空格 用 .strip()
2.3.5使用字符串是避免语法错误
语法错误是一种时不时会遇到的问题。程序中包含非法的Python代码时,就会导致语法错误。例如,在用单引号括起的字符串中,如果包含撇号,就会导致错误。只是因为这会导致Python将第一个单引号和撇号之间的内容视为一个字符串,进而将余下的文本视为Python代码,从而引发错误。
apostrophe.py
message = "One of Python's strengths is its diverse community"
print(message)
撇号位于两个双引号之间,因此Python解释器能够正确地理解这个字符串:
One of Python's strengthd is its diverse community
若上述程序使用单引号将出现错误。
2.4 数字
不得不说Python相比C,C++等其他编程语言,数字时真的好用,不用考录数字大小和类型
>>> 2 + 3
5
>>>3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5
在终端对话中,Python直接返回运算结果。Python 使用两个乘号表示乘方运算:
>>> 3 ** 2
9
>>> 3 ** 3
27
>>> 10 ** 6
1000000
2.4.3浮点数
Python将带小数点的数字都称为浮点数。大多数编程语言都使用了这个术语,它指出了这样了一个事实:小数点可出现在数字的任何位置。这种编程语言都必须细心设计,以妥善地处理浮点数,确保不管小数点出现在什么位置,数字的行为都是正常的。
从很大程度上说,使用浮点数时都是无需考虑其行为。你只要输入要只用的数字,Python通常会按你期望的方式处理它们
>>> 0.1 + 0.1
0.2
>>> 0.2 + 0.2
0.4
>>> 2 * 0.1
0.2
>>> 2 * 0.2
0.4
但是需要注意的是,结果包含小数位位数可能是不确定的:
>>> 0.2 + 0.1
0.300000000000000004
>>> 3 * 0.1
0.300000000000000004
2.4.3使用函数str()避免类型错误
你经常需要在消息中使用变量的值。例如,假设你要祝人生日快乐,可能会编写类似于下面的代码:
Birthday.py
age = 23
message = "Happy" + age + "rd Birthday!"
print(message)
你可能会认为上面代码会打印一条简单的生日祝福语:Happy 23rd birthday!。但是如果你运行这些代码,将发现他们会引发错误!!!!那是因为Python不知道你23是整型还是字符,这是可以调用函数str(),它让非字符串值表示为字符串:
age = 23
message = "Happy" + str(age) + "rd Birthday!"
print(message)
这样,Python就知道你要将数字23转换为字符串,进而在生日祝福消息中显示字符2和3.经过上述处理后,将显示你期望的消息,而不会引发错误:
Happy 23rd Birthday!
2.5注释
随着程序越来越大,越来越复杂,就应该在其中添加说明,对你解决问题的方法进行大致的阐述。注释让你能够使用自然语言在程序中添加说明。
2.5.1 如何编写注释
在Python中,注释用井号(#)标识。井号后面的内容都会被Python 解释器忽略,如下所示
# 向大家问好
print ("Hello Python people!")
Python解释器将忽略第一行,只执行第二行。
Hello Python people!
2.6 Python 之禅
在开发项目期间,过于灵活性导致大型项目难以维护:要通过研究代码搞清楚当时解决复杂问题的人是怎么想的,既困难又麻烦,还会耗费大量时间。经验丰富的程序员倡导尽可能避繁就简。Python社区的理念都包含在Tim Peters撰写的"Python之禅”中,熟悉这些有关编写优秀代码的知道原则,只需要在解释器中执行命令 import this。这里不打算赘述整个“Python 之禅”,而只与大家分享其中的几条原则,让你明白如何它们对Python 对新手来说至关重要。
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
.列表简介
3.1 列表是什么
列表市一系列按特定顺序排列的元素组成。你可以创建半酣字母表中所有字母、数字0-9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系鉴于列表通常包含多个元素,给列表制定一个表示复数的名称(如letters、digits或names)是个不错的主意。
在Python中,中方括号([])来表示列表,并且逗号分隔其中的元素。下面是一个简单的列表示例,这个列表包含几种自行车:
bicycles.py
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
如果你让Python将列表打印出来,Python将打印列表的内容表示,包括方括号
['trek', 'cannondale', 'redline', 'specialized']
鉴于这不是你要让用户看见的,下面来学习如何访问列表元素。
3.1.1 访问列表元素
列表是有序集合,因此要访问列表得任何元素,只需要将该元素的位置或索引告诉Python就行了。要访问列表元素,可指出列表名称,再指出元素的索引,并将其放在方括号内。
例如,下面代码从bicycles中提取第一款自行车
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
当你请求Python只返回该元素时,Python会返回该元素而不带方括号和圆括号
trek
这正是你想要用户看到的情景。
你还可以运用第二章的处理字符串的方法处理列表元素,例如,你可以用title()使trek看起来更加整洁
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0].title())
几点注意:
1.列表引索是从0开始而不是1
2.对于访问列表的最后一个元素,Python提供了一种更加方便的方法,用引索-1,例如,bicycle[-1] 是specialized
3.1.3使用列表中的值
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = "My first bicycle was a " + bicycles[-1].title() + ".")
print(message)
我们使用bicycles[0]的值生成了一个句子,并将其存储在变量message中。输出是一个简单的句子,其中包含列表中的最后一款自行车:
My first bicycle was a Specialized.
3.2 修改、添加和删除元素
你创建的大多数列表将是动态的,这意味着列表创建后,将随着程序运行增删元素。例如,你创建一个游戏,要求玩家射杀从天而降的外星人:为此,可以将一些外星人存储在列表中,然后每当外星人被射杀时,都将从列表删除,而每次有新的外星人出现在屏幕上时,都将其添加到列表中。在整个游戏运行期间,外星人列表的长度将不断变化。
3.2.1 修改列表元素
修改列表元素的语法与访问元素的语法类似。要修改列表元素,可指定列表名和要修改元素的引索,再指定该元素的新值。
例如,假设有一个摩托车列表,其中的第一个元素位‘honda’,如何修改它的值呢
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
我们首先定义一个摩托车列表,其中的第一个元素位‘honda'.接下来,我们将第一个元素的值改为’ducati'。输出表明,第一个元素的值确实变了,但其他列表的元素没变
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
3.3.2在列表中添加元素
Python提供了多种在既有列表中添加新元素的方法。
1.在列表末尾添加元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(mototcycles)
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
方法append()让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append()语句添加元素。下面来创建一个空列表,再在其中添加元素’honda'、'yamaha'、'suzuki';
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
print(motorcycles)
最终的列表与前述的列表完全相同
['honda', 'yamaha', ;suzuki']
这存储方式非常常见,因为经常要等程序运行后,你才知道用户要在程序中存储哪些数据。为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供每个新值附加到列表中
2.在列表中插入元素
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)
在这个示例中,就是在索引为0的位置插入一个元素‘ducati’
['ducati', 'honda', 'yamaha', 'suzuki']
3.2.3 从列表中删除元素
你经常要从列表中删除一个或者多个元素。
1.用del语句删除元素
如果你知道元素在列表中的位置,可以使用del 语句删除元素。
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)
执行了上述语句后,列表中就只有两个元素['yamaha', 'suzuki']
2.使用方法pop()删除元素
3.弹出列表中任何位置的元素
4.根据值删除元素