本文目录一览:
如何串联python知识点
1)避免‘\n'等特殊字符的两种方式:
a)利用转义字符‘\’
b)利用原始字符‘r’
print(r'c:\now')
2)单行注释,使用一个#
,如:
# hello Python
多行注释,使用三个单引号(或三个双引号),如:
'''hello python
hello world'''
或
"""hello python
hello world"""
另外,跨越多行的字符串也可以使用三个单引号或三个双引号,如:
'''......'''
或者
"""......"""
3)字符串中嵌入双引号等特殊符号
a)利用转义字符‘\’
b)使用单引号括起这个字符串。
print('i l"o"ve fis.com')
4)条件分支:
if condition:
条件为真执行的操作
else:
条件为假执行的操作
if condition:
action
elif condition:
action
else:
action
Python可以有效避免“悬挂else”(if else对应关系出错)
条件表达式(三元操作符):
small = x if x < y else y
如果x < y
,small = x
。否则small = y
断言assert
:当这个关键字后面的条件为假,程序自动崩溃并抛出异常
assert 3 < 4
可以利用它置入检查点。
5)while条件:
while condition:
条件为真执行的操作
for 目标 in 表达式:
循环体
例:
favorite = 'fishc'
for i in favorite:
print(i, end='')
range([start,] stop[,step=1])
生成一个从start
参数的值到stop
参数值的数字序列
break
:终止当前循环体,跳到外层程序
continue
:终止本轮循环,开始下一轮循环(if condition true)
6)and逻辑操作符可以将任意表达式连接在一起,并得到一个布尔类型值
7)引入外援:
a)random模块
b)randint(), 返回一个随机的整数
import random
或
from random import randint
secret = random.randint(1, 10)
8)Python数据类型
a)数值类型:整型、布尔类型、浮点型、e记法(1.5e10)
b)类型转换:
int()
转换为整数str()
转换为字符串float()
转换为浮点数
c)获取关于类型的信息:type()
函数
a = 520
type(a)
isinstance()
函数
a = 12
isinstance(a, int) # 返回True
isinstance(a, str) # 返回False
9)Python值常用操作符
-
-
- / % **(幂运算) //(地板除法,结果偏小)
比较操作符:== != >= <= > <
逻辑操作符:and or not
优先级:
- / % **(幂运算) //(地板除法,结果偏小)
-
- 幂运算
**
- 正负号
+ -
- 算术操作符
* / // + -
- 比较操作符
== != >= <= > <
- 逻辑操作符
not and or
10)列表--可以把整数、浮点数、字符串等打包在一起。数组却不能
创建一个普通列表:
member = ['小甲鱼', '小布丁', '黑夜']
创建一个混合列表:
mix = [1, '小甲鱼', 3.12, [1, 2, 3]]
创建空列表:
empty = []
向列表添加元素:
append()
:member.append('福禄娃')
--只能添加一个,末尾添加extend()
:member.extend(['test', 'test1'])
--只能以列表形式添加,末尾添加insert()
:member.insert(1, '牡丹')
--第一位插入牡丹
列表中获取元素:使用索引index。mix[1]
列表中删除元素:- 使用
remove()
:mix.remove('小甲鱼')
- 使用
del
:del mix[3]
/del mix
- 使用
pop()
:mix.pop()
/mix.pop(1)
列表切片:使用slice。mix[1:4]
/mix[1:]
/mix[:4]
列表操作符:, and, +, *, in/not in
列表的小伙伴:dir(list)
mix.count('小甲鱼')
mix.index('小甲鱼')
列表逆序:使用reverse
。mix.reverse()
列表排序:使用sort
。mix.sort()
/mix.sort(func, key)
/mix.sort(reverse=True)
11)元组---不可改变的列表
和列表的主要不同点:
a)创建和访问一个元组:大部分用()
,列表用[]
b)元组不可修改数值
c)更新和删除一个元组:
temp = temp[:2] + ('test3',) + temp[2:]
del temp
d)in/not in
,关系操作符,逻辑操作符,乘号操作符,连接操作符
12)字符串的各种内置方法
str1 = 'i love fishc.com'
a = str1[:6] + '插入的字符串' + str1[6:]
capitalize()
:str2.capitalize()
casefold()
---全部小写:str2.casefold()
center(width)
--居中,不足空格填充count(sub[,start[,end]])
--返回sub在string中出现的次数endswith(sub[,start[,end]])
--以sub结束?startswith(prefix[,start[,end]])
--以prefix开头expandtabs([tabsize=8])
--将tab键转换为空格find(sub[,start[,end]])
--sub是否在字符串中出现rfind(sub)...
index(sub[,start[,end]])
--跟sub一样,不过会产生异常rindex(sub..)...
istitle()
/isupper()
/ljust(width)
/lower()
/strip()
/title()
/lower()
join(sub)
:以字符串做分隔符,分割subpartion(sub)
:找到子字符串sub,把字符串分成一个3元组replace(old, new[,count])
split(sep=None, maxsplit=-1)
--不带参数以空格做分隔符swapcase()
--字符串大小写翻转zfill(width)
--返回长度为width的字符串,不够补充空格
13)字符串格式化 replacement
"{0} love {1}.{2:.2f}".format("i", "fishc", 3.1424)
"{a} love {b}.{c}".format(a="i", b="fishc", c="com")
"{0} love {b}.{c}".format("i", b="fishc", c="com")
格式化符号含义:
%c
:格式化字符及其ASCII码'%c %c %c' % (97, 98, 99)
%s
:格式化字符串%d
:格式化整数%o
:格式化无符号八进制数%x
:格式化无符号十六进制数%X
:格式化无符号十六进制数(大写)%f
:格式化定点数,可指定小数点后的精度%e
:用科学技术法格式化定点数===%E
%g
:根据值的大小决定使用%f
或%e
===%G
格式化操作符辅助命令:m.n
:m是显示的最小总宽度,n是小数位精度-
:用于左对齐+
:在正数面前添加正号#
:在八进制面前显示0,在十六进制面前显示0x0
:空格用0填充
字符串转义字符:\a
:发出系统响铃声\b
、\t
、\n
14)序列
列表、元组和字符串的共同点:
a)都可以通过索引
b)索引值从零开始
内置方法:
list()
--转换为序列a = list() b = 'i love fishc.com' b = list(b)
tuple([iterable])
--把一个可迭代对象转换为元组b = tuple(b)
str(obj)
--把obj对象转换为字符串len(obj)
--返回obj的长度max(序列/元组)
/min(序列/元组)
sum(iterable[,start=0])
--返回序列iterable的总和sorted(序列/元组)
--排序reversed(序列/元组)
--返回一个迭代器对象list(reversed(序列/元组))
enumerate(序列/元组)
--返回一个迭代器对象list(enumerate(序列/元组))
zip(a, b)
--合并成以元组形式的列表list(zip(a, b))
15)函数
定义:
def Myfunction():
print('this is my first function')
调用:
Myfunction()
函数的参数:
def Myfunction(name, age):
print(name + age + 'test')
Myfunction('gncao', 'age')
函数的返回值: return value
形参(parameter):函数定义时的参数
实参(argument):实际传递的参数
函数文档:在函数中实现,在函数体中用 ''
或 #
查看函数文档:
a)functionname.__doc__
(四个下划线)
b)help(functionname)
关键字参数:避免参数出乱
def Myfunction(words, name):
......
Myfunction(words='words123', name='name123')
默认参数:
def Myfunction(name='name123', words='words123'):
......
收集参数:在参数前面加上*
号
def test(*params):
print('参数的长度是:', len(params))
print('第二个参数是:', params[1])
test(1, '小甲鱼', 2, 4, 5, 6, 7)
def test(*params, exp):
print('参数的长度是:', len(params), exp)
print('第二个参数是:', params[1])
test(1, '小甲鱼', 23, 4, 2, 5, 7, exp=0)
16)函数有返回值,过程没有返回值
17)函数变量作用域(可见性)
局部:local--函数内部定义的变量,局部可用
全局:global--全局可访问
当在函数内部试图修改全局变量时,则会在函数内部新建一个跟全局变量名相同的局部变量。
18)内嵌函数和闭包
global
关键字:
def myfun():
global count
count = 10
print(count)
内嵌函数:
def fun1():
print('fun1()正在被调用...')
def fun2():
print('fun2()正在被调用')
fun2()
只能通过fun1()
访问fun2()
闭包:在一个内部函数中,对外部函数的变量的引用。称内部函数为闭包
def funx(x):
def funy(y):
return x * y
return funy
调用方式:
i = funx(8)
i(5)
或
funx(4)(5)
通过关键字nonlocal
可以使得内部函数调用外部函数变量。
def fun1():
x = 5
def fun2():
nonlocal x
x *= x
return x
return fun2()
19)递归:
def fac(n):
if n == 1:
return 1
else:
return n * fac(n - 1)
number = int(input('请输入一个整数:'))
result = fac(number)
print('%d 的阶乘是:%d' % (number, result))
迭代方法:
def fab(n):
n1 = 1
n2 = 1
n3 = 1
if n < 1:
print('输入有错')
return -1
while (n - 20):
n3 = n2 + n1
n1 = n2
n2 = n3
n -= 1
return n3
result = fab(20)
if result != -1:
print('总共有%d对小兔子诞生:' % result)
递归方法:
def fab(n):
if n < 1:
print('error')
return -1
if n == 1 or n == 2:
return 1
else:
return fab(n - 1) + fab(n - 2)
result = fab(20)
print('总共有%d对兔子诞生' % result)
但是递归的效率比较低。
20)字典(key-value)映射/序列
例1:
dict1 = {'李宁': '一切皆有可能', '耐克': 'just do it', '阿迪达斯': 'impossible is nothing'}
print('李宁的口号是:', dict1['李宁'])
例2:
dict3 = dict((('f', 70), ('i', 105)))
例3:
dict4 = dict(小甲鱼='编程改变世界', test='test')
dict4['小甲鱼'] = '修改小甲鱼对应的value' # 如果没有该KEY,则会自动添加一个KEY
字典的内建方法:
a)dict2['key']
--访问字典的元素
b)fromkeys(s[,v])
--创建或查询key
dict1.fromkeys((1, 2, 3)) # {1: None, 2: None, 3: None}
dict1.fromkeys((1, 2, 3), 'number') # {1: 'number', 2: 'number', 3: 'number'}
c)keys()
--dict.keys()
--打印出dict的所有key
values()
--dict.values()
--打印出dict的所有value
items()
--dict.items()
--打印出dict所有(key, value)
get()
--dict.get(key)
--打印key对应的value
dict.get(key, 'text')
--打印key对应的value,如果不存在,则打印text
in
操作符--key in dict2
clear()
--dict.clear()
--清空dict的数据
copy()
--b = a.copy()
--拷贝字典
id(a)
--查看id
pop(key)
--dict.pop(key)
--弹出key
popitem()
--dict.popitem()
--随机弹出key
setdefault()
--dict.setdefault(key)
--新建key
update()
--dict.update(dict)
--更新字典
Python入门编程(1)变量
在开始本次的学习之前,我们先运行一下Test1.py
。程序输出了helloworld
,下面我们再进行一些更深入的思考,当这个文件被运行时,Python都做了些什么。
Test1.py
在运行这个文件时,它的.py
后缀说明这是一个Python程序,因此编译器会使用Python解释器来运行它。接着解释器会读取整个程序,并且确认其中每个单词的含义。比如在这个程序中解释器遇到了print()
这个单词,它便会把括号内的内容打印出来,而不管括号里面是什么。
在你编写程序时,编译器会在把程序中每个不同的不同用不同的颜色显示。比如:
print("helloworld")
这种非常实用的方法叫做语法突出。
以上这些内容只是需要进行理解即可,接下来的内容我们便需要认真学习了。
让我们对Test1.py
稍加修改,在这个程序中加入一个变量sentence
,并且对print
函数内的内容稍加修改,以便于让我们更好的认识变量。
通过这个程序的运行结果我们可见,修改之后的程序与先前的程序输出相同。在这里我们添加了一个名为sentence
的变量,可知:
每个变量都储存了一个对应的值,这个值就是与变量相关联的信息。
现在我们对这个程序再加一点点的修改:
此时可以看出,同一个变量进行了两次不同的输出,这便是:
你可以随时在程序中修改变量的值,并且Python将变量的最新值记录下来。
程序员几乎每天都会犯错,下面这是一种我们初学阶段很有可能犯的错误,下面我们来了解并学习如何解决它。
我们来看看这个新的程序。
Test2.py
在程序出现错误时,编译器无法对其进行下一步编译,此时编译器便会返回给我们一个Traceback
。它是一条记录,它会解释器在运行代码时在哪里陷入困境,以上我提供的便是变量名拼写错误所被提供的Traceback
。
编译器已经指出,在我运行Test2.py
这个程序时,我们想输出的变量sentece
并未被定义,程序无法找到识别我所提供的变量名。
名称错误的两种情况:
- 在使用变量前未给变量赋值。
- 变量名拼写错误。
在我这个提供的例子中,我们只需要将
sentece
修改为sentence
便可以使程序正确运行了。 在创建程序中的变量名和编写代码时不必遵循英语的语法与拼写规则。 其实绝大多数的报错无非是在程序的某一行多写或少写一个字符,或是一些逻辑性的错误。在阅读Traceback
以及寻找解决这些Bug的方法时我们应当耐心和冷静。这样会提升你解决问题的速度。 本次的文章对变量进行了初步的认识与学习,在接下来的文章中,我们将对更多Python中的相关知识进行阐述与学习。 本次的文章就先写到这里,下次我们将会进行对数据类型的学习。
作为一个小白,Python应该怎样从零到入门?
分享Python学习路线。
第一阶段:Python基础与Linux数据库
这是Python的入门阶段,也是帮助零基础学员打好基础的重要阶段。你需要掌握Python基本语法规则及变量、逻辑控制、内置数据结构、文件操作、高级函数、模块、常用标准库模块、函数、异常处理、MySQL使用、协程等知识点。 学习目标:掌握Python基础语法,具备基础的编程能力;掌握Linux基本操作命令,掌握MySQL进阶内容,完成银行自动提款机系统实战、英汉词典、歌词解析器等项目。
第二阶段:WEB全栈
这一部分主要学习Web前端相关技术,你需要掌握HTML、CSS、JavaScript、jQuery、BootStrap、Web开发基础、VUE、Flask Views、Flask模板、数据库操作、Flask配置等知识。 学习目标:掌握WEB前端技术内容,掌握WEB后端框架,熟练使用Flask、Tornado、Django,可以完成数据监控后台的项目。
第三阶段:数据分析+人工智能
这部分主要是学习爬虫相关的知识点,你需要掌握数据抓取、数据提取、数据存储、爬虫并发、动态网页抓取、scrapy框架、分布式爬虫、爬虫攻防、数据结构、算法等知识。 学习目标:可以掌握爬虫、数据采集,数据结构与算法进阶和人工智能技术。可以完成爬虫攻防、图片马赛克、电影推荐系统、地震预测、人工智能项目等阶段项目。
第四阶段:高级进阶
这是Python高级知识点,你需要学习项目开发流程、部署、高并发、性能调优、Go语言基础、区块链入门等内容。 学习目标:可以掌握自动化运维与区块链开发技术,可以完成自动化运维项目、区块链等项目。 按照上面的Python学习路线图学习完后,你基本上就可以成为一名合格的Python开发工程师。当然,想要快速成为企业竞聘的精英人才,你需要有好的老师指导,还要有较多的项目积累实战经验。
零基础学Python应该学习哪些入门知识
关于零基础怎么样能快速学好Python的问题,百度提问和解答的都很多,你可以百度下看看。我觉得从个人自学的角度出发,应从以下几个方面来理解:
1. 为什么选择学Python?
据统计,零基础或非专业的人士学Python的比较多,据HackerRank开发者调查报告2018年5月显示(见图),Python排名第一,成为最受欢迎编程语言。Python以优雅、简洁著称,入行门槛低,可以从事Linux运维、Python Web网站工程师、Python自动化测试、数据分析、人工智能等职位,薪资待遇呈上涨趋势。
2. 入门Python需要哪些准备?
2.1 心态准备
编程是一门技术,也可说是一门手艺。如同书法、绘画、乐器、雕刻等,技艺纯熟的背后肯定付出了长时间的反复练习。不要相信几周速成,也不能急于求成。编程的世界浩瀚无边,所以请保持一颗敬畏的心态去学习,认真对待写下的每一行代码,甚至每一个字符。收拾好自己的心态,向着编程的世界出发。第一步至关重要,关系到初学者从入门到精通还是从入门到放弃。选一条合适的入门道路,并坚持走下去。
2.2 配置 Python 学习环境
选Python2 还是 Python3?入门时很多人都会纠结。二者只是程序不兼容,思想上并无大差别,语法变动也并不多。选择任何一个入手,都没有大影响。如果你仍然无法抉择,那请选择 Python3,毕竟这是未来的趋势。 编辑器该如何选?同样,推荐 PyCharm 社区版,配置简单、功能强大、使用起来省时省心,对初学者友好,并且完全免费!其他编辑器如:Notepad++、Sublime Text 3、Vim 和 Emacs等不推荐了。 操作环境?Python 支持现有所有主流操作平台,不管是 Windows 还是 Mac 还是 Linux,都能很好的运行 Python。并且后两者都默认自带 Python 环境。
2.3 选择自学的书籍
我推荐的书的内容由浅入深,建议按照先后顺序阅读学习:
2.3.1《Python简明教程》
这是一本言简意赅的 Python 入门教程,简单直白,没有废话。就算没有基础,你也可以像读小说一样,花两天时间就可以读完。适合入门快速了解语法。
2.3.2 廖雪峰编写的《Python教程》
廖先生的教程涵盖了 Python 知识的方方面面,内容更加系统,有一定深度,有一定基础之后学习会有更多的收获。
2.4 学会安装包
Python中有很多扩展包,想要安装这些包可以采用两种方法:
2.4.1 使用pip或easy_install
- 在网上找到的需要的包,下载下来。例如:
rsa-3.1.4.tar.gz
; - 解压缩该文件;
- 命令行工具
cd
切换到所要安装的包的目录,找到setup.py
文件,然后输入:python setup.py install
2.4.2 不用pip或easy_install,直接打开cmd,敲:
pip install rsa
3. 提升阶段需要恒心和耐力
完成入门阶段的基础学习之后,常会陷入一个瓶颈期,通过看教程很难进一步提高编程水平。这时候,需要的是反复练习,大量的练习。可以从书上的例题、作业题开始写,再写小程序片段,然后写完整的项目。我们收集了一些练习题和网站。可根据自己阶段,选择适合的练习去做。建议最好挑选一两个系列重点完成,而不是浅尝辄止。
3.1 多做练习。推荐网站练习:
- crossin编程教室实例:相对于编程教室基础练习着重于单一知识点,编程实例训练对基础知识的融会贯通;
- hackerrank:Python 部分难度循序渐进,符合学习曲线
- 实验楼:提升编程水平从做项目开始;
- codewar:社区型编程练习网站,内容由易到难;
- leetcode:为编程面试准备,对初学者稍难;
- 牛客网:提供 BAT 等大厂笔试题目;
- codecombat:提供一边游戏一边编程;
- projecteuler:纯粹的编程练习网站;
- 菜鸟教程100例:基于 py2 的基础练习;
3.2 遇到问题多交流
3.2.1 利用好搜索引擎
3.2.2 求助于各大网站。推荐
- stackoverflow:这是一个程序员的知识库;
- v2ex:国内非常不错的编程社区,不仅仅是包含程序,也包含了程序员的生活;
- segmentfault:一家以编程问答为主的网站;
- CSDN、知乎、简书等