python简单的使用(二)

来源:互联网 发布:开发人员从事数据分析 编辑:程序博客网 时间:2024/05/18 03:23

1. Python中的错误检测

前面已经知道了input()和raw_input()的用法了,input()会在接收了字符串的输入之后进行一些处理,比如你是输入1+2,然后输出的就是3了,而raw_input就是原原本本的1+2的输出了

    print input()输入英文字母shiyuezhong之后就会出现异常:

  Traceback (most recent call last):  File "F:/Python27/1", line 1, in <module>    print input()  File "<string>", line 1, in <module>  NameError: name 'shiyuezhong' 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的最后一位

2. 函数的使用

 def square(x):     return x**2 print square(7)

def表示这个开始定义一个函数,x是参数,参数是不需要类型的,因为python是不需要明确指出类型的。return是返回值,返回的值插入到调用函数的地方。


def swap(a, b):       return (b,a)   print swap(1,2)

这里返回的并不是两个值,而是一个值。 (b, a)就是一个元组(turple),你可以用这样的方式成生一个元组,并使用它。元组是基本的变量类型:

my_turple = (1, 2, 3)my_list = []for i in my_turple:      my_list.append(i)print my_list

元组和列表非常像,但是列表的长度是可以变化的,而且成员是可以改变的。但是元组是什么都不能变的,是只读的。

3. 文件的操作

首先是建立关联...假设在存在以下文件 c:\a.txt 里面内容为:

This is line #1
This is line #2
This is line #3
END

代码:

>>> xxx = file('c:\\a.txt', 'r')>>> xxx_content = xxx.read()>>> print xxx_contentThis is line #1This is line #2This is line #3END>>> xxx.close()>>>>>> infile = file('c:\\a.txt', 'r')>>> xxx = file('c:\\a.txt', 'r')>>> for xxx_line in xxx.readlines():             print 'Line:', xxx_lineLine: This is line #1Line: This is line #2Line: This is line #3Line: END>>> xxx.close()>>>

file关键字的第一部分,是文件路径及名称。注意这里面,路径需要用\\
第二部分,是对文件的模式或者叫权限,一般有以下3种 "r" (read), "w" (write)和 "a"(append).

利用xxx_content = infile.read()  和  xxx_content = infile.readlines() 来读取文件内容。

然后是文件的写入:

>>> xxx=file('c:\\test.txt','w')>>> xxx.write('shiyuezhong')>>> xxx.write('testtest')>>> xxx.write('enter\n')>>> xxx.writelines([' shiyuezhong ','buding'])>>> xxx.close()>>>>>> xxx=file('c:\\test.txt','r')>>> content=xxx.read()>>> print contentshiyuezhongtesttestentershiyuezhongbuding>>>
需要注意的是...xxx.close()之前,c盘下面只有一个空空的test.txtxxx.close()的作用相当于最后的存盘。

4. 类的使用

class person:     def __init__(self):        self.name = 'taowen'          self.id = 20022479     def say_id(self):         print "%s's id is %d" % (self.name, self.id)me = person()me.say_id()

类:是class关键来定义的。class person:就是说定义一个类,名字叫person

对象: 是用类来产生的。所以me就是对象,产生的办法就是像调用函数一样,person(),而且()中是能够放参数的,什么时候要参数,看下面的初始化函数

初始化函数:类可以有自己的初始化函数,每次类被创建的时候(调用person()这样的语句的时候),都会调用它。__init__是必须的名字,不能用其他名字来当初始化函数。但是你可以没有初始化函数

这里大致感觉和java差不多,所以就不多说明了。 


5. python to exe

讲述如何将一个python源代码编译成一个exe

  1)下载安装py2exe    2.7版本的 http://download.csdn.net/detail/shiyuezhong/4588805
  2)假设你写好了一个python程序  syz.py...存在了D:\Python27\下面

  3再写一个setup.py...也存在D:\Python27\下面...内容如下

# setup.pyfrom distutils.core import setupimport py2exesetup(name="syz",          scripts=["syz.py"],)

其中namescripts是需要你到时候具体修改的,也可以这样setup(console=["syz.py"])

  4找到windowsdos模式(命令提示符) 

     D:\Python27>
     D:\Python27>python setup.py py2exe

在你的D:\Python27就会出现两个文件夹builddist,前面那个里面似乎是源程序,dist里面的就是编译好的.exe

 

6.图形界面

from Tkinter import *  root = Tk(className='bitunion')  label = Label(root)  label['text'] = 'be on your own'  label.pack()button = Button(root)button['text'] = 'change it'button.pack()root.mainloop()

root是一个变量名称,其代表了这个主窗口。以后创建控件的时候指定控件创建在什么窗口之中,就要用这个root来表示了。而Tk()是一个 Tkinter库之中的函数(其实是类的构造函数,构造了一个对象)。而mainloop则是主窗口的成员函数,也就是表示让这个root工作起来,开始 接收鼠标的和键盘的操作。 

root= Tk(className='bitunion') //修改窗口标题,也可以使用默认 root = Tk()
pack是和控件的布局排版有关系的,去掉就显示不出来了。


通过函数来进行事件处理:

from Tkinter import *def on_click():    label['text'] = 'no way out'root = Tk(className='bitunion')label = Label(root)label['text'] = 'be on your own'label.pack()button = Button(root)button['text'] = 'change it'button['command'] = on_clickbutton.pack()root.mainloop()

on_click中出现label这个变量比较奇怪,因为在on_click前面没有定义label这个变量,但是python在你写的时候根本就不用知道其是否存在,只是要在运行的时候找得到label就可以了。而运行的前后关系,是通过时间来关联的而不是代码上前 后行的关系。这里由于label = Label(root)先于on_click执行,所以当on_click执行的时候,label就是一个已经定义的变量。











原创粉丝点击