文章目录
一、从计算机到Python1.计算机与程序思维
计算机最核心的三个部分为CPU、内存和硬盘,都在主板上面,除此之外,还包括键盘、鼠标等输入设备和屏幕等输出设备,如下:
CPU用于进行计算,硬盘用于存储数据和文件,内存(包括缓存)用于连接CPU和硬盘,作为两者的缓冲,可以加快读取和处理速率。
冯·诺依曼架构如下:
计算机通过输入逐行读取命令并执行,有输出则输出结果,程序是指定如何执行计算的一系列指令,可以说,程序就是写给计算机的菜谱。
y是x的平方根,当且仅当y*y=x很明显,思维是不完全一致的。 在人的语言中,很多语句存在歧义,计算机不一定能理解,因此需要专门的编程语言。
有一个典型的笑话:
老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”当晚,程序员老公手捧一个包子进了家门。。。老婆怒道:“你怎么就买了一个包子?!”老公答曰:“因为看到了卖西瓜的。”
这虽然是一个笑话,但是可以看出计算机语言需要精确的表达,如果存在歧义就可能会出现不一样的结果。
程序员在码代码时经常会思考两个问题: (1)It doesn’t work,…,why? (2)It works,…,why? 这也是程序员很正常的状态。
程序员发展道路可以如下:
- 学习基本语法
- 读别人的代码
- 修改别人的代码
- 开始写自己的小程序
- 参与开源项目
写程序应该遵循以下步骤:
- 问题表述 有什么,要实现什么。
- 设计计划 如何实现,需要什么。
- 编码与调试 编码与错误验证。
- 评价 评价是否合理。
- 改进(重构) 优化或重新编写。
编程语言的元素如下:
- 词汇 变量Variables和保留词汇Reserved words。 Python中的保留词汇包括FALSE、class、is、finally、return、None、if、for、lambda、continue、True、def、from、while、nonlocal、and、del、global、with、not、elif、yield、try、as、or、else、assert、import、pass、break、in、raise、except等。
- 句子结构
- 语法Syntax
- 语义Semantics
- 程序结构 为某个目的构造程序。
程序中的基本指令包括:
- input数据输入 从键盘、文件或其他设备获取数据。
- output输出 在屏幕上显示数据或将数据发送到文件或其他设备。
- math计算 执行基本的数学运算,如加法和乘法。
- conditional execution条件执行 检查某些情况并执行适当的代码。
- repetition重复 重复地做一些动作,通常有一些变化。
其中,后两者用于控制逻辑。
程序中常见的基本数据类型如下:
- Integers整型 -3、100等整数。
- Floats浮点型 lntegers 带小数点的数字,如3.14159,或某些指数,如1.0e8或10000.0。
- Booleans布尔型 其值为True或False。
- Strings字符串 文本字符序列。
2.Python的特点和应用
Python是一门计算机程序语言,可以理解为人对计算机的指令。
Python之所以这么火,与它的特点有关:
- 简洁美观
- 广泛的第三方库支持 很多人基于Python开发出现成的功能,别人可以直接使用,并且体系逐渐完善,使用起来越来越方便。
- 支持大多数现代云平台
- 最新机器学习框架
Python的典型应用包括数据分析、软件开发两大领域: Python中有很多库支持数据分析,包括numpy、pandas、scipy、matplotlib、networkx等; 支持软件开发的库包括Django、Flask和Pyramid等,包括Dropbox、Youtube、Instagram、豆瓣、知乎、魔兽世界等网站和应用都是完全或部分使用Python实现的。
虽然对于视频流、3D游戏等应用,Python还是存在一定的局限,但是它的确有着广泛的应用,所以在IT领域的各个子领域可以使用Python这同一门语言。 Python比较年轻,但是发展迅速,并且从2010年以后由于数据分析等应用得到了快速发展。 同时由于其开源免费,相比于SAS等其他语言,能够更容易被使用者接受,进一步扩大了其应用。
为什么会选择Python作为入门和开发语言:
- 易学
- 简单性与可读性
- 包支持
- 更快
3.工具选择和安装
Python存在Python2和Python3两个版本,现在Python2已经停止更新,Python3已逐渐成为主流。 Python最常用的IDE(集成开发环境,lntegrated Development Environment)是PyCharm,但是只有专业版(付费)才支持科学计算和数据分析,社区版(免费)不支持科学计算,因此进行数据分析和科学计算还有其他选择,这里选择专业的科学分析工具集Anaconda,并且选择Python3版本。
由于在官网中下载较慢,因此我已经将Anaconda安装包下载整理好了,可以直接加QQ群 963624318 在群文件夹Python相关安装包中下载即可。
安装和普通软件安装类似,直接点下一步即可,只是需要注意,在选择是否添加环境变量时需要勾选,这样就可以直接在命令行中执行相关命令,在Anaconda安装好之后,Python也自动安装,并且安装了科学计算一般所需要的库,不需要自己再专门安装。
WIN对于编写代码,有三个层次的工具:
Read-Evalulate-Print Loop4.Jupyter Notebook的基本使用
WIN会弹出一个窗口,接下来按下面示意操作即可打开jupyter notebook:
cd XXXjupyter notebook基础操作如下:
也可以新建notebook文件,示意如下:
CTRL+EnterShift+ENter[]*还有进一步操作:
CTRL+Enter二、Python的简单使用1.print函数的使用
hello worldprint("Hello World! 你好,世界! Hola mundo!")输出:
Hello World! 你好,世界! Hola mundo!ipynb输入:
print("Hello World!")
print("Hello Again")
print("This is the 3rd line, \n","and this is also the 3rd line.")
print("This is the 3rd line, \
and this is also the 3rd line.")输出:
Hello World!
Hello Again
This is the 3rd line,
and this is also the 3rd line.
This is the 3rd line, and this is also the 3rd line.\n\2.notebook中进行计算
notebook最主要的功能就是进行计算和数据分析。 输入:
4+5输出:
9再如:
print(4-5)
print(4*5)输出:
-1
20如果代码中存在错误会抛出异常,例如:
print(8 + )输出:
File "<ipython-input-6-74de9a467743>", line 1
print(8 + )
^
SyntaxError: invalid syntax显然,没有输出结果,反而提示语法错误; 需要满足运算的条件。
但是下面就不会报错:
print('8+')打印:
8+''""再如:
110/12.97输出:
8.481110254433307但是输出时,最后一次操作的结果将自动打印出来,前面的代码执行但是不输出。 如下:
111*222
333*444输出:
147852333*444111*222print()print(111*222)
print(333*444)输出:
24642
147852display()display(111*222, 333*444)输出:
24642
1478523.Python基本语法规范
编程都应该遵循一定的代码规范,这样既可以美化代码,也可以让别人更加直观地阅读代码、不至于不理解或产生误会。 Python也一样,有自己的规范,即为PEP8(Python Enhancement Proposal 8,Python8号增强方案),规定了优雅的Python代码应该具有的格式。
=number_of_cars = 34即是将34赋值给变量number_of_cars,以后number_of_cars即代表数值34。
Python中,有时候空格是有意义的,一般代码用4个空格或者制表符Tab进行缩进、控制代码结构。 如下:
x = 8
if x < 7:
print(x)会报错:
File "<ipython-input-13-29d07b2c12b7>", line 4
print(x)
^
IndentationError: expected an indented block修改为如下就不会报错:
x = 8
if x < 7:
print(x)同时需要注意语义上的问题,避免出现语意和逻辑上的错误。 如下:
x=8
if x < 7:
print("x is smaller than 7")
print("x is bigger than 7")显然,这虽然不会报错,但是在语义上是有问题的。
在Python中,一切都是作为对象实现的: 我们可以将一个对象看作一个包含一段数据的盒子; 对象的类型决定了可以对对象(数据)执行的操作,例如,数字可以进行四则运算。
在赋值运算符左侧的为变量,右侧的是值,右侧也可以是变量。 如下:
speed_of_liuxiang=110/12.97
distance= 1000
time = distance/speed_of_liuxiang
print(time)
print(time/60)输出:
117.9090909090909
1.965151515151515110/12.97speed_of_liuxiang=对象在盒子中,盒子上的标签就是变量,可以引用到对象。
三、Python基本数值数据类型Python中有4种内置数值数据类型:
- 整型int
- 浮点型float
- 布尔型bool
- 字符串str
1.整型
整型即整数。
输入:
123输出:
12305File "<ipython-input-21-65e6e002a62d>", line 1
05
^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers所以整型不能以0开头。
输入:
123,456,789输出:
(123, 456, 789)此时数据类型已经改变,不再是整型,而是元组。
对于整型的运算如下:
a = 5
a += 2
display(1 + 2, a, a-3,9//5,9/5,9%5,2+3*4)输出:
3
7
4
1
1.8
4
14a += 2a = a + 2///%在Python3中,int可以处理任何整数,无论它有多大,而不会导致溢出。 如下:
a = 10**100
display(a, a*a)输出:
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000**还可以转化为其他进制:
display(10,0b10,0o10,0x10)输出:
10
2
8
160b0o0x2.浮点型
浮点型即小数。
type(variable)type(1)type(1.2)输入:
a = 98.5
type(a)输出:
float9.8125e2981.25import math使用示意如下:
import math
display(math.pi, math.e, math.floor(98.6), math.ceil(98.6), math.pow(2, 3), 2**3, math.sqrt(25))输出:
3.141592653589793
2.718281828459045
98
99
8.0
8
5.0math.pow()**3.布尔型
布尔型只有两个值,即True和False,表示逻辑判断的真假。
运算如下:
display(type(1 < 2), (2 < 1) or (1 < 2), not (2 < 1), (2 < 1) and (1 < 2), (2 == 1), (2 != 1))输出:
bool
True
True
False
False
Trueornotand===4.字符串
字符串是Python中众多序列中的一个,它是一个字符序列。
输入:
s = 'this is a string'
display(type(s), "this is also a string", "I'm a string")输出:
str
'this is also a string'
"I'm a string"可以看到,字符串可以由单引号或者双引号包裹、并且需要成对出现,使用上两者没什么区别,但是两者可以实现嵌套,即双引号中可以用单引号,单引号中可以用双引号。
\s = "He said: \"I'm a string\""
print(s)输出:
He said: "I'm a string"可以看到,在双引号包含的字符串中也可以用双引号作为普通字符,这是通过转义实现的,转义即使需要转义的字符失去其特殊的意义、作为一个普通的字符。
转义字符还可以用于换行符等其他特殊字符,如下:
long_s = "You can put a long string that \ntakes up multiple lines here"
print(long_s)输出:
You can put a long string that
takes up multiple lines here用3层单引号或双引号即可实现字符串换行并保留原格式,如下;
s = '''
This is the first line
This is the second line
'''
print(s)输出:
This is the first line
This is the second line5.类型转换
不同的类型的数据之间可以进行类型转换。
浮点数转化为字符串如下:
a = str(98.6)
display(a,type(a))输出:
'98.6'
str再如:
display(str(True), float('98.6'), int('-123'))输出:
'True'
98.6
-123如果混合了不同的数值类型,Python将尝试进行转换再进行运算。 如下:
display(1 + 2.0, True + 3)输出:
3.0
4但是,一般不能将字符串与数字进行混合运算,除非操作有意义(字符串组合和重复); 同时,转化后的类型一般不能再进行转换之前所属类型的操作,如浮点数转换为字符串后,不能再进行数值运算。
如下:
3.88+"28"输出:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-45-7c94633b599a> in <module>
----> 1 3.88+"28"
TypeError: unsupported operand type(s) for +: 'float' and 'str'可以转化为相同的类型再进行计算:
print(int(3.88) + int("28"))
print(int(-2.95) + int("28"))
print(float(3) + float("28"))
print(str(3.88) + str(28))输出:
31
26
31.0
3.8828可以看到,字符串与字符串实际上是字符串的拼接。
四、字符串操作1.结合与重复
字符串可以进行结合与重复操作。 结合即字符串的拼接,如下:
template = "My name is"
name = "Corley"
greeting = template + " " + name + "."
print(greeting)输出:
My name is Corley.重复是将一个字符串重复指定次数,如下:
laugh = 5 * "Ha "
print(laugh)输出:
Ha Ha Ha Ha Ha 2.提取与切片
字符串还可以进行提取和切片。 如下:
letters = "abcdefghijklmnopqrstuvwxyz"
letters[0]输出:
'a'其中0是下标,下标即各位字符位置的数字表示,范围是0到length-1(length是字符串的长度)。
如果下标超出范围会报错,如下:
letters = "hello world"
letters[25]报错:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-51-17d500830d0d> in <module>
1 letters = "hello world"
----> 2 letters[25]
IndexError: string index out of range还可以用负数下标,如下:
letters[-2]输出:
'l'负数表示从后往前计数,范围是从**-1到-length**。
[start:end:step]letters = "hello world"方式 | 含义 | 举例输入 | 输出 |
|---|---|---|---|
[:] | 提取整个字符串 | letters[:] | ‘hello world’ |
[start:] | 从start下标开始到结束 | display(letters[2:],letters[-3:]) | ‘llo world’\n’rld’ |
[:end] | 从开始到end-1下标 | display(letters[:5], letters[:100]) | ‘hello’\n’hello world’ |
[start:end] | 从start下标end-1下标 | display(letters[2:5],letters[-6:-2],letters[-2:-6]) | ‘llo’\n’ wor’\n’’ |
[start: end:step] | 从start下标end-1下标,以step为间隔跳过字符 | display(letters[1:5:2],letters[7:1:-2],letters[::7],letters[::-1]) | ‘el’\n’o l’\n’ho’\n’dlrow olleh’ |
[::-1]3.获取长度
len()如下:
len(letters)输出:
114.分割和合并
split()lan = "python ruby c c++ swift"
lan.split()输出:
['python', 'ruby', 'c', 'c++', 'swift']split()split()todos = "download python, install, download ide, learn"
todos.split(', ')输出:
['download python', 'install', 'download ide', 'learn']join()','.join(['download python', 'install', 'download ide', 'learn'])输出:
'download python,install,download ide,learn'5.替换
replace()如下:
s = 'I like C. I like C++. She likes Python'
s.replace('like', 'hate')输出:
'I hate C. I hate C++. She hates Python'可以看到,所有like都被替换成hate。
还可以指定替换个数如下:
s.replace('like', 'hate', 2)输出:
'I hate C. I hate C++. She likes Python'显然,此时只替换了2次。
6.布局
字符串可以设置长度和对齐方式,如果字符串长度不够则用空格将前后补全。 如下:
align = 'Learn how to align'
display(align.center(30),align.ljust(30),align.rjust(30))输出:
' Learn how to align '
'Learn how to align '
' Learn how to align'可以看到,有居中、向左和向右对齐。
strip()ralign = align.rjust(30)
ralign.strip()输出:
'Learn how to align'7.其他操作
py_desc = "Python description: Python is a programming language that lets you work quickly and integrate systems more effectively."方法 | 含义 | 输入 | 输出 |
|---|---|---|---|
startswith() | 字符串是否以某个子串开头 | py_desc.startswith(‘Python’) | True |
endswith() | 字符串是否以某个子串结尾 | py_desc.endswith(‘effectively’) | False |
find() | 字符串中某个子串第一次出现的位置 | py_desc.find(‘language’) | 44 |
isalnum() | 字符串是否只包含字母和数字 | py_desc.isalnum() | False |
count() | 字符串中某个子串出现的次数 | py_desc.count(“Python”) | 2 |
strip() | 去掉字符串开头和结尾的某个字符 | py_desc.strip(’.’) | ‘Python description: Python is a programming language that lets you work quickly and integrate systems more effectively’ |
upper() | 将一个字符串转化成大写形式 | py_desc.upper() | ‘PYTHON DESCRIPTION: PYTHON IS A PROGRAMMING LANGUAGE THAT LETS YOU WORK QUICKLY AND INTEGRATE SYSTEMS MORE EFFECTIVELY.’ |
title() | 将一个字符串转化为标题的形式,即单词的首字母大写 | py_desc.title() | ‘Python Description: Python Is A Programming Language That Lets You Work Quickly And Integrate Systems More Effectively.’ |