2020-04-26

Python 入门

学习使用 Python 处理数字与字符串,编写函数和条件语句;
操作列表、集合、字典等常见数据类型;
学习并编写 for 和 while 循环方式;
Python 的标准库和第三方库,了解读取磁盘文件的方式等。

1:数据类型和运算符

数据类型:整型、浮点型、布尔型、字符串、列表、元组、集合、字典
运算符:算术、赋值、比较、逻辑、成员、恒等运算符
内置函数、复合数据结构、类型转换
空格和样式指南

2:控制流

条件语句
布尔表达式
For 和 While 循环
break 和 continue
zip 和 enumerate
列表推导式

3:函数

定义函数
变量作用域
文档
Lambda 表达式
迭代器和生成器

4:脚本

Python 安装和环境设置
运行和编辑 Python 脚本
与用户输入交互
处理异常
读写文件
导入本地、标准和第三方模块
在解析器中进行实验

Python 编程
在学习这门 Python 课程的过程中,需要注意几个事项。
Python 区分大小写。
空格很重要。
通过报错 Error Message 了解错误信息。

如果你之前没有编程背景,我们建议你从《编程入门 - Turtle》开始学起。

学习编程不仅仅是学习 Python 等编程语言的语法。
编程主要是学习思考模式、重复、流程和信息的思维方式。
turtle 能够可视化这些过程,并帮助零基础的同学生动地理解这些概念。

如果你之前有其他语言的编程基础,并了解 变量、字符串、注释、循环 等名词的含义,你可以选择跳过《编程入门 - Turtle》这节。

1:数据类型和运算符

① 数据类型:整型、浮点型、布尔型、字符串、列表、元组、集合、字典
② 运算符:算术、赋值、比较、逻辑、 恒等运算符
③ 内置函数、复合数据结构、类型转换
④ 空格和样式指南

算术运算符

+ 加
- 减
* 乘
/ 除
% 取模(相除后的余数)(9%2得1)
** 取幂(注意 ^ 并不执行该运算,你可能在其他语言中见过这种情形)
// 相除后向下取整到最接近的整数(7//2得3,-7//2得-4)

问题:取模运算和取余运算的区别

变量

python 中经常会用到变量
mv_population = 74728
mv_population 是变量,负责存储 74728 的值。该表达式将右侧的项目赋值给左侧的名称,实际上和数学等式有所不同,因为 74728 不存储 mv_population 的值。

在任何情况下,无论左侧项是什么,在赋值后,都是右侧值的变量名称。一旦将变量值赋值给变量名称,你便可以通过该名称访问这个值。

除了要设定具有描述性的变量名称之外,在 Python 中命名变量时,还需要注意以下几个事项:

  1. 只能在变量名称中使用常规字母、数字和下划线。不能包含空格,并且需要以字母或下划线开头。
  2. 不能使用保留字或内置标识符,它们在 Python 中具有重要含义,你将在整个这门课程中学到这些知识
  3. 在 python 中,变量名称的命名方式是全部使用小写字母,并用下划线区分单词。

赋值运算符

mv_population = 74728
mv_population = mv_population +4000 -300
可写作:mv_population += 4000 -300
即:+= 是python的一种赋值运算符
即:算数符号与=想结合的形式
X += 2 X = X+2
X -= 2 X = X-2

数据类型

整数和浮点数

数字值可以用到两种 python 数据类型:
int - 表示整数值
float - 表示小数或浮点数值
数据类型转换
print(int(4.7)) 得 4(不会四舍五入)
print(float(4) 得 4

whitespce 注意空格使用规范(PEP8指南)

布尔型运算符、比较运算符和逻辑运算符

布尔数据类型存储的是值 True 或 False,通常分别表示为 1 或 0。

通常有 6 个比较运算符会获得布尔值:
比较运算符
符号使用情况 布尔型 运算符
5 < 3 False 小于
5 > 3 True 大于
3 <= 3 True 小于或等于
3 >= 5 False 大于或等于
3 == 5 False 等于
3 != 5 True 不等于

你需要熟悉三个逻辑运算符:
逻辑使用情况 布尔型 运算符
5 < 3 and 5 == 5 False and - 检查提供的所有语句是否都为 True
5 < 3 or 5 == 5 True or - 检查是否至少有一个语句为 True
not 5 < 3 True not - 翻转布尔值

字符串(str)

是一系列不可改变的有序字符
你可以使用双引号 " 或单引号 ' 定义字符串。
如果你要创建的字符串包含其中一种引号,你需要确保代码不会出错。 (使用反斜杠 \ 来转义引导)
例如:

this_string = 'Simon\'s skateboard is in the garage.'
 print(this_string)
Simon's skateboard is in the garage.

再例如

 first_word = 'Hello'
 second_word = 'There'
 print(first_word + second_word)
 HelloThere
 print(first_word + ' ' + second_word)
 Hello There
print(first_word * 5)
HelloHelloHelloHelloHello
 print(len(first_word))
 5

可以使用字符串索引,注意,Python 索引以 0 开始

 first_word[0]
 H
 first_word[1]
 e

简单了解了 type(),它可以用来检查你所处理的任何变量的数据类型。

>>> print(type(4))
int
>>> print(type(3.7))
float
>>> print(type('this'))
str
>>> print(type(True))
bool

字符串方法

在此视频中,我们介绍了方法。方法就像某些你已经见过的函数:

len("this")
type(12)
print("Hello world")

上述三项都是函数。注意,它们使用了小括号并接受一个参数。

type 和 print 函数可以接收字符串、浮点型、整型和很多其他数据类型的参数,函数 len 也可以接受多种不同数据类型的参数,稍后你将在这节课中详细了解。

python 中的方法和函数相似,但是它针对的是你已经创建的变量。方法与特定变量中的数据类型相关。 方法相当于通过.来调用的一种函数。例如,lower()是一个字符串方法,对于一个叫 "sample string" 的字符串,它可以这样使用:sample_string.lower()。

每个方法都接受字符串本身作为该方法的第一个参数。但是,它们还可以接收其他参数。我们来看看几个示例的输出。

my_string = "sebastian thrun"
>>> my_string.islower()
True
>>> my_string.count('a')
2
>>> my_string.find('a')
3

可以看出,count 和 find 方法都接受另一个参数。但是,islower 方法不接受参数。如果我们要在变量中存储浮点数、整数或其他类型的数据,可用的方法可能完全不同!

函数与方法的区别:先看示例1

print("sebastian thrun".title())
Sebastian Thrun

函数与方法相关,不同的地方在于,方法与特定类型的对象有关,也就是说,不同的方法取决于要处理的数据类型
在上述示例中,对象是一个字符串,值是:sebastian thrun,我们要调用其title()方法,该方法返回一个职称形式的字符串,也就是每个字符串首字母大写,故:方法是属于某个对象的函数,例如字符串对象
函数后()正常有参数,对象始终是方法的第一参数,参数伪装成了字符串对象
示例2:包含多个参数(而不仅仅只是对象本身)的方法

print("one fish, two fish, red fish, blue fish.".count("fish"))
4

这里count()方法,返回字符串中出现子字符串“fish”的次数

列表和成员运算符

列表

可以使用方括号创建列表。列表可以包含我们到目前为止所学的任何数据类型并且可以混合到一起。

lst_of_random_things = [1, 3.4, 'a string', True]

这是一个包含 4 个元素的类别。
在 python 中,所有有序容器(例如列表)的起始索引都是 0。因此,要从上述列表中获取第一个值,我们可以编写以下代码:

>>> lst_of_random_things[0]
1

你可以通过使索引减一获取最后一个元素。因此,你可以执行以下操作:

>>> lst_of_random_things[len(lst_of_random_things) - 1] 
True

此外,你可以使用负数从列表的末尾开始编制索引,其中 -1 表示最后一个元素,-2 表示倒数第二个元素,等等。

>>> lst_of_random_things[-1] 
True
>>> lst_of_random_things[-2] 
a string
列表切片

你发现,我们可以使用切片功能从列表中提取多个值。在使用切片功能时,务必注意,起始索引包含在内,终止索引排除在外。(即,在上述视频示例中,6 是起始索引,9是终止索引)
因此:

>>> lst_of_random_things = [1, 3.4, 'a string', True]
>>> lst_of_random_things[1:2]
[3.4]

或者你要返回到列表结尾的所有值,可以忽略最后一个元素。

>>> lst_of_random_things[1:]
[3.4, 'a string', True]

这种索引和字符串索引完全一样,返回的值将是字符串。

在列表里还是不在列表里?

你发现,我们还可以使用 in 和 not in 返回一个布尔值,表示某个元素是否存在于列表中,或者某个字符串是否为另一个字符串的子字符串。

>>> 'this' in 'this is a string'
True
>>> 'in' in 'this is a string'
True
>>> 'isa' in 'this is a string'
False
>>> 5 not in [1, 2, 3, 4, 6]
True
>>> 5 in [1, 2, 3, 4, 6]
False
可变性和顺序

可变性是指对象创建完毕后,我们是否可以更改该对象。
如果对象(例如列表)可以更改,则是可变的。
如果无法更改对象以创建全新的对象(例如字符串),则该对象是不可变的。

>>> my_lst = [1, 2, 3, 4, 5]
>>> my_lst[0] = 'one'
>>> print(my_lst)
['one', 2, 3, 4, 5]

正如上述代码所显示的,你可以将上述列表中的 1 替换为 'one。这是因为,列表是可变的。
对于你要使用的每种数据类型,你都需要注意两个事项:
可变吗?
有序吗?

字符串和列表都是有序的。但是,你将在后续部分看到某些数据类型是无序的。对于接下来要遇到的每种数据类型,有必要理解如何设定索引,可变吗,有序吗。了解数据结构的这些信息很有用!
此外,你将发现每种数据类型有不同的方法,因此为何使用一种数据类型(而不是另一种)在很大程度上取决于这些特性,以及如何轻松地利用这些特性!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,381评论 0 5
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,183评论 0 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,233评论 0 4
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,752评论 2 9
  • 除夕清晨昆明行, 海鸥翩翩迎远朋。 西山美人伴碧海, 可见郑和航海行? 注:此景点:海为滇池,山为西山美人。
    没有太晚的开始阅读 532评论 2 8