Python入门教程 超详细小时学会Python.docx

上传人:b****5 文档编号:28502771 上传时间:2023-07-16 格式:DOCX 页数:12 大小:19.85KB
下载 相关 举报
Python入门教程 超详细小时学会Python.docx_第1页
第1页 / 共12页
Python入门教程 超详细小时学会Python.docx_第2页
第2页 / 共12页
Python入门教程 超详细小时学会Python.docx_第3页
第3页 / 共12页
Python入门教程 超详细小时学会Python.docx_第4页
第4页 / 共12页
Python入门教程 超详细小时学会Python.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Python入门教程 超详细小时学会Python.docx

《Python入门教程 超详细小时学会Python.docx》由会员分享,可在线阅读,更多相关《Python入门教程 超详细小时学会Python.docx(12页珍藏版)》请在冰豆网上搜索。

Python入门教程 超详细小时学会Python.docx

Python入门教程超详细小时学会Python

Python入门教程超详细1小时学会Python

为什么使用Python

?

?

?

思路:

用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用pingip的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Replyfrom..."而不通的时候文本是"timeout...",所以,在结果中进行字符串查找,即可知道该机器是否连通.

?

?

?

实现:

Java代码如下:

String?

cmd="cmd.exe?

ping?

";

int?

begin=101;

int?

end=200;

Process?

p=null;

for(int?

i=begin;i

?

?

?

?

?

p=?

Runtime.getRuntime().exec(cmd+i);

?

?

?

?

?

String?

line?

=?

null;

?

?

?

?

?

BufferedReader?

reader?

=?

new?

BufferedReader(new?

InputStreamReader(p.getInputStream()));

?

?

?

?

?

while((line?

=?

reader.readLine())?

!

=?

null)

?

?

?

?

?

{

?

?

?

?

?

?

?

?

?

//Handling?

line?

?

may?

logs?

it.

?

?

?

?

?

}

?

?

?

?

reader.close();

?

?

?

?

p.destroy();

}

?

?

?

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

1.编写一个类文件

2.编写一个main方法

3.将之编译成字节代码

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

?

?

?

当然,用C/C++同样能完成这项工作.但C/C++不是跨平台语言.在这个足够简单的例子中也许看不出C/C++和Java实现的区别,但在一些更为复杂的场景,比如要将连通与否的信息记录到网络数据库.由于Linux和Windows的网络接口实现方式不同,你不得不写两个函数的版本.用Java就没有这样的顾虑.

?

?

?

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

import?

subprocess

cmd="cmd.exe"

begin=101

end=200

while?

begin

?

?

?

?

p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

stdin=subprocess.PIPE,

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

stderr=subprocess.PIPE)

?

?

?

?

?

p.wait()

?

?

?

对比Java,Python的实现更为简洁,你编写的时间更快.你不需要写main函数,并且这个程序保存之后可以直接运行.另外,和Java一样,Python也是跨平台的.

?

?

?

有经验的C/Java程序员可能会争论说用C/Java写会比Python写得快.这个观点见仁见智.我的想法是当你同时掌握Java和Python之后,你会发现用Python写这类程序的速度会比Java快上许多.例如操作本地文件时你仅需要一行代码而不需要Java的许多流包装类.各种语言有其天然的适合的应用范围.用Python处理一些简短程序类似与操作系统的交互编程工作最省时省力.

Python应用场合

?

?

?

足够简单的任务,例如一些shell编程.如果你喜欢用Python设计大型商业网站或者设计复杂的游戏,悉听尊便.

2快速入门

2.1Helloworld

print?

"Hello,world!

"

?

?

?

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

?

?

?

在解释器中选择"File"--"NewWindow"或快捷键Ctrl+N,打开一个新的编辑器.写下如下语句:

print?

"Hello,world!

"

raw_input("Press?

enter?

key?

to?

close?

this?

window

");

?

?

?

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

?

?

?

找到你保存的a.py文件,双击.也可以看到程序结果.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

"

word.append('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/baa.txt"

f=open(spath,"w")?

#?

Opens?

file?

for?

writing.Creates?

this?

file?

doesn't?

exist.

f.write("First?

line?

1.\n")

f.writelines("First?

line?

2.")

f.close()

f=open(spath,"r")?

#?

Opens?

file?

for?

reading

for?

line?

in?

f:

?

?

?

?

print?

line

f.close()

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):

?

?

?

?

?

?

?

?

self.data?

=?

[]

?

?

?

?

def?

add(self,?

x):

?

?

?

?

def?

addtwice(self,?

x):

?

?

?

?

?

?

?

?

self.add(x)

?

?

?

?

?

?

?

?

self.add(x)

#?

Child?

extends?

Base

class?

Child(Base):

?

?

?

?

def?

plus(self,a,b):

?

?

?

?

?

?

?

?

return?

a+b

oChild?

=Child()

oChild.add("str1")

print?

oChild.data

print?

oChild.plus(2,3)

2.11包机制

?

?

?

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

#?

a.py

def?

add_func(a,b):

?

?

?

?

return?

a+b

#?

b.py

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?

"a.add_func"

?

?

?

module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个modulea.py.如何让Python知道这个文件层次结构很简单,每个目录都放一个名为_init_.py的文件.该文件内容可以为空.这个层次结构如下所示:

parent?

?

?

--__init_.py

?

?

--child

?

?

?

?

--?

__init_.py

?

?

?

?

--a.py

b.py

?

?

?

那么Python如何找到我们定义的module在标准包sys中,path属性记录了Python的包路径.你可以将之打印出来:

import?

sys

print?

sys.path

?

?

?

通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们的module路径到sys.path中:

mport?

add_func

print?

sys.path

print?

"Import?

add_func?

from?

module?

a"

print?

"Result?

of?

1?

plus?

2?

is:

?

"

print?

add_func(1,2)

总结

?

?

?

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

Python不需要显式声明数据类型,关键字说明,字符串函数的解释等等.我认为一个熟练的程序员应该对这些概念相当了解,这样在你挤出宝贵的一小时阅读这篇短短的教程之后,你能够通过已有知识的迁移类比尽快熟悉Python,然后尽快能用它开始编程.

?

?

?

当然,1小时学会Python颇有哗众取宠之嫌.确切的说,编程语言包括语法和标准库.语法相当于武术招式,而标准库应用实践经验则类似于内功,需要长期锻炼.Python学习了Java的长处,提供了大量极方便易用的标准库供程序员"拿来主义".(这也是Python成功的原因),在开篇我们看到了Python如何调用Windowscmd的例子,以后我会尽量写上各标准库的用法和一些应用技巧,让大家真正掌握Python.

?

?

?

但不管怎样,至少你现在会用Python代替繁琐的批处理写程序了.希望那些真的能在一小时内读完本文并开始使用Python的程序员会喜欢这篇小文章,谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1