Python入门教程 超详细1小时学会Python精编版
- 格式:docx
- 大小:31.40 KB
- 文档页数:14
编程语⾔python⼊门-Python基础教程,Python⼊门教程(⾮常详细)Python 英⽂本意为"蟒蛇”,直到 1989 年荷兰⼈ Guido van Rossum (简称 Guido)发明了⼀种⾯向对象的解释型编程语⾔(后续会介绍),并将其命名为 Python,才赋予了它表⽰⼀门编程语⾔的含义。
图 1 Python 图标说道 Python,它的诞⽣是极具戏曲性的,据 Guido 的⾃述记载,Python 语⾔是他在圣诞节期间为了打发时间开发出来的,之所以会选择Python 作为该编程语⾔的名字,是因为 Guido 是⼀个叫 Monty Python 戏剧团体的忠实粉丝。
看似 Python 是"不经意间”开发出来的,但丝毫不⽐其它编程语⾔差。
⾃ 1991 年 Python 第⼀个公开发⾏版问世后,2004 年 Python 的使⽤率呈线性增长,不断受到编程者的欢迎和喜爱;2010 年,Python 荣膺 TIOBE 2010 年度语⾔桂冠;2017 年,IEEE Spectrum 发布的 2017 年度编程语⾔排⾏榜中,Python 位居第 1 位。
直⾄现在(2019 年 6 ⽉份),根据 TIOBE 排⾏榜的显⽰,Python 也居于第 3 位,且有继续提升的态势(如表 2 所⽰)。
表 2 TIOBE 2019 年 6 ⽉份编程语⾔排⾏榜(前 10 名)Jun 2019Jun 2018ChangeProgramming LanguageRatings11Java15.004%22C13.300%34Python8.530%43C++7.384%56Visual Basic .NET4.624%654.483%872.567%99SQL2.224%1016Assembly language1.479%Python语⾔的特点相⽐其它编程语⾔,Python 具有以下特点。
一小时掌握Python编程Python是一种高级编程语言,被广泛应用于各种领域,如数据科学、机器学习、网络编程等。
由于其语法简单、易于上手,Python成了许多初学者学习编程的首选语言。
本文将带您一小时掌握Python编程,并按照不同的主题进行分类,让您对Python的各个方面有一个全面的了解。
第一章:Python的基础知识1.1 Python的安装和环境配置- 下载和安装Python的最新版本- 配置Python的环境变量1.2 Python的基本语法- 变量和数据类型- 运算符和表达式- 条件语句和循环语句- 函数的定义和调用1.3 Python的常用库介绍- NumPy:用于科学计算和数值操作- Pandas:用于数据处理和分析- Matplotlib:用于数据可视化- Scikit-learn:用于机器学习第二章:Python的数据处理和分析2.1 数据读取和清洗- 读取各种格式的数据:文本文件、Excel文件、数据库等 - 缺失值和异常值的处理2.2 数据筛选和变换- 使用条件筛选数据- 数据透视表的生成- 数据分组和聚合2.3 数据可视化- 折线图、柱状图、散点图等的绘制- 标签和图例的添加第三章:Python的机器学习应用3.1 机器学习算法的介绍- 监督学习和无监督学习的区别- 常见的机器学习算法:线性回归、逻辑回归、决策树、随机森林等3.2 数据预处理- 特征选择和特征缩放- 数据的标准化和归一化3.3 模型的训练和评估- 将数据划分为训练集和测试集- 使用不同的评估指标评估模型的性能第四章:Python的网络编程4.1 网络编程的基本概念- IP地址和端口号的理解- TCP和UDP协议的区别4.2 套接字编程- 建立客户端和服务器的连接- 发送和接收数据4.3 网络爬虫的实现- 使用爬虫框架Scrapy进行数据的抓取- 解析和存储抓取到的数据第五章:Python在Web开发中的应用5.1 Web开发的基本知识- HTTP协议和URL的理解- 前端和后端的区别5.2 使用Flask搭建Web应用- 设置路由和视图函数- 渲染模板和处理表单5.3 数据库的应用- 使用SQLAlchemy进行数据库的操作- 实现用户注册和登录功能通过本文的学习,您可以掌握Python编程的基础知识、数据处理和分析、机器学习、网络编程以及Web开发等方面的内容。
Python入门到精通重要说明这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,Shell等.总之,这是面向老鸟的,让老鸟快速上手Python教程.为什么总结这样的一个教程我虽不是老鸟,但已熟悉Java,C/C++, Shell和Perl,且对常见的数据结构和算法等都了解.最近因项目需要,要做一个小工具,评估后感觉用Python实现最为方便,于是就有了对Python的学习.这时就需要一门快速上手Python的教程:因为编程语言的基本知识,以及如何实现程序对我来说不是难事,关键的就是如何具体使用Python语句来体现程序的逻辑!Python的书籍对我来说内容太多了,没有时间去看,查找也不是很容易!网上的资料又太零散,这就需要一个快速入门Python的教程.这里重点是以对比的方式来说明Python与其语言的不同之处,和一些Python特有的特性,以最快速度能用Python写程序.Python是一门动态语言与Java,C等相对,Python不用编译,像脚本一样直接运行.这就导致了,所有错误都是运行时的!即使有语法错误,或者异常,如果程序逻辑没有执行到,就不会有错误.比如一个if分支中有语法错误,使用了未定义的函数,但如果未执行到此分支,就可以正常运行.动态的另外一层意思就是它的类型是动态的,也就是说无需指定变量的类型,在运行时,根据它的内容来决定的类型.如何运行Python通常来讲有二种方式,一种方式是交互式的,就像Shell命令行提示符那样,交互式的,输入,就有输出;在终端输入python命令,就进入了Python的命令提示符中:>>>输入Python语句,解释器就会执行,并输出结果,如:[python]view plain copy print?1.[alex@alexon:~]$python2.Python 2.7.3 (default, Apr 10 2013, 06:20:15)3.[GCC4.6.3] on linux24.Type "help", "copyright", "credits"or"license"for more information.5.>>> print'hello, world'6.hello, world7.>>>输入exit()可以退出命令提示符.另外一种方式就是脚本,就像Shell的脚本的一样,把一组命令集合到一起执行,这就能发挥更大的作用.[python]view plain copy print?1.#!/usr/bin/python2.print'hello, world'Python以缩进来区分语句块不像Java,C/C++以花括号{}来区分语句块.Python是以缩进来表示语句块,同一缩进级别为同一级别的语句块.一个脚本文件中的0级缩进是文件加载的时候就会被执行的语句,如上面的print.开启一个新的缩进需要使用:(冒号),代表下一级别的语句块,如条件,循环或者函数定义.缩进最好使用四个空格.而且要注意缩进要一致,使用空格就全都用空格,使用Tab就都使用Tab,混用就可能得到缩进错误:IndentationError: unindent does not match any outer indentation level 操作符与Java和C中十分类似, +(加), -(减), *(乘), /(除), %(求余), **(指数运算), = (赋值).以及减便运算,如 +=, -=, *=和/= 等.赋值运算与其他语言一致.逻辑操作> < <= >= != ==与其他语言一样.不一样的有not逻辑非,and逻辑与和or逻辑或.注释与文档一行当中,从#开始地方就是注释.不会影响下一行.""引号放在文件的开头,函数的开头或者一个类的开头,就是文档注释,与Java 中的/** ... */作用和目的是一样的.折行如果一行太长了,写不下了,就需要在下一行接着写,这时可以使用\来告诉Python,下一行继续.一行写多个语句Python是一个语句放在一行,行尾可以选择性的加上;但如果想在一行放多个语句,就需要用;来分隔语句:a = 1;b = 2;c = 3;虽然这在语法上可行,但不是一个好习惯,绝大多数的编程规范都是要一行写一个语句.基本数据类型intlongboolfloat与Java中非常接近.可以近似认为一致.bool的值是True和False,或者0(False),非0就是True.List和Tuple这就是Java或C中的数组.它是一个容器,能用来顺序的,以整数索引方式检索, 存储一组对象.List用[]来表示,如[1, 2, 3]就是一个List;而Tuple用()来表示,如(3, 4, 5)就是一个Tuple.它们的区别在于List是可变的;而Tuple是不可变的.也就是说不可以增,删和改.索引方式除了与Java一样的以一个整数下标方式外,还可以指定开始,结束和步长,和使用负索引来分割List:通用语法格式是:list[start:end:step]•list[index] --- 返回第(index+1)个元素,受C语言影响,下标亦是从0开始•list[start:end] --- 返回从start开始,到end-1,也就是list[start], list[start+1].....list[end-1]•list[start:end:step] --- 与上面类似,只不过每隔step取一个•list[:end] ---- 缺省的开端是0•list[start:] ---- 缺省的结尾是len(list),或者-1负数索引更是方便,它与正数的对应关系为:正数索引 0 1 2 3数组元素[1] [3] [5] [7]负数索引-4 -3 -2 -1实例:[python]view plain copy print?1.>>> a = [1, 3, 5, 7];2.>>> a[0]3. 14.>>> a[3]5.76.>>> a[-1]7.78.>>> a[-2]9. 510.>>> a[0:3]11.[1, 3, 5]12.>>> a[1:3:2]13.[3]14.>>> a[0:3:2]15.[1, 5]16.>>> a[0:-1:2]17.[1, 5]18.>>>List是一个对象,它有一此内置的方法,如:•包含关系: in, not in[python]view plain copy print?1.>>> 3 in a2.True3.>>> 8 in a4.False5.>>> 8 not in a6.True7.>>>•连接符: +[python]view plain copy print?1.>>> a + [9, 11]2.[1, 3, 5, 7, 9, 11]•重复: *[python]view plain copy print?1.>>> a * 22.[1, 3, 5, 7, 1, 3, 5, 7]3.>>>字符串String字符串就是一个字符的数组,List的操作都可以对String直接使用.[python]view plain copy print?1.>>> str = 'hello, world'2.>>> str[0:3]3.'hel'4.>>> str[0:3:2]5.'hl'6.>>> str[-1]7.'d'8.>>> str * 29.'hello, worldhello, world'10.>>> '3'in str11.False12.>>> 'le'in str13.False14.>>> 'el'in str15.True16.>>> 'ell'not in str17.False18.>>>字串格式化符%这是一个类似C语言printf和Java中的String.format()的操作符,它能格式化字串,整数,浮点等类型:语句是:formats % (var1, var2,....)它返回的是一个String.[python]view plain copy print?1.>>> "Int %d, Float %d, String '%s'"% (5, 2.3, 'hello')2."Int 5, Float 2, String 'hello'"3.>>>Dictionary字典相当于Java中的HashMap,用于以Key/Value方式存储的容器.创建方式为{key1: value1, key2: value2, ....}, 更改方式为dict[key] = new_value;索引方式为dict[key]. dict.keys()方法以List形式返回容器中所有的Key;dict.values()以List方式返回容器中的所有的Value:[python]view plain copy print?1.>>> box = {'fruits': ['apple','orange'], 'money': 1993, 'name': 'obama'}2.>>> box['fruits']3.['apple', 'orange']4.>>> box['money']5.19936.>>> box['money'] = 293937.>>> box['money']8.293939.>>> box['nation'] = 'USA'10.>>> box11.{'money': 29393, 'nation': 'USA', 'name': 'obama', 'fruits': ['apple', 'orange']}12.>>> box.keys()13.['money', 'nation', 'name', 'fruits']14.>>> box.values()15.[29393, 'USA', 'obama', ['apple', 'orange']]16.>>>分支语句格式为:[python]view plain copy print?1.if expression:2.blocks;3.elif expression2:4.blocks;5.else:6.blocks;其中逻辑表达式可以加上括号(),也可以不加.但如果表达式里面比较混乱,还是要加上括号,以提高清晰.但整体的逻辑表达式是可以不加的:[python]view plain copy print?1.>>> a = 3; b = 4; c = 5;2.>>> if a == b and a != c:3.... print"Are you sure"4.... elif(a == c and b == c):5.... print"All equal"6.... else:7.... print"I am not sure"8....9.I am not sure10.>>>while循环与Java中类似:while expression:blocks[python]view plain copy print?1.>>> i = 0;2.>>> while i < 3:3.... print"I am repeating";4.... i += 1;5....6.I am repeating7.I am repeating8.I am repeating9.>>>for语句与Java中的foreach语法一样, 遍历List:for var in list:blocks;[python]view plain copy print?1.>>> msg = "Hello";2.>>> for c in msg:3.... print c;4....5.H6. e7.l8.l9.o10.>>>数组推导这是Python最强大,也是最性感的功能:list = [expression for var in list condition] 它相当于这样的逻辑:list = [];for var in list:if condition:execute expression;add result of expression to list return list;一句话,相当于这么多逻辑,可见数组推导是一个十分强大的功能: [python]view plain copy print?1.>>> a = range(4);2.>>> a3.[0, 1, 2, 3]4.>>> [x*x for x in a if x % 2 == 0]5.[0, 4]6.>>>遍历列表a,对其是偶数的项,乘方.函数如何定义函数def function_name(args):function_body;调用函数的方式function_name(formal_args):[python]view plain copy print?1.>>> def power(x):2.... return x*x;3....4.>>> power(4)5.166.>>>Python中函数也是一个对象,可以赋值,可以拷贝,可以像普通变量那样使用.其实可以理解为C语言中的指针:[python]view plain copy print?1.<pre name="code"class="python">>>> d = power;2.>>> d(2)3.4</pre>4.<pre></pre>另外就是匿名函数,或者叫做lambda函数,它没有名字,只有参数和表达式: lambda args: expression[python]view plain copy print?1.>>> d = lambda x: x*x;2.>>> d(2)3. 4lambda最大的用处是用作实参:[python]view plain copy print?1.>>> def iter(func, list):2.... ret = [];3.... for var in list:4.... ret.append(func(var));5.... return ret;6....7.>>> iter(lambda x: x*x, a)8.[0, 1, 4, 9]9.>>>一些常用的内置函数所谓内置函数,就是不用任何导入,语言本身就支持的函数:•print --- 打印输出print var1, var2, var3[python]view plain copy print?1.>>> a2.[0, 1, 2, 3]3.>>> d4.<function <lambda> at 0x7f668c015140>5.>>> print a, d6.[0, 1, 2, 3] <function <lambda> at0x7f668c015140>7.>>>print与%结合更为强大:print formats % (var1,var2, ...):[python]viewplain copy print?1.>>> print"today is %d,welcome %s"% (2013, 'alex');2.today is2013, welcome alex3.>>>其实这没什么神秘的,前面提到过%格式化返回是一个字串,所以print仅是输出字串而已,格式化工作是由%来做的.•len()---返回列表,字串的长度•range([start], stop, [step]) --- 生成一个整数列表,从,start开始,到stop结束,以step为步长[python]view plain copy print?1.>>> range(4)2.[0, 1, 2, 3]3.>>> range(1,4)4.[1, 2, 3]5.>>> range(1,4,2)6.[1, 3]7.>>>•help(func)---获取某个函数的帮助文档.执行系统命令行命令import subprocess;•check_call(commands, shell=True)可以执行一个命令,并检查结果: [python]view plain copy print?1.>>> check_call("ls -l .", shell=True);2.total 3803.-rw-r--r-- 1 alex alex 303137 Jun 28 23:25 00005.vcf4.drwxrwxr-x 3 alex alex 4096 Jun 28 23:57 3730996syntheticseismogram5.-rw-rw-r-- 1 alex alex 1127 Jun 28 23:45 contacts.txt6.-rw-rw-r-- 1 alex alex 3349 Jun 29 00:19 contacts_vcard.vcf7.drwxr-xr-x 2 alex alex 4096 Jun 15 18:43 Desktop8.drwxr-xr-x 3 alex alex 4096 Jun 22 08:59 Documents9.drwxr-xr-x 9 alex alex 4096 Jul 3 20:34 Downloads10.-rw-r--r-- 1 alex alex 8445 Jun 15 18:17examples.desktop11.drwxrwxr-x 5 alex alex 4096 Jun 19 23:01gitting12.-rw-rw-r-- 1 alex alex 0 Jun 19 20:21 libpeerconnection.log13.drwxr-xr-x 2 alex alex 4096 Jun 15 18:43Music14.-rw-rw-r-- 1 alex alex 148 Jul 4 22:46 persons.txt15.drwxr-xr-x 3 alex alex 4096 Jul 4 23:08 Pictures16.drwxr-xr-x 2 alex alex 4096 Jun 15 18:43Public17.-rw-rw-r-- 1 alex alex 65 Jul 8 22:15 py.py18.-rw-rw-r-- 1 alex alex 271 Jul 4 21:28 speech.txt19.-rw-rw-r-- 1 alex alex 93 Jul 3 23:02 speech.txt.bak20.drwxr-xr-x 2 alex alex 4096 Jun 15 18:43Templates21.drwxrwxr-x 2 alex alex 4096 Jun 22 19:01Ubuntu One22.drwxr-xr-x 2 alex alex 4096 Jun 15 18:43Videos23.024.>>>check_call是相当于在Shell上执行一个语句,所以可以发挥想像力,组合Shell命令:[python]view plain copy print?1.>>> check_call("ls -l . | grep 'py'", shell=True);2.-rw-rw-r-- 1 alex alex 65 Jul 8 22:15 py.py3.04.>>>所以,这是相当强大的工具,可以像写Shell脚本那样,结合管道干一些大事!•check_output(cmds, shell=True)执行命令,并以字串形式返回结果: [python]view plain copy print?1.>>> a = check_output("ls -l .", shell=True);2.>>> a3.'total 380\n-rw-r--r-- 1 alex alex 303137 Jun28 23:25 00005.vcf\ndrwxrwxr-x 3 alex alex 4096 Jun 28 23:57 3730996syntheticseismogram\n-rw-rw-r-- 1 alex alex 1127 Jun 28 23:45 contacts.txt\n-rw-rw-r-- 1 alex alex 3349 Jun 29 00:19 contacts_vcard.vcf\ndrwxr-xr-x 2 alex alex4096 Jun 15 18:43 Desktop\ndrwxr-xr-x 3 alexalex 4096 Jun 22 08:59 Documents\ndrwxr-xr-x 9 alex alex 4096 Jul 3 20:34 Downloads\n-rw-r--r-- 1 alex alex 8445 Jun 15 18:17 examples.desktop\ndrwxrwxr-x 5 alex alex 4096 Jun 19 23:01 gitting\n-rw-rw-r-- 1 alex alex 0 Jun 19 20:21 libpeerconnection.log\ndrwxr-xr-x 2 alexalex 4096 Jun 15 18:43 Music\n-rw-rw-r-- 1 alex alex 148 Jul 4 22:46 persons.txt\ndrwxr-xr-x 3 alex alex 4096 Jul 4 23:08 Pictures\ndrwxr-xr-x 2 alex alex 4096 Jun 15 18:43 Public\n-rw-rw-r-- 1 alex alex 65 Jul 8 22:15 py.py\n-rw-rw-r-- 1 alex alex 271 Jul 4 21:28speech.txt\n-rw-rw-r-- 1 alex alex 93 Jul 3 23:02 speech.txt.bak\ndrwxr-xr-x 2 alex alex 4096 Jun 15 18:43 Templates\ndrwxrwxr-x 2 alex alex 4096 Jun 22 19:01 Ubuntu One\ndrwxr-xr-x2 alex alex 4096 Jun 15 18:43 Videos\n'4.>>> b = check_output("ls -l . | grep 'py'",shell=True);5.>>> b6.'-rw-rw-r-- 1 alex alex 65 Jul 8 22:15 py.py\n'7.>>>不用我说你就知道它的强大之处了!唯一需要注意的就是换行符也在里面,处理的时候需要注意!正则表达式Python也是支持正则表达式的,至于正则表达式,跟其他的语言如Java,C没什么差别,这里说说如何使用正则表达式来进行匹配:[python]view plain copy print?1.import re;2.p = pile(expression);3.m = p.search(target);4.if m != None:5.# got match6.else:7.# no match如:[python]view plain copy print?1.>>> message = 'Welcome to the year of 2013';2.>>> import re;3.>>> p = pile('(\d+)');4.>>> m = p.search(message);5.>>> m6.<_sre.SRE_Match object at 0x7f668c015300>7.>>> print m.group(1)8.20139.>>>这些就是Python的入门基础知识, 了解了这些内容,我相信就可以使用Python 来完成你的需要,比如写一些小工具之类的.对于大部分的日常工作,或者一些小工具来说,这些东西就足够了!但是如果想学会Python,或者想学好Python,这才是一个小小的开端,最好读一读<Python核心编程>这本书,相当的不错.推荐资料:•Learn Python the Hard Way这是一个相当好的网站.它的最大优点在于以实例为核心来讲解.缺点就是讲的不是很深入,非常适合入门汉.•<Core Python Programming>这本书相当的好,内容详细,且有练习题可以做•Coding Bat这上面有很多Python的练习题,很多都是关于String和List 的,非常适合初学者练手•Python for fun这上面有很多小型的项目.可以用来练习.阅读使人快乐,成长需要时间111 123489147 127111 1234 189156。
python入门基础课件文档认领汇报人:2023-11-30•Python基础概念•Python数据类型与变量•Python控制结构•Python函数与模块目•Python文件操作•Python异常处理与调试录Python基础概念Python的简介Python的起源和历史背景01Python的特点和优势02Python的应用领域031 2 3Python的安装方式Python环境变量的配置选择合适的IDEPython的安装与配置控制结构变量和数据类型函数和模块常用内置函数异常处理Python的语法规则Python数据类型与变量变量定义变量使用变量的定义与使用整型(int)浮点型(float)数字类型(整型、浮点型等)字符串有许多可用的操作,如拼接、切片、查找、替换等。
字符串类型(文本数据)字符串操作字符串定义布尔类型(真/假)•布尔类型定义:布尔类型只有两个值,True(真)和False(假)。
布尔类型常用于条件判断和循环控制。
Python控制结构总结词条件语句是Python中用于实现条件判断的基本结构,根据条件的结果来执行相应的代码块。
详细描述条件语句由关键字if和要判断的条件表达式组成,根据条件表达式的值来决定是否执行相应的代码块。
条件语句可以包含多个条件,每个条件之间用逗号分隔,当满足其中一个条件时,就会执行相应的代码块。
详细描述循环控制语句(break/continue)总结词循环控制语句是Python中用于控制循环流程的基本结构,通过break和continue关键字来实现循环的跳转和终止。
详细描述break语句用于终止当前循环,跳出整个循环体;continue语句用于跳过当前循环的剩余代码,继续下一次循环。
Python函数与模块函数的定义与调用函数定义函数调用位置参数默认值参数可变数量参数030201函数的参数传递导入模块使用模块模块别名导入模块中的特定部分模块的导入与使用Python文件操作打开文件使用Python内置的open()函数打开文件,指定文件路径和打开模式。
第五单元进阶程序设计(总10课时)第一节选择编程语言(1课时)一、教学目标1、了解程序设计语言和两种翻译方式;2、了解Python背景、功能、安装,熟悉Python编程环境;3、编程初体验。
体验一个小程序从建立、输入、调试、运行、保存的全过程。
掌握Turtle模块的调用,并尝试修改Turtle图案属性。
二、重点难点教学重点:熟悉Python 编程环境;编程初体验教学难点:编程初体验;程序的书写规范和调试窗口的使用。
三、教学过程(一)认识Python语言1、Python语言Python在英文中的意思是“蟒蛇”,这个语言的标识就是两只缠绕的蟒蛇。
Python语言的应用范围非常广泛。
例如,它可以用在游戏开发中;电影中的3D渲染也会用到Python语言;互联网中Python语言的声音更是无处不在,谷歌、豆瓣和知乎等网站都是使用Python语言搭建。
Python语言是著名的Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
Guido van Rossum从2005年开始就只于谷歌公司,在谷歌以及编程社区的大力支持下,Python也迎来了大发展。
2、启动Python3、Python开发环境(二)编程初体验——我的第一个Python程序chengxu1.py代码:import turtle #调用turtle模块a1=turtle.Turtle() #窗口中显示一只海龟,并给他命名为“a1”关于程序的书写:①Python语言是区分大小写的,比如此处的Turtle()中的T要大写;②Python语言中的字母和符号只能是半角英文符号;(三)实践与思考1、把a1.shape("")语句添加在chengxu1.py程序的后面:提示:请你每次在""中输入以下不同的内容:square、circle、arrow、turtle,然后,保存并运行程序,观察每次的运行结果。
Python入门教程超详细1小时学会Python为什么使用Python假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200.思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windo ws上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通.实现:Java代码如下:String cmd="cmd.exe ping ";String ipprefix="192.168.10.";int begin=101;int end=200;Process p=null;for(int i=begin;i<end;i++){p= Runtime.getRuntime().exec(cmd+i);String line = null;BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputSt ream()));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 subprocesscmd="cmd.exe"begin=101end=200while begin<end:p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)p.stdin.write("ping 192.168.1."+str(begin)+"\n")p.stdin.close()p.wait()print "execution result: %s"%p.stdout.read()对比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) , 该程序是P ython语言解释器,你写的语句能够立即运行.我们写下一句著名的程序语句:print "Hello,world!"并按回车.你就能看到这句被K&R引入到程序世界的名言.在解释器中选择"File"--"New Window" 或快捷键 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.0b=201.1c=2343print (a+b+c)/c2.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: "+ab=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: "+ab=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 word2.6 条件和循环语句# Multi-way decisionx=int(raw_input("Please enter an integer:"))if x<0:x=0print "Negative changed to zero"elif x==0:print "Zero"print "More"# Loops Lista = ['cat', 'window', 'defenestrate']for x in a:print x, len(x)2.7 如何定义函数# Define and invoke function.def sum(a,b):return a+bfunc = sumr = func(5,6)print r# Defines function with default argument def add(a,b=2):return a+br=add(1)print rr=add(1,5)print r并且,介绍一个方便好用的函数:# The range() functiona =range(5,10)a = range(-2,-7)print aa = range(-7,-2)print aa = range(-2,-11,-3) # The 3rd parameter stands for stepprint a2.8 文件I/Ospath="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 readingfor line in f:print linef.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 n ot raise an exceptionprint "You are %d" % i," years old"finally: # Clean up actionprint "Goodbye!"2.10 类和继承class Base:def __init__(self):self.data = []def add(self, x):self.data.append(x)def addtwice(self, x):self.add(x)self.add(x)# Child extends Baseclass Child(Base):def plus(self,a,b):return a+boChild =Child()oChild.add("str1")print oChild.dataprint oChild.plus(2,3)2.11 包机制每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子:# a.pydef add_func(a,b):return a+b# b.pyfrom a import add_func # Also can be : import aprint "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_fun c"module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个par ent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Pytho n知道这个文件层次结构?很简单,每个目录都放一个名为_init_.py 的文件.该文件内容可以为空.这个层次结构如下所示:parent--__init_.py--child-- __init_.py--a.pyb.py那么Python如何找到我们定义的module?在标准包sys中,path属性记录了Python 的包路径.你可以将之打印出来:import sysprint sys.path通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们的module路径到sys.path 中:import syssys.path.append('D:\\download')from parent.child.a import add_funcprint sys.pathprint "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如何调用Windows cmd的例子,以后我会尽量写上各标准库的用法和一些应用技巧,让大家真正掌握Python.但不管怎样,至少你现在会用Python代替繁琐的批处理写程序了.希望那些真的能在一小时内读完本文并开始使用Python的程序员会喜欢这篇小文章,谢谢!。