admin 管理员组

文章数量: 1086019


2024年12月29日发(作者:python字符串操作)

Python学习路线图

一、Python学习的四个阶段

➢ 第一阶段

该阶段首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及

Linux系统的文件目录结构让大家对Linux系统有一个简单的认识,同时知道为

什么要学习Linux命令。然后我们会正式学习Linux命令

1. 文件和目录命令:ls,cd,touch,mkdir,rm

2. 拷贝和移动命令:tree,cp,mv

3. 文件内容命令:cat,more,grep

4. 远程管理命令:ifconfig,ping,SSH的工作方式简介以及ssh命令

5. 用户权限及用户管理命令:chmod,chgrp,useradd,passwd,userdel

6. 软件安装及压缩命令:apt简介及命令,tar,gzip压缩命令,bzip2压

缩命令

7. vim的基本使用

➢ 第二阶段

该阶段我们正式进入Python这门语言的学习,首先通过了解Python语言的

起源,Python语言的设计目标,Python语言的设计哲学,Python语言的优缺点

和面向对象的基本概念,以及Python语言的执行方式,还有Python集成开发环

境PyCharm的使用为我们接下来的学习做铺垫。

然后我们会学习int,string,float三种简单的变量类型,变量间的计算,

变量的输入输出,if判断语句,while循环语句,for循环语句,break和continue

的使用,函数的基本使用,模块的使用,列表,元组,字典三种高级变量,字符

串的常用操作。

接下来我们会通过一个名片管理系统的案例,把这一阶段的知识进行一个串

联。在学习名片管理系统时,首先我们会学习怎么去搭建这一系统的框架,然后

我们会分别实现新增名片,显示全部名片,查询名片,删除名片,修改名片这些

功能。

最后我们会学习语法的进阶内容,全局变量,局部变量,可变数据类型和不

可变数据类型以及函数返回多个值,函数的缺省参数,多值参数,递归的基本使

用。

➢ 第三阶段

该阶段我们会学习面向对象(OOP)这一重要的编程思想,首先学习的知识

点有类和对象的基本概念,dir函数,self的作用,初始化方法__init__,内置

函数__str__,__del__,单继承,方法重写,私有属性和方法,多继承,多态,

类属性,静态方法。

然后我们还会学习单例模式这一设计模式,异常的捕获,异常的抛出,from

import局部导入,from import导入同名工具, from import导入所有工具,

包的使用,制作模块,pip的使用以及文件的相关操作。

➢ 第四阶段

该阶段是项目演练阶段,我们会带领大家通过使用之前学习过的知识开发飞

机大战这一经典游戏,项目中分别有游戏窗口,图像绘制,游戏循环,事件监听,

精灵和精灵组以及创建敌机,创建英雄和发射子弹,碰撞检测等模块。

二、Python的可发展方向

目前Python应用最多的是:Python开发、Web开发、后端开发、爬虫开发、

大数据分析、人工智能等6大方向。这6大方向也是Python语言目前在市场上

提供工作岗位最多也是最有发展的方向,大家可以根据自身的情况,来选择适合

自己的方向着重去学习,从而得到更好的发展。

三、python学习路线图

➢ python语言基础

(1)Python3入门,数据类型,字符串

(2)判断/循环语句,函数,命名空间,作用域

(3)类与对象,继承,多态

(4)tkinter界面编程

(5)文件与异常,数据处理简介

(6)Pygame实战飞机大战,2048

➢ python语言高级

(1)Python常见第三方库与网络编程

(2)Python正则表达式

(3)邮箱爬虫,文件遍历,金融数据爬虫,多线程爬虫

(4)Python线程、进程

(5)Python MySQL数据库,协程,jython

➢ python全栈工程师前端

(1) HTML

(2) HTML5

(3) CSS

(4) CSS3

(5) 网页界面设计实战

(6) javaScript

(7) jquerry

(8) jquerry EasyUI, Mobile简介,photoshop

(9) Bootstrap

➢ python全栈工程师后端

(1) Django入门

(2) Django高级

(3) Django实战

➢ python全栈工程师后端高级

(1) Flask开发原理

(2) Flask开发项目实践

(3) Tornado开发原理

(4) Tornado开发项目实践

➢ Linux基础

(1) 文件处理命令

(2) 权限管理命令

(3) 帮助命令

(4) 文件搜索命令

(5) 压缩解压命令

(6) 命令使用技巧

(7) VIM使用

(8) 软件包管理

(9) 用户和用户组管理

(10) Linux Shell开发

➢ Linux运维自动化开发

(1) Python开发Linux运维

(2) Linux运维报警工具开发

(3) Linux运维报警安全审计开发

(4) Linux业务质量报表工具开发

(5) Kali安全检测工具检测

(6) Kali 密码破解实战

➢ python数据分析

(1) numpy数据处理

(2) pandas数据分析

(3) matplotlib数据可视化

(4) scipy数据统计分析

(5) python 金融数据分析

➢ python大数据

(1) Hadoop HDFS

(2) python Hadoop MapReduce

(3) python Spark core

(4) python Spark SQL

(5) python Spark MLlib

➢ python机器学习

(1) 机器学习基础知识简介

(2) KNN算法

(3) 线性回归

(4) 逻辑斯蒂回归算法

(5) 决策树算法

(6) 朴素贝叶斯算法

(7) 支持向量机

(8) 聚类k-means算法

四、Python学习案例

假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围

从192.168.0.101到192.168.0.200.

思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在

Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时

候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结

果中进行字符串查找,即可知道该机器是否连通.

实现:Java代码如下:

String cmd=" ping ";

String ipprefix="192.168.10.";

int begin=101;

int end=200;

Process p=null;

for(int i=begin;i

p= time().exec(cmd+i);

String line = null;

BufferedReader reader = new BufferedReader(new InputStreamReader(u

tStream()));

while((line = ne()) != null)

{

//Handling line , may logs it.

}

();

y();

}

这段代码运行得很好,问题是为了运行这段代码,你还需要做一些额外的工作.这些

额外的工作包括:

 编写一个类文件

编写一个main方法

将之编译成字节代码

由于字节代码不能直接运行,你需要再写个小小的bat或者bash脚

本来运行.

当然,用C/C++同样能完成这项工作.但C/C++不是跨平台语言.在这个足够简单

的例子中也许看不出C/C++和Java实现的区别,但在一些更为复杂的场景,比如要将

连通与否的信息记录到网络数据库.由于Linux和Windows的网络接口实现方式不同,

你不得不写两个函数的版本.用Java就没有这样的顾虑.

同样的工作用Python实现如下:

import subprocess

cmd=""

begin=101

end=200

while begin

p=(cmd,shell=True,stdout=,

stdin=,

stderr=)

("ping 192.168.1."+str(begin)+"n")

()

()

print "execution result: %s"%()

对比Java,Python的实现更为简洁,你编写的时间更快.你不需要写main函数,

并且这个程序保存之后可以直接运行.另外,和Java一样,Python也是跨平台的.

有经验的C/Java程序员可能会争论说用C/Java写会比Python写得快.这个观点

见仁见智.我的想法是当你同时掌握Java和Python之后,你会发现用Python写这类程

序的速度会比Java快上许多.例如操作本地文件时你仅需要一行代码而不需要Java

的许多流包装类.各种语言有其天然的适合的应用范围.用Python处理一些简短程序

类似与操作系统的交互编程工作最省时省力.

Python应用场合

足够简单的任务,例如一些shell编程.如果你喜欢用Python设计大型商业网站或

者设计复杂的游戏,悉听尊便.

2 快速入门

2.1 Hello world

安装完Python之后(我本机的版本是2.5.4),打开IDLE(Python GUI) , 该程序是

Python语言解释器,你写的语句能够立即运行.我们写下一句著名的程序语句:

print "Hello,world!"

并按回车.你就能看到这句被K&R引入到程序世界的名言.

在解释器中选择"File"--"New Window" 或快捷键 Ctrl+N , 打开一个新的编辑器.

写下如下语句:

print "Hello,world!"

raw_input("Press enter key to close this window");

保存为文件.按F5,你就可以看到程序的运行结果了.这是Python的第二种运

行方式.

找到你保存的文件,双击.也可以看到程序结果.Python的程序能够直接运行,

对比Java,这是一个优势.

2.2 国际化支持

我们换一种方式来问候世界.新建一个编辑器并写如下代码:

print "欢迎来到奥运中国!"

raw_input("Press enter key to close this window");

在你保存代码的时候,Python会提示你是否改变文件的字符集,结果如下:

# -*- coding: cp936 -*-

print "欢迎来到奥运中国!"

raw_input("Press enter key to close this window");

将该字符集改为我们更熟悉的形式:

# -*- coding: GBK -*-

print "欢迎来到奥运中国!" # 使用中文的例子

raw_input("Press enter key to close this window");

程序一样运行良好.

2.3 方便易用的计算器

用微软附带的计算器来计数实在太麻烦了.打开Python解释器,直接进行计算:

a=100.0

b=201.1

c=2343

print (a+b+c)/c

2.4 字符串,ASCII和UNICODE

可以如下打印出预定义输出格式的字符串:

print """

Usage: thingy [OPTIONS]

-h Display this usage message

-H hostname Hostname to connect to

"""

字符串是怎么访问的?请看这个例子:

word="abcdefg"

a=word[2]

print "a is: "+a

b=word[1:3]

print "b is: "+b # index 1 and 2 elements of word.

c=word[:2]

print "c is: "+c # index 0 and 1 elements of word.

d=word[0:]

print "d is: "+d # All elements of word.

e=word[:2]+word[2:]

print "e is: "+e # All elements of word.

f=word[-1]

print "f is: "+f # The last elements of word.

g=word[-4:-2]

print "g is: "+g # index 3 and 4 elements of word.

h=word[-2:]

print "h is: "+h # The last two elements.

i=word[:-2]

print "i is: "+i # Everything except the last two characters

l=len(word)

print "Length of word is: "+ str(l)

请注意ASCII和UNICODE字符串的区别:

print "Input your Chinese name:"

s=raw_input("Press enter to be continued");

print "Your name is : " +s;

l=len(s)

print "Length of your Chinese name in asc codes is:"+str(l);

a=unicode(s,"GBK")

l=len(a)

print "I'm sorry we should use unicode char!Characters number of your Chinese

name in unicode is:"+str(l);

2.5 使用List

类似Java里的List,这是一种方便易用的数据类型:

word=['a','b','c','d','e','f','g']

a=word[2]

print "a is: "+a

b=word[1:3]

print "b is: "

print b # index 1 and 2 elements of word.

c=word[:2]

print "c is: "

print c # index 0 and 1 elements of word.

d=word[0:]

print "d is: "

print d # All elements of word.

e=word[:2]+word[2:]

print "e is: "

print e # All elements of word.

f=word[-1]

print "f is: "

print f # The last elements of word.

g=word[-4:-2]

print "g is: "

print g # index 3 and 4 elements of word.

h=word[-2:]

print "h is: "

print h # The last two elements.

i=word[:-2]

print "i is: "

print i # Everything except the last two characters

l=len(word)

print "Length of word is: "+ str(l)

print "Adds new element"

('h')

print word

2.6 条件和循环语句

# Multi-way decision

x=int(raw_input("Please enter an integer:"))

if x<0:

x=0

print "Negative changed to zero"

elif x==0:

print "Zero"

else:

print "More"

# Loops List

a = ['cat', 'window', 'defenestrate']

for x in a:

print x, len(x)

2.7 如何定义函数

# Define and invoke function.

def sum(a,b):

return a+b

func = sum

r = func(5,6)

print r

# Defines function with default argument

def add(a,b=2):

return a+b

r=add(1)

print r

r=add(1,5)

print r

并且,介绍一个方便好用的函数:

# The range() function

a =range(5,10)

print a

a = range(-2,-7)

print a

a = range(-7,-2)

print a

a = range(-2,-11,-3) # The 3rd parameter stands for step

print a

2.8 文件I/O

spath="D:/download/"

f=open(spath,"w") # Opens file for s this file doesn't exist.

("First line 1.n")

ines("First line 2.")

()

f=open(spath,"r") # Opens file for reading

for line in f:

print line

()

2.9 异常处理

s=raw_input("Input your age:")

if s =="":

raise Exception("Input must no be empty.")

try:

i=int(s)

except ValueError:

print "Could not convert data to an integer."

except:

print "Unknown exception!"

else: # It is useful for code that must be executed if the try clause does not raise an

exception

print "You are %d" % i," years old"

finally: # Clean up action

print "Goodbye!"

2.10 类和继承

class Base:

def __init__(self):

= []

def add(self, x):

(x)

def addtwice(self, x):

(x)

(x)

# Child extends Base

class Child(Base):

def plus(self,a,b):

return a+b

oChild =Child()

("str1")

print

print (2,3)

2.11 包机制

每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子:

#

def add_func(a,b):

return a+b

#

from a import add_func # Also can be : import a

print "Import add_func from module a"

print "Result of 1 plus 2 is: "

print add_func(1,2) # If using "import a" , then here should be "_func"

module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个

parent文件夹,该文件夹有一个child子文件夹.child中有一个module . 如何让

Python知道这个文件层次结构?很简单,每个目录都放一个名为_init_.py 的文件.该文

件内容可以为空.这个层次结构如下所示:

parent

--__init_.py

--child

-- __init_.py

--

那么Python如何找到我们定义的module?在标准包sys中,path属性记录了

Python的包路径.你可以将之打印出来:

import sys

print

通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自

动添加到属性.另一种方便的方法是编程中直接指定我们的module路径到

中:

import sys

('D:download')

from .a import add_func

print

print "Import add_func from module a"

print "Result of 1 plus 2 is: "

print add_func(1,2)

总结

你会发现这个教程相当的简单.许多Python特性在代码中以隐含方式提出,这些

特性包括:Python不需要显式声明数据类型,关键字说明,字符串函数的解释等等.我认

为一个熟练的程序员应该对这些概念相当了解,这样在你挤出宝贵的一小时阅读这篇

短短的教程之后,你能够通过已有知识的迁移类比尽快熟悉Python,然后尽快能用它

开始编程.


本文标签: 学习 命令 文件 语言 开发