16 文件和内建函数open(),file()

  打开文件:

fobj = open(filename, 'r')
for eachLine in fobj:
print eachLine,  #由于每行自带一个换行符,所以print后面有逗号,阻止print再换行
fobj.close()     #已打开的文件,访问结束之后,记得close

  其中,filename是文件的字符串名字;'r'为访问模式,表示读(read)文件,其他模式还有 'w':写文件,'a':添加,'+':读写,'b':二进制访问;未提供访问模式时,默认为'r'。打开成功时返回一个文件对象句柄。

  上述程序,一次读入了所有行(适用于小文件),迭代输出各行,然后关闭文件。

  file()函数功能等同于open(),是一个工厂函数,生成文件对象。(类似于int()生成整形对象)

17 异常

  可以用try...except来检测和处理异常

try:
#可能出错的代码
  ...
except XError, e:
  print 'error', e  #捕获异常XError,并输出异常信息e

18 函数

  函数定义:

def addMe2Me(x):                      #def 函数名(参数列表):   记得冒号
'apply + operation to argument' #函数说明文档
return (x + x) #返回,如果没有return,自动返回None对象

  函数调用:

>>> addMe2Me(4.25)
8.5
>>> addMe2Me('Python')    #字符串相加
'PythonPython'
>>> addMe2Me([-1, 'abc'])  #列表相加
[-1, 'abc', -1, 'abc']

  默认参数:

>>> def foo(debug=True):    #默认参数
...   'determine if in debug mode with default argument'
...   if debug:
...     print 'in debug mode'
...   print 'done'
...
>>> foo()  #未提供参数,默认为True
in debug mode
done
>>> foo(False)  #显示提供参数,覆盖默认
done

19 类

  定义类:

class FooClass(object):  #定义类用class关键字,括号里是基类,如果没有合适基类就使用object作为基类
  """my very first class: FooClass"""   #类文档,可选
  version = 0.1                #静态变量,为所有成员函数共享
  #创建类实例后,自动执行该函数;显示定义该函数,覆盖默认的init函数(什么也不做);所有的__fun__都是特殊方法。
  def__init__(self, nm='John Doe'):    #self参数,即类实例自身的引用    
    """constructor"""
    self.name = nm     #name,类实例的属性,不是类本身的部分
    print'Created a class instance for', nm
  def showname(self):
    """display instance attribute and class name"""
    print 'Your name is', self.name
    print 'My name is', self.__class__.__name__ #该变量表示实例化该实例的类的名字,self.__class__引用实际的类
  def showver(self):
    """display class(static) attribute"""
    print self.version  #访问静态变量
  
  def addMe2Me(self, x): #没有使用self
    """apply + operation to argument"""
    return x + x

  创建类实例:

>>> foo1 = FooClass()  #自动调用__init__
Created a class instance for John Doe

  方法调用:

>>> foo1.showname()
Your name is John Doe  #打印定义时的默认参数
My name is __main__.FooClass  
>>> foo1.showver()
0.1
>>> print foo1.addMe2Me('xyz')
xyzxyz

  提供参数:

>>> foo2 = FooClass('Jane Smith')
Created a class instance for Jane Smith
>>> foo2.showname()
Your name is Jane Smith
My name is FooClass  #与上不同

20 模块

  模块,就是一个Python源文件,模块名就是文件名去掉后缀.py,模块包括可执行代码/函数/类。

  导入模块,访问模块属性:

>>> import sys
>>> sys.stdout.write('Hello World!\n')  #访问函数,write函数需要显示提供\n来输出换行
Hello World!
>>> sys.platform  #访问变量
'linux2'

21 有用的函数

dir([obj])     #显示对象的属性,如果没有提供参数,则显示全局变量的名字
help([obj])    #以一种整齐美观的形式显示对象的文档字符串,如果没有提供任何参数,则会进入交互式帮助
int(obj)     #将一个对象转换为整数
len(obj)     #返回对象的长度
open(fn, mode)   #以 mode('r' = 读,'w'= 写)方式打开一个文件名为fn的文件
range([start,]stop[,step]) #返回一个整数列表。起始值为 start,结束值为 stop-1;start默认值为0,step默认值为1
raw_input(str)   #等待用户输入一个字符串,可以提供一个可选的参数str用作提示信息
str(obj)     #将一个对象转换为字符串
type(obj)     #返回对象的类型(返回值本身是一个type对象!)

练习题

2-9 循环和运算符 创建一个包含五个固定数值的列表或元组,输出他们的平均值。本练习的难点之一是通过除法得到平均值。你会发现整数除会截去小数,因此你必须使用浮点除以得到更精确的结果。float()内建函数可以帮助你实现这一功能。

 myList = [1,2,3,5,7]
total = 0
for num in myList:
total += num
print total/5
print float(total)/5  #整数会执行地板除,用float()函数将其转换为浮点数

2-9

2–10 带循环和条件判断的用户输入 使用raw_input()函数来提示用户输入一个1和100之间的数,如果用户输入的数满足这个条件,显示成功并退出。否则显示一个错误信息然后再次提示用户输入数值,直到满足条件为止。

 flag = True
while flag:  
  #raw_input将输入转换为字符串后返回,所以用int()将其生成整数对象
  num = int( raw_input('Please input a number between 1 and 100: ') )
  if 1 <= num <= 100:
    print 'ok'
    flag = False
  else:
    print 'wrong'

2-10

2–11 带文本菜单的程序 写一个带文本菜单的程序,菜单项如下(1)取五个数的和 (2)取五个数的平均值....(X)退出。由用户做一个选择,然后执行相应的功能。当用户选择退出时程序结束。这个程序的有用之处在于用户在功能之间切换不需要一遍一遍的重新启动你的脚本。 (这对开发人员测试自己的程序也会大有用处) 

 print '1. calculate the sum of five numbers'
print '2. calculate the average of five numbers'
print 'X. exit' flag = True
while flag:
select = raw_input('Please input your choice: ') if select == 'x' or select == 'X':
flag = False
elif select != '' and select != '':
print 'input wrong'
else:
print 'Please input the 5 numbers:'
myList = [int(raw_input('1st: ')),
           int(raw_input('2nd: ')),
           int(raw_input('3rd: ')),
           int(raw_input('4th: ')),
           int(raw_input('5th: '))] #闭合符号:小括号/中括号/花括号,以及三引号,可以多行书写
total = 0
for num in myList:
total += num
if select == '':
print total
else:
print float(total)/5

2-11

2–15. 元素排序

(a)让用户输入三个数值并将分别将它们保存到3个不同的变量中。不使用列表或排序算法,自己写代码来对这三个数由小到大排序。

(b)修改(a)的解决方案,使之从大到小排序

 print 'Please input 3 numbers:'
num1 = int(raw_input('1st num: '))
num2 = int(raw_input('2nd num: '))
num3 = int(raw_input('3rd num: '))
max_num = mid_num = min_num = 0  #链式赋值 if num1 >= num2:
max_num = num1
min_num = num2
else:
max_num = num2
min_num = num1 if num3 >= max_num:
mid_num = max_num
max_num = num3
elif num3 < min_num:
mid_num = min_num
min_num = num3
else:
mid_num = num3 print min_num, mid_num, max_num #从小到大
print max_num, mid_num, min_num #从大到小

2-15

Python核心编程--学习笔记--2--Python起步(下)的更多相关文章

  1. Python核心编程--学习笔记--6--序列(下)列表、元组

    11 列表 类似于C语言的数组,但是列表可以包含不同类型的任意对象.列表是可变类型. 创建列表——手动赋值.工厂函数: >>> aList = [12, 'abc'] >> ...

  2. Python核心编程--学习笔记--4--Python对象

    现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支 ...

  3. Python核心编程--学习笔记--3--Python基础

    本章介绍基本的Python语法.编程风格:并简要介绍标识符.变量和关键字,以及变量占用内存的分配和回收:最后给出一个较大的Python样例程序来体验这些特性. 1 语句和语法 1.1 注释 可以在一行 ...

  4. Python核心编程--学习笔记--1--Python简介

    本章介绍了Python的背景知识,包括什么是Python.Python的起源以及Python的一些关键特性. 1 什么是Python Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大 ...

  5. Python核心编程--学习笔记--6--序列(上)字符串

    本章研究Python中的序列:字符串.列表和元组.因为这些类型其实都是由一些成员共同组成的一个序列整体,所以我们把它们统称为序列.序列的存储结构可以表示为: 1 序列 序列类型有着相同的访问模式:按下 ...

  6. Python核心编程--学习笔记--2--Python起步(上)

    本章是对Python的主要特性做一个快速介绍. 1 介绍 交互执行时,解释器有两种提示符: 主提示符(>>>):解释器在等待输入下一个语句: 次提示符(...):解释器在等待输入当前 ...

  7. Python核心编程--学习笔记--9--文件和输入输出

    本章将深入介绍Python的文件处理和相关输入输出能力,包括:文件对象(以及它的内建函数.内建方法和属性),标准文件,文件系统的访问方法,文件执行,最后简要涉及持久存储和标准库中与文件有关的模块. 1 ...

  8. Python核心编程--学习笔记--8--条件与循环

    本章讲述if.while.for以及与他们搭配的else.elif.break.continue.pass等语句. 1 if语句 语法:三部分——关键字if.条件表达式.代码块.(记住冒号) if c ...

  9. Python核心编程--学习笔记--7--字典和集合

    本章介绍Python语言中的映射类型(字典)和集合类型,包括操作符.工厂函数.内建函数与方法. 1 字典 字典是Python中唯一的映射类型——键key直接映射到值value.字典是容器类型,其对象是 ...

随机推荐

  1. jBox 弹出窗口中焦点设置问题

    jBox  是一个不错的组件库,可以用来比较简单地弹出窗口. 我希望在 jBox 弹出窗口之后,自动将焦点设置到子窗口的某个输入框中,可是发现并不容易. 在 jBox 2.3 中,提供了如下的增强. ...

  2. 剑指Offer:面试题3——二维数组中的查找(java实现)

    问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路:取数组中的元素与 ...

  3. svn 常用操作命令

    svn 常用操作命令 检出 svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 svn checkout svn://路径(目录或文件 ...

  4. MatlabR2014a 安装破解详细图文教程(附下载链接(内附CVX工具箱))

    MATLAB和Mathematica.Maple并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程语 ...

  5. 视差贴图(Parallax Mapping)

    使用顶点光照的模型,当模型的面数很少的时候,光照效果会显得很奇怪,因为只有顶点上的光照是正确计算出来的,三角面上的光照都是通过硬件插值得到,所以难免会出现问题.基于像素的光照可以很好的改善这个问题.如 ...

  6. 【转载】linux环境下tcpdump源代码分析

    linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02  CSDN博客 原文链接  http://blog.csdn.net/han_dawei/article/d ...

  7. Django基础篇之数据库选择及相关操作

    在djanjo框架中我们最常用的框架分别就是mysql和sqlit了,下面我们将分别讲述一下这俩种数据库的基础必备知识 mysql 一.利用命令创建(在终端上执行) 1.首先创建一个project项目 ...

  8. 【PL/SQL练习】DML语句的处理(可以处理多行数据)

    1.Insert (在表中插入一行数据,并查看) SQL> desc t1; Name Type Nullable Default Comments ---- ------------ ---- ...

  9. SQO (标准查询运算符)方法 & Linq To Object

    #region SQO (标准查询运算符) 方法 #region Where() Find() FindAll() FirstOrDefault()等方法 static void c01where() ...

  10. IE CSS HACK

    IE 属性值 HACK .test { background:blue; /*所有浏览器*/ background:yellow\9; /*所有IE浏览器*/ background:green\0; ...