首页 后端开发 Python教程 Python完全新手教程

Python完全新手教程

Jun 16, 2016 am 08:47 AM

Python入门教程FROM:http://www.cnblogs.com/taowen/articles/11239.aspx作者:taowen, billrice
Lesson 1 准备好学习Python的环境
下载的地址是:
www.python.org
linux版本的我就不说了,因为如果你能够使用linux并安装好说明你可以一切自己搞定的。
运行环境可以是linux或者是windows:
1、linux
redhat的linux安装上去之后一定会有python的(必须的组件),在命令行中输入python回车。这样就可以进入一个
>>>的提示符
2、windows
安装好了python之后,在开始菜单里面找到Python2.3->IDLE,运行也会进入一个有
>>>提示符的窗口
开始尝试Python
1、输入:
welcome = "Hello!"
回车
然后又回到了>>>
2、输入:
print welcome
回车
然后就可以看到你自己输入的问候了。
Lesson 2 搞定环境之后的前行
Python有一个交互式的命令行,大家已经看到了吧。所以可以比较方便的学习和尝试,不用“新建-存档-编译-调试”,非常适合快速的尝试。
一开始从变量开始(其实说变量,更准确的是对象,Python中什么都可以理解为对象)。
变量
welcome = "hello!"
welcome就是变量名,字符串就是变量的类型,hello!就是变量的内容,""表示这个变量是字符串,""中间的是字符串的内容。
熟悉其他语言的人,特别是编译类型的语言,觉得没有变量的声明很奇怪。在python中用赋值来表示我要这么一个变量,即使你不知道要放什么内容,只是要先弄一个地方来放你的东西,也要这么写:
store = ""
不过这个还是说明了store是字符串,因为""的缘故。
have a try
tmp_storage = ""
welcome = "hello!"
tmp_storage = welcome
print tmp_storage 
你会发现同样的问候出现了。
字符串
字符串是用""标记的,但是用''也可以(不要说你看不出一个是双引号,一个是单引号),两者之间是有一丁点区别,不过你可以不用理会。其实是差不多的。字符串有很多自己的操作,最常用的是这样的:
welcome = "hello"
you = "world!"
print welcome+you 
运行之后就会发现她输出了helloworld!。
更多变量
变量还有几种类型。

字符串
列表
字典
文件
勿庸置疑,这些都是非常非常常用的。对于数字就不用讲了那就是:
radius = 10
pi = 3.14
area = pi*radius**2
print "the area is", area 
下次讲列表和字典
Lesson 3 Python中的数学结构
数学中你学什么东西最多遍?我想根据我的一点浅薄经验(虽然我是数学系的),学得最多的是集合,无论什么数学书都从集合开始讲起。然后讲函数呢,又必然把映射再讲一遍。可以说,集合和映射是数学中最基本的结构了。
Python对于数据结构非常明智的内置了两个,回想我写C的程序,往往是一开始就是用struct拼一个链表出来(重复劳动)。Python中提供了列表(list)和字典(dict)两种数据结构。他们分别对应的原型是集合和映射。这个你应该明白了,只是表示方法有一点不一样而已。
列表
列表的英文名是list嘛,所以我取一个名字叫
my_list = []
这个就产生了一个空的列表。然后给它赋值
my_list = [1,2]
print my_list
my_list.append(3)
print my_list 
非常容易明白的。append前面加了一个点,这个表示append是my_list方法。我实在不想又去给你解释什么是对象,什么是成员方法,然后扯出一大段出来。
list是可以索引的:
print my_list[1]
不过你或许会不明白为什么是2,而不是显示的是1。因为索引从0开始,要输出第一个元素:
print my_list[0]
字典
contact = {} 
这个产生了一个空字典,contact。然后往里面填充内容:
contact={}
contact["name"]="taowen"
contact["phone"]=68942443 
name就是你查字典的时候要查找的单词,taowen就是查到的内容。不过你现在不是查,而是在写这个字典。同理添加了phone这个词条。
现在添加好了,看看contact的内容,怎么查看?自己想办法吧。。。
如果你悟性够,就会发现python很多操作是通用的,既然能够print 1, print "", print my_list,那么其他数据类型的变量就没有理由不能用了。
结合列表和字典
contact_list=[]
contact1={}
contact1['name']='taowen'
contact1['phone']=68942443
contact_list.append(contact1)
contact2={}
contact2['name']='god'
contact2['phone']=44448888
contact_list.append(contact2) 
呵呵,够复杂的吧。你可以想出我为什么要用两个contact字典呢?。。。
Lesson 4 用不同的方式来操作Python
到现在为止,我们用的都是交互式的命令行来操作的,的却是很方便,是吧?不过,复杂一些的情况就不那么好使了,来换一种方式来操作Python
在 IDLE中点击File->New Window,出现一个新窗口(对于linux下,你要用vim或者emacs或者pico把文本的源文件写好了)。为了方便,先点击File-> Save,填入my_try.py。这样能够让编辑器知道在编辑python的源文件,会把你输入的代码进行一点上色的处理。
填入下面的代码:
i = 5
n = 0
while i>0:
    n = n + i
    i = i - 1
print n 
你 会发现输入:之后,自动会给缩进。而且也没有在python中发现和C/C++中类似的{}标记也没有pascal中的begin end;,其实缩进就是python中表示一段代码的从属关系的标记方法。表示n=n+1和i=i-1这两句都是while的。程序的运行逻辑应该不用解 释了吧。就是运行5+4+3+2+1的结果。
运行代码
按F5,可能提示你没有存盘,照着办就是了。
发挥你的能力,计算从1到10的所有偶数的和(提示,可能没有你想象的那么智能)。
Lesson 5 Python中的输入与判断
健全的程序大凡都需要输入的功能,所以要学习一下简单的输入:
输 入要使用的是raw_input或者input函数,区别是raw_input直接把你的输入作为字符串返回,而input则在raw_input的基础 上把字符串转换为数字返回(如果你输入$@#$$怎么办?自己试试看)。我们就利用这两个输入函数来作一些有趣的事情。
your_name = raw_input("please input your name:")
hint = "welcome! %s" % your_name
print hint 
不简单吧,还有%呢。%s表示在这个位置插入一个字符串,%表示把后面提供的参数“推”入前面的字符串中,所以推的结果是把%s推出去了,把your_name给填入那个地方了。printf知道吧,C中的printf就是一样的嘛。
inputed_num = 0
while 1:
    inputed_num = input("input a number between 1 and 10 ")
    if inputed_num >= 10:
        pass
    elif inputed_num         pass
    else:
        break
print "hehe, don't follow, won't out" 
pass就是pass了,过了嘛,什么都不干了。break就是跳出这个while 1(无穷循环,1总是真的,while总是执行)。是换行,不会全部忘光了吧。
Lesson 6 Python余兴节目
代码: [复制到剪贴板]   
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop() 
呵呵,一次太超前了一点,不过也不是解释不清楚。我干脆也不解释了吧。给大家增进一点兴趣。
---------
还是解释一下
fromt Tkinter import *
是引入一个模块,这个模块用来创建GUI(Graphic User Interface)窗口
Tk()创建了一个主窗口
Label()创建一个标签
Label的第一个参数是root表明Label是在这个主窗口中的。
w.pack()是指用缺省的方式把Label放置在主窗口中
root.mainloop()开始了一个循环,是等待你的输入的循环。
Lesson 7 Python基本语法要素齐动员
现在的目的是尽量想出一个用的东西仅限于内置的变量类型和语句的一个综合的例子,我想还是那个联系人表的例子吧
################
#呵呵,还忘记了讲注释
#第一个算是完整的程序
################
contact = {}
contact_list = []
while 1:
    contact['name'] = raw_input("please input name: ")
    contact['phone'] = raw_input("please input phone number: ")
    contact_list.append(contact.copy())
    go_on = raw_input("continue? ")
    if go_on == "yes":
        pass
    elif go_on == "no":
        break
    else:
        print "you didn't say no "
i = 1
for contact in contact_list:
    print "%d: name=%s" % (i, contact['name'])
    print "%d: phone=%s" % (i, contact['phone'])
    i = i + 1 
首先是回忆一下字符串
字符串既能够用""也能够用''。然后是很有特色的%操作,起到格式化字符串的作用,前面仅仅在字符串中有一个%s,现在有%d和%s两个,分别代表插入十进制数值和字符串于%x标记的位置处。
然后是列表
列 表是顺序的序列,用append在后面附加,也能构用索引值索引。所以我们完全可以用一个变量保存len(contact_list)得到的长度,然后一 个个的遍历,不过这里展示了另外一种非常方便的方法。而且值得注意的是append()中的参数,我使用了contact.copy(),你可以尝试着把 copy()给去掉,观察结果你就知道了所谓的append是怎么干的了,特别是你对指针之类的东西很有感觉的话(但是在Python中是没有指针这个概 念的)
再来看看字典
字典是键(key)和值(value)的对应组合成的无序的序列。所以你存的时候要指明键(name或者phone),而且取的时候也是一样的。
接下来是判断
if 是很好用的,==表示判断两个是否相等,=表示把右边的赋给左边的。而且可以直接判断字符串是否相等,这个太方便了,如果你曾经用过strcpy()的 话,就知道了。elif是表示else if的意思,如果if不满足就判断elif的条件是否满足,最后是到else中去。
循环是个主体
while 和for都是循环。不过这里while就没什么说的了,又是很经典的while 1,死循环,然后必须在里面用break来跳出。for和C中的for是不一样的,for in才是一个完整的语句,指的是从一个能够逐一取值的序列中(比如list),一个一个的取出值赋给for后面指定的变量中,直到取空,循环结束。其实回 想一般用C中的for的经历,也大体如此。而且你还可以用for i in range(1,100)来指定一个范围从多少到多少。可以说for in充分体现了python的体贴周到,用起来很直观,不会绕弯。
接下来就是运行了,大家慢慢调试吧。下次可能是讲异常处理,因为我觉得在深入到使用各种高级的要素之前,先要学会怎么去处理异常。最常见的异常应该是input(),然后你给出的输入是一个无法转换为数字的字符串了,那么我们就要来处理它。
Lesson 8 Python中的错误检测
写 程序什么最重要?完成功能最重要。但是程序中难免要有用户的输入,对于这些写的时候未可预知的因素中间可能出现的错误,一般称作异常。对于异常情况的处 理,不同语言有不同的做法,比如检查函数的返回值之类的,但是那种办法会把代码弄成一团浆糊。Python在这个方面是比较先进的,我们从一个例子来看 看:
print input() 
呵呵,看不同吧。其实input是输入,print是输出。也就是把输入的东西立即输出。但是这个和
print raw_input() 
有什么不同呢?
不同的地方是,input()会在raw_input()接收了“字符串”的输入之后进行一些处理,比如你是输入1+2,然后输出的就是3了,而raw_input就是原原本本的1+2的输出了。用代码表示就是
eval(raw_input()) 
eval是求表达式的值,任何一个简单的python表达式,就像1+2这样的作为字符串送入,就能把值从eval处理之后取出来。
现在你实验一下"sdfsdf”之后,你会发现提示你
  引用: 
Traceback (most recent call last):
  File "", line 1, in -toplevel-
    input()
  File "", line 0, in -toplevel-
NameError: name 'sdfsdf' is not defined 
如果输入其他稀奇古怪的字符串还可能有其他的出错提示,我们现在要做的就是捕捉这种由用户输入引起的错误。这么来作:
try:
    print input()
except:
    print 'there is an error in your input' 
这下你无论怎么输入都不会有什么其他的提示了,就是自己设定的print语句作为提示。现在把try except的组合去掉,回到print input()你再尝试一下:
1/0
这个显然是一个错误,被零除的错误。那么专门来捕捉一下这个错误:
try:
    print input()
except ZeroDivisionError:
    print 'can not be divided by zero' 
这下你能够捕捉到被零除的错误了。然后你再尝试其他的输入,可能错误就没有被捕捉了。所以再补上:
try:
    print input()
except ZeroDivisionError:
    print 'can not be divided by zero'
except:
    print 'there is an error in your input' 
注意,捕捉所有错误的except必须放在所有的except的最后一位。明白了?OK
还有更多的能够捕捉的错误,自己查手册吧(暂时看不了手册没关系,慢慢来嘛)。以后还能够自己raise(引发)异常呢。不过那都是比较高级的应用了,对于出错处理从一开始就有这个印象,并牢记在心中对于以后写大一些的软件很有好处。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用Python查找文本文件的ZIPF分布 如何使用Python查找文本文件的ZIPF分布 Mar 05, 2025 am 09:58 AM

本教程演示如何使用Python处理Zipf定律这一统计概念,并展示Python在处理该定律时读取和排序大型文本文件的效率。 您可能想知道Zipf分布这个术语是什么意思。要理解这个术语,我们首先需要定义Zipf定律。别担心,我会尽量简化说明。 Zipf定律 Zipf定律简单来说就是:在一个大型自然语言语料库中,最频繁出现的词的出现频率大约是第二频繁词的两倍,是第三频繁词的三倍,是第四频繁词的四倍,以此类推。 让我们来看一个例子。如果您查看美国英语的Brown语料库,您会注意到最频繁出现的词是“th

我如何使用美丽的汤来解析HTML? 我如何使用美丽的汤来解析HTML? Mar 10, 2025 pm 06:54 PM

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

python中的图像过滤 python中的图像过滤 Mar 03, 2025 am 09:44 AM

处理嘈杂的图像是一个常见的问题,尤其是手机或低分辨率摄像头照片。 本教程使用OpenCV探索Python中的图像过滤技术来解决此问题。 图像过滤:功能强大的工具 图像过滤器

Python中的平行和并发编程简介 Python中的平行和并发编程简介 Mar 03, 2025 am 10:32 AM

Python是数据科学和处理的最爱,为高性能计算提供了丰富的生态系统。但是,Python中的并行编程提出了独特的挑战。本教程探讨了这些挑战,重点是全球解释

如何使用TensorFlow或Pytorch进行深度学习? 如何使用TensorFlow或Pytorch进行深度学习? Mar 10, 2025 pm 06:52 PM

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

如何在Python中实现自己的数据结构 如何在Python中实现自己的数据结构 Mar 03, 2025 am 09:28 AM

本教程演示了在Python 3中创建自定义管道数据结构,利用类和操作员超载以增强功能。 管道的灵活性在于它能够将一系列函数应用于数据集的能力,GE

python对象的序列化和避难所化:第1部分 python对象的序列化和避难所化:第1部分 Mar 08, 2025 am 09:39 AM

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

Python中的数学模块:统计 Python中的数学模块:统计 Mar 09, 2025 am 11:40 AM

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

See all articles