Python学习第一二章

补充材料:https://github.com/madscheme/introducing-python

(上面的网址实际上是一个代码交流社区,英语水平足够的同学可以试着利用一下。)

第1章 Python初探

IDLE的启动

安装Python后,我们可以从“开始”菜单→“Python 3.4”→“IDLE(Python 3.4GUI - 64 bit)”来启动IDLE。IDLE启动后的初始语句如下:

Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)] on win32

Type "copyright", "credits" or "license()" for more information.

>>>

这个界面就是交互式编译器的界面了。

所谓的交互式解释器,就是Python内置的一个解释代码的东西(解释器嘛),写一行,按一下回车,就会有反应出现(其实有例外)。解释器可以快速的让我们知道这一句代码的作用是什么,十分方便。之后的大部分例子笔者会用交互式解释器里编写(“>>>”这三个连续的右书名号是不需要大家输入的)。

大家可以试试调戏一下解释器,比如输入8*9,看结果是不是72……输出print(47)试试?

第一章没有什么特别的内容,但大家不妨试一下输入:

>>> import this

结果会是这个:

>>> 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!

(或许有一天我会把它放到我的翻译作品里……Python之禅)

如果你想新建一个Python程序的源文件,单击左上角的“File”,再单击“New File”。或者直接按下Ctrl+N。Python有很好的自动缩进功能。其他语言中的缩进大多(pascal,C和C++)只是个人喜好问题,但Python的缩进代表的是程序的区域,代替了其他语言中或复杂或简洁的分隔符。似乎很简便?但和C++的大括号一比,我觉得这不是好事。

第2章 Python基本元素:数字、字符串和变量

2.1 变量、名字和对象

Python的变量类型与C语言很相似,但Python中有一些独特的写法和个性设定。

Python中所有数据,都是以对象(object)的形式存在的。对象就像一个盒子,里面装的是数据。有的数据可以改变,那么这个盒子是开口的,否则就是不开口的。

与c/c++一样,赋值号就是“=”。

>>> a=7

>>> pint(a)

Traceback (most recent call last):

File "<pyshell#5>", line 1, in <module>

pint(a)

NameError: name ‘pint‘ is not defined

>>> print(a)

7

上面的代码中,我调用了print()函数,但显然我第一次没有拼写对,于是解释器报错了。报错的信息中包含了错误位置和错误类型。看懂报错信息通常有助于改正错误,但有时(极少)也会出现误导的情况。

使用type()语句,可以让我们知道变量的类型。

>>> a=7

>>> type(a)

<class ‘int‘>

类(class)即类型。

注意

变量名只能包含以下字符:

小写字母(a-z),大写字母(A-Z),数字(0-9),下划线(_)。出现次数没有限制。

变量名不允许用数字作为开头,同时,有一些单词不能作为变量名,他们是Python的保留字。

2.2 数字

Python中的数字包括整数(integer,简写为int)和浮点数(float)。

我们可以对数字进行如下计算:

+、-、*、/(浮点数除法)、//(整除)、%(取余)、**(幂)

2.2.1 整数

任何仅含数字的序列都被认为是整数。但整数不能以0开头。否则:

>>> 05

SyntaxError: invalid token

上面的报错提示我们程序中有一个“非法标识”。

整数的除法会产生一个浮点数(不管能不能除尽):

>>> 10/2

5.0

如果除数为零:

>>> 5/0

Traceback (most recent call last):

File "<pyshell#9>", line 1, in <module>

5/0

ZeroDivisionError: division by zero

之前我们一直在用立即数(直接输入的数字)进行运算,已经赋值的变量当然可以和立即数进行运算:

>>> a=13

>>> a/5

2.6

与C一样,我们对一个变量进行四则运算有两种写法:

>>> a=2

>>> a+=3

>>> a

5

>>> a=a+3

>>> a

8

其他运算如“-”“*”“/”以此类推。

下面的操作可以同时获得商和余数:

>>> divmod(9,5)

(1, 4)

divmod()这个函数的返回值,或者说返回结果是一个元组(tuple)。

2.2.2 优先级

乘除的优先级大于加减。而括号的优先级最高。

2.2.3 基数

Python中整数默认使用十进制,但我们仍然有方法使用其他进制。

0b或0B代表二进制,0o或0O代表八进制,0x或0X代表十六进制。

十进制转其他进制用辗转相除法,其他进制转十进制用按幂展开的方法。

不同进制用在位运算中。

2.2.4 类型转换

可以用int(x)方便的把某个类型的变量转换成其他类型。举一个布尔型变量的例子:

>>> bool(12)

True

布尔型变量只有两个值,true和false。转换成整形时,分别代表1和0。

浮点数转换成整数时,小数点后的部分会被舍去:

>>> int(98.6)

98

自行尝试一下不同类型的变量的加减!

我们还可以把只含有数字和‘-’的字符串转化为对应的数字:

>>> int(‘98‘)

98

>>> float(‘-11.12‘)

-11.12

2.2.5 一个int型有多大

Python 3中int型可以是无穷大。

2.2.6 浮点数(float)

浮点数可以写为数学中的小数形式,也可以写成科学计数法形式:

>>> 1.123e4

11230.0

2.3 字符串

2.3.1 使用引号创建

把字符包在一对单引号或双引号之间都可以创建一个字符串,但Python中默认的字符串保存模式似乎是单引号:

>>> ‘Hello world‘

‘Hello world‘

>>> "Hello world"

‘Hello world‘

还可以用三个连续的单引号或双引号创建字符串。它通常用于创建多行字符串。

>>> ‘‘‘wodetianna

woweishenm

yao da zheme chang‘‘‘

‘wodetianna\nwoweishenm\nyao da zheme chang‘

这里,换行也被记录了下来,没错就是那个“\n”。当然了这里我用的是交互式解释器,如果用print(),效果是不同的。

可以通过base=’’来创建一个空字符串。欣然字符串是可以加减的。

>>> bottles=99

>>> base=‘‘

>>> base+=‘current money: ‘

>>> base+=str(bottles)

>>> base

‘current money: 99‘

str也就是string的缩写,是字符串的类型名。

2.3.2 使用str()进行类型转换

>>> str(98.6)

‘98.6‘

如上所述,再举个有趣的例子:

>>> str(1.0e4)

‘10000.0‘

2.3.3 转义

\n是换行符,\t是制表符(Tab),\’和\”表示单、双引号,而\\代表你需要输出一个反斜线字符。

2.3.4 字符串使用

可以用“+”将字符串拼接起来:

>>> a=‘hello ‘

>>> b=‘thank you‘

>>> a+b

‘hello thank you‘

“*”可以用来复制字符串:

>>> start=‘Hi‘ *4

>>> start

‘HiHiHiHi‘

使用[]提取字符:

>>> letters=‘abcdefghijklmn‘

>>> letters[0]

‘a‘

>>> letters[-1]

‘n‘

>>> letters[100]

Traceback (most recent call last):

File "<pyshell#3>", line 1, in <module>

letters[100]

IndexError: string index out of range

有趣的是[]中的数字可以是负数,但负数的绝对值也不能超过数组中元素个数。

使用[start:end:step]分片

如果省略start,默认从0开始;省略end的话会提取到结尾。

>>> le=‘abcdefghijklmnopqrstuvwxyz‘

[:]提取从开头到结尾的整个字符串

>>> le[:]

‘abcdefghijklmnopqrstuvwxyz‘

[start:]从start提取到结尾

>>> le[20]

‘u‘

>>> le[20:]

‘uvwxyz‘

>>> le[-3:]//这个操作让我们得以提取最后三个字符

‘xyz‘

[:end]从开头提取到end-1

>>> le[:26]

‘abcdefghijklmnopqrstuvwxyz‘

>>> le[26]

Traceback (most recent call last):

File "<pyshell#15>", line 1, in <module>

le[26]

IndexError: string index out of range

[start:end]从start提取到end-1

>>> le[18:24]

‘stuvwx‘

>>> le[18:-3]

‘stuvw‘

>>> le[-10:13]

‘‘

>>> le[-10:-3]

‘qrstuvw‘

[start:end:step]从start提取到end-1,每step个字符提取一个

>>> le[::7]

‘ahov‘

>>> le[:19:3]

‘adgjmps‘

那么问题来了,步长可以为负数吗?还真行:

>>> le[-1::-1]

‘zyxwvutsrqponmlkjihgfedcba‘

另一个让人欣喜的消息是,分片操作对于无效偏移量的容忍程度远大于单字符提取操作。在分片中,小于起始位置的偏移量会被当作0,大于终止为止的则会被当作-1:

>>> le[-50:]

‘abcdefghijklmnopqrstuvwxyz‘

>>> le[-100:-111]

‘‘

>>> le[:70]

‘abcdefghijklmnopqrstuvwxyz‘

常用字符串函数:

使用len()可以获得长度:

>>> len(le)

26

使用split()分割:

这里我们遇到了非广义函数。split只适用于字符串类型。我们需要输入字符串的名称,一个点号,接着是需要调用的函数名,以及需要传入的参数。

使用内置的字符串函数可以按照分隔符将字符串分割成若干子串构成的列表:

>>> lists=‘1,2,3,4,5,6‘

>>> lists.split(‘,‘)

[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘]

传入的参数为‘,’,而如果不传入参数,那么会默认按照空白字符——换行符、空格、制表符来分割:

>>> ll=‘hello world i am using python‘

>>> ll.split()

[‘hello‘, ‘world‘, ‘i‘, ‘am‘, ‘using‘, ‘python‘]

使用join()合并:

join()函数的用法和split()相反:string.join(list)

>>> to_list=[‘1‘,‘2‘,‘3‘,‘4‘]

>>> to_string=‘,‘.join(to_list)

>>> print(to_string)

1,2,3,4

>>> to2_string=‘...‘.join(to_list)

>>> print(to2_string)

1...2...3...4

类似split用法函数还有(同时写出参数的类型):

string.startswith(string2)  string.enswith(string2)

string.find(string2) 返回值为string2的第一次出现的位置

string.rfind(string2) 返回值为string2的最后一次出现的位置

string.count(string2) 返回值为string2在string中出现的次数

大小写与对齐方式(一些不常用的字符串函数):

string.strip(string2):删除string最后的string2:

>>> setup.strip(‘?‘)

‘what did i done‘

>>> setup.strip(‘done‘)

‘what did i done?‘

>>> setup.strip("done?")

‘what did i ‘

string.capitalize():让字符串首字母变成大写

string.title():让所有单词的开头字母变成大写

string.upper():让所有字母都变成大写

string.lower():让所有字母变成小写。

string.swapcase():让所有字母大小写转换

string.center(30):在30个字符的宽度内居中

string.ljust(30):左对齐

string.rjust(30):右对齐

string.replace(s1,s2,n):将string中的前n处s1替换为s2,如果省略n,则将替换全部s1。

原文地址:https://www.cnblogs.com/Shymuel/p/8456247.html

时间: 2025-01-20 22:50:25

Python学习第一二章的相关文章

Python学习笔记__9章 IO编程

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 IO在计算机中指Input/Output,也就是输入和输出. 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,所以涉及到数据交换的地方,通常是磁盘.网络等,这些地方就需要IO接口. 数据从内存往外发是Output 数据从外往内存发是Iutput 2.同步IO和异步IO 同步IO:发起IO请求后,等到IO的返回结果,在接着往下执行 异步IO:发起IO请求后,可以去做其他事.IO结果返回后,会通知调用者. 注:本章所讲

python学习(序章)

好久没写过笔记了,最近听说写博客笔记能使知识记忆更深刻,于是就开始写写,不为推广,只为增加记忆.好了,开始python的学习: 学习一门语言的快慢,与人无关,主要是与学习的目的有关,python语言目前已经分为两派:2+和3+.由于python3+较2+改动较大,大多数人仍然采用2.7+. 因此,小生也采用python2.7+. (1)程序目的 处理联通手机定位的原始信息(当然有数据喽),挖掘数据并进行分析. 1.主要根据手机的定位信息分析人口流动情况. 2.根据经纬度坐标点,判断不同时段人口所

Python学习笔记__5章 模块

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在Python中,一个.py文件就称之为一个模块(Module) 1.1.使用模块的好处 提高了代码的可维护性 当一个模块编写完毕,就可以被其他地方引用 避免函数名和变量名冲突.相同名字的函数和变量可以分别存在不同的模块中 1.2.python组织模块的方法 为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Pack

Python学习笔记__14章 virtualenv

# 这是学习廖雪峰老师python教程的学习笔记 当多个应用所需环境不同,可用virtualenv来为每一个应用创建一套"隔离"的Python运行环境 1.安装 $ pip3 install virtualenv 2.假定我们要开发一个新的项目,需要一套独立的Python运行环境 1)创建目录 mkdir myproject cd myproject/ 2)创建一个独立的Python运行环境,命名为venv virtualenv --no-site-packages venv # vi

Python学习笔记__17章电子邮件

# 这是学习廖雪峰老师python教程的学习笔记 Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务.而且几乎所有的编程语言都支持发送和接收电子邮件. 1.邮件的原理 1.1.邮件的发送流程 假设我们要把邮件从[email protected] 发送到 @sina.com MUA:Outlook或者Foxmail这类编写/发送/邮件的软件,被称为MUA[Mail User Agent--邮件用户代理] MTA:Email服务提供商,比如网易.新浪等等就是MTA[

python学习第五章

1.继承 即是一个派生的类(derived class)继承基类(base class)的字段和方法,继承也允许把一个 派生类的对象作为 一个基类 对象对待.通俗来讲就是方便,继承前人的代码,减少工作量,当然这一切是为实现多态解决解决多继承的尴尬.具体实现如下: class A: def __init__(self): print("the frist number is 1") def __init__(self): print("the second number is

Python学习第四章

1.类和对象: 类对象支持两种操作:属性引用和实例化. 属性引用:obj.name 构造方法:类会定义一个名为__int__()的特殊方法如下 def  __init__(self):       self.data=[] 类定义了__init__()方法的话,类的实例化操作会自动调用__init__()的方法.如下所示: X=Class() 当然,__init__()方法可以有参数,参数通过__init__()传递到类的实例化操作上.如下所示: class All:     def __ini

Python学习第2章

1.字符串: python中创建字符串我们可以使用引号''或"'. python访问子字符串,可以使用方括号来截取字符串: var="hello world!" var2="runover" print("var[0]:",var[0]) print("var2[1:5]:") 以上代码的执行效果如下: var[0]:h var2[1:5]:unno 当然python还可以更新字符串 : var如上 print(&q

Python学习系列-----第二章 操作符与表达式

2.1 数学运算和赋值的简便方法 例如: 2.2 优先级 在python中运算符有优先级之分,高优先级的运算符先执行,低优先级的运算符后执行.下面是运算符优先级:(同一行的运算符具有相同的优先级) 2.3 改变优先级 可以用' () '来改变优先级,先执行括号里的表达式. 2.4 结合顺序 计算机在执行的时候,是有顺序的,运算符结合顺序通常是从左到右,例如:2+3+5,也有运算符的结合顺序是从右到左的,例如:a=3; 2.5 表达式 不要在意中文释义,下面就是一个表达式.例如:a=a+b;