本书电子版下载地址:百度网盘
写在前面:你需要这本书的原因
有没有那一个瞬间,让你想要放弃学习编程?
在我决心开始学编程的时候,我为自己制定了一个每天编程1小时的计划,那时候工作很忙,我只能等到晚上9点,同事都下班之后,独自留在办公室编程。
做任何事情一定有在短期内简单可行的办法。 学习不应该是苦差事,而应该是快乐的,重要的是找到适合自己的学习方法。
高效学习法的核心在于:
- 精简:学习最核心的关键知识;
- 理解:运用类比、视觉化的方法来理解这些核心知识;
- 实践:构建自己的知识体系之后,再通过实践去逐渐完善知识体系。
我不追求让你达到精通的程度,事实上我也很怀疑有哪本书真正做到21天从入门到精通。精通一门语言,需要在实际项目开发中踩过许多坑,需要熟悉计算机运作的底层原理......对于实用主义的开发者来说,更应该追求的是达成而不是精通。先掌握项目所需的最少必要知识,然后把热情和精力投入到搭建真实项目中,而不是死磕半年的基础知识,直到把所有兴趣都耗竭了也没做出什么像样的东西。
大多数读者都能在一周内读完本书。
第一章 为什么选择python ?
1.1 Python追求的是找到最好的解决方案。
1.2 Python有很丰富的库,有官方的,也有第三方开发的,你想做的功能模块很有可能已经有人写好了,你只需要调用,不需要重新发明轮子。
第二章 现在就开始
2.1 安装最新版的Python程序。
2.2 使用IDE工具:PyCharm 社区版是免费的,专业版是付费的。对于初学者来说,两者的差异微乎其微,用社区版就够了。
- 快速上手中文视频(简单介绍如何安装、创建文件、设置皮肤)
https://v.youku.com/v_show/id_XODMyMzM1NzQ4.html
- 如何高效利用PyCharm系列文档(图文并茂的介绍了很多高效技巧)
Https://pedrokroger.net/getting-started-pycharm-python-ide/
第三章 变量与字符串
3.1 初学者经常会遇到的困惑是,看书或者听课都懂,但还是不明白要怎么编程。这是因为缺乏足够多的实践......学习时,模仿示例敲一遍代码。
3.2 变量 变量会暂时性地储存你放进去的东西。
3.3 字符串
- 单引号其实和双引号完全一样
- '''三个引号被用于过于长段的文字或者是说明,只要三引号不完你就可以随意换行写下文字'''
- 字符串格式化符fORMat()
print('{} a Word she can get what she {} for.'.format('With','came'))
print('{ab} a word she can get what she {cd} for.'.format(ab = 'With', cd = 'came'))
print('{a1} a word she can get what she {a2} for.'.format(a2 = 'came', a1 = 'With'))
# 这三个语句,输出结果一样:
With a word she can get what she came for.
With a word she can get what she came for.
With a word she can get what she came for.
第四章 函数的魔法
4.1 内建函数(自带函数)
python3.7.3 版本有69个内建函数,具体使用说明见官方文档:
Built-in Function
Built | in | Function | ||
---|---|---|---|---|
abs() | delattr() | hash() | memoryview() | set() |
all() | dict() | help() | min() | setattr() |
any() | dir() | hex() | next() | slice() |
ascii() | divmod() | id() | object() | sorted() |
bin() | enumerate() | input() | oct() | staticmethod() |
bool() | eval() | int() | open() | str() |
breakpoint() | exec() | isinstance() | ord() | sum() |
bytearray() | filter() | issubclass() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
claSSMethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() |
4.2 开始创建函数
- def :定义一个函数
- arg :参数
- return :返回结果
- 缩进 :表名语句和逻辑的从属关系
def function(arg1, arg2):
return 'Sometihing'
def 函数名(参数1, 参数2):
缩进 return '结果'
求直角三角形斜长边:
def length_bian(a,b):
c = (a**2 + b**2)**(1/2)
return c
dd = length_bian(3,4)
print(dd)
- 位置参数、关键词参数
de(1,2,3) # 位置参数
de(dup = 1, ddown = 2, dheight = 3) # 关键词参数
- open()函数
file = open('c://python/hello.txt','w')
file.write("HelloWorld!")
- 数学运算符
假设 a=10, b=20
符号 | 描述 | 实例 |
---|---|---|
+ | 相加 | a+b = 30 |
- | 相减 | b-a = 10 |
* | 相乘 | a*b = 200 |
/ | 相除 | b/a = 2 |
% | 取余 | b%a = 0 |
** | 次方 | a**b = 10^20 |
// | 取商 | b//a = 2 |
第五章 循环与判断
5.1 逻辑判断True&False
- 比较运算符
符号 | 描述 |
---|---|
== | 左右相等时返回True |
!= | 左右不等时返回True |
> | 左边大于右边时返回True |
< | 左边小于右边时返回True |
>= | 左边大于等于右边时返回True |
<= | 左边小于等于右边时返回True |
- 成员运算符与身份运算符in&is
in、not in,表示归属关系的布尔运算符 is、is not,表示身份鉴别的布尔运算符
- 布尔运算符
运算符 | 描述 |
---|---|
not x | 如果x是True,返回Flase |
x and y | 如果x和y同时为True,返回True |
x or y | 如果x和y同时为False,返回False |
5.2 条件控制if...else
# 如果...条件是成立的,就做...;反之,就做...
if condition:
do something
elif condition:
do something
else :
do something
if 成立条件(冒号)
(缩进)执行什么
elif 成立条件(冒号)
(缩进)执行什么
else(冒号)
(缩进)执行什么
5.3 循环(Loop)
- for循环
于...其中的每一个元素,做...事情
for item in iterable:
do something
for 元素 in 集合(冒号)
(缩进)执行什么
- 嵌套循环(Nested Loop)
for i in range(1,10):
for j in range(1,10):
print('{} * {} = {}'.format(i,j,i*n))
- while循环 只要...条件成立,就一直做...
while condition:
do something
while 成立条件(冒号)
(缩进)执行什么
如何控制while循环?
- 在循环过程中制造某种可以使循环停下来的条件P69
- 改变使循环成立的条件P70
第六章 数据结构
- 数据结构(Data Structure) 6.1 储存大量数据的容器,在Python称为内置数据结构(Build-in Data Structure)
6.2 Python有四种数据结构:列表,字典,元组,集合。
list = [val1, val2, val3, val4]
dict = {key1 : val1, key2 : val2}
tuple = (val1, val2, val3, val4)
set = {val1, val2, val3, val4}
6.3 列表(list)
- 列表中的每一个元素都是可变的;
- 列表中的元素是有序的;
- 列表可容纳Python中的任何对象。
列表的增删改查
fruit = ['apple', 'orange']
fruit.insert(1,'grape') #增
fruit[0:0] = ['banana'] #增
fruit.remove('grape') #删
del fruit[0:2] #删
fruit[0] = 'Grapefruit' #改
fruit.extend('b1', 'b2') #增
6.4 字典(Dictionary)
- 字典中数据必须以键值对的形式出现;
- 逻辑上讲,键不能重复,值可以重复;
- 字典中的键(key)是不可变的,而值(value)是可变的。
字典的增删改查
url_code = {'b' : 'baidu', 's' : 'sina'}
#增
url_code['t'] = 'tmall'
url_code.update({'fb' : 'facebook', 'tb' : 'taobao'})
#删
del url_code['fb']
6.5 元组(Tuple) 元组不可修改,类似稳定版的列表
6.6 集合(Set) 每一个集合中的元素是无序的、不重复的任意对象。可以通过集合去判断数据的从属关系,也可以通过集合去掉数据结构中的重复的元素。
a_set = {1, 2, 3, 4}
a_set.add(5) #增
a_set.discard(5) #删
6.7 多重循环
sorted(num_list,reverse = True)
sorted函数,先将列表复制后按照长短、大小、字母顺序进行排序,但不改变列表本身。
num_list [4,6,7,9,1,8,3,2]
print(sorted(num_list))
整理列表时,如果同时需要两个列表怎么办?
for a,b in zip(num,str):
print(b, ' is ', a)
6.8 推导式
a = []
for i in range(1,10):
a.append(i)
b = [i for i in range(1,10)]
# 两种执行效果一样,第二种效率更高
# 看几个例子
a = [i**2 for i in range(1,10)]
b = [j+1 for j in range(1,11)]
c = [n for n in range(1,10) if n % 2 == 0]
d = [letter.lower() for letter in 'ABCDEFG']
e = {i:i+1 for i in range(4)}
f = {i:j for i,j in zip(range(1,6),'abcde')}
g = {i:j.upper() for i,j in zip(range(1,6),'fghij')}
6.9 循环列表获取元素索引
letters = ['a','b','c','d','e']
for num,letter in enumerate(letters):
print(letter, ' is ', num+1)
第七章 类与可口可乐
第八章 开始使用第三方库
8.1 令人惊叹的第三方库
- 当你想搭建网站时,可以选择功能全面的Django、轻量的flask等WEB框架;
- 当你想写小游戏时,可以使用PyGame框架;
- 当你想做一个爬虫时,可以使用scrapy框架;
- 当你想做数据统计分析时,可以使用pandas数据框架...
- 丰富的资源可以帮我们高效快捷地做到想做的事,就不需要再重新造轮子。
- 第三方库
8.2 安装第三方库
8.2.1 在PyCharm中安装 1,路径:File>>settings>>Project TestCode>>Project Interpreter
2,我的PyCharm版本:PyCharm2019.1.1
3,注意:破解版因屏蔽上网,无法安装库
8.2.2 在命令行中安装
1,安装pip
在Python3.4之后,安装好Python环境就可以直接支持pip,可以在命令行输入命令检查一下:
2,使用pip安装库
# 如果你想安装到python2中,把pip3 换成 pip
pip3 install 库名称
# 如果你安装了python2和python3两种版本,可能会遇到安装目录问题,可以换成:
python3 -m pip install 库名称
# 如果想装到python2中,把python3 换成 python
# 介绍几个pip常用指令
pip install --upgrade pip #升级pip
pip uninstall 库名称 #卸载库
pip list #查看已安装库
3,手动安装 (1)下载库文件(pypi站)
进入pypi站,搜索要安装的库,这是有3种可能。 *1. exe文件,点击安装。 *2. .whl类文件,可以自动安装依赖的包 *3. 源码文件,如.zip、tar.zip、tar.bz2等格式,要求用户已安装这个包所依赖的其他包。
(2).whl文件安装
pip3 install wheel
cd whl文件所在目录
pip3 install whl文件
(3)源码文件安装
cd 源码文件所在目录
python3 setup.py install