Python学习笔记-Python起步

来源:互联网 发布:矿油对皮肤有害吗 知乎 编辑:程序博客网 时间:2024/04/26 23:20

准备学习一下Python技术,所以找了本《Python核心编程(第二版)》,想从头到尾学习系统的学习一下~下面是在学习过程中针对每一章自己整理的一些读书笔记。

第一章1、python于1989年底由范.罗萨姆始创。是一种面向对象的解释型语言。第二章 python起步1、输出语句print. print和%结合使用,实现字符串的替换,与C语言中的prtinf()函数类似.print默认输出换行>>> print ‘%s is a num: %d’ % (‘Python’, 45)%s : 字符串; %d: 数字; %f: 浮点数.2、输入语句raw_input().>>> user = raw_input(‘Enter a number:’)Enter a number:34>>> user ‘34’从标准输入流读取一个字符串自动删除串尾换行符,转换为字符串返回,将其赋值给user(1)int():将数值字符串转换为整型>>> num = raw_input(‘Enter a num:’)Enter a num: 4>>> print ‘Double num is: %d’ % (int(num)*2)Double num is:83、下划线:_表示最后一个表达式的值.>>> user = 34>>> _‘34’4、注释Python使用#标志注释.从#开始一直到一行结束内容都是注释.5、运算符算术运算符:+ - * / // % **/:传统除法>>> 4/31>>>4.1/31.36666666666666665整数相除,取比商小的最大整数;浮点数相除,取实际值.//:浮点除法>>> 4//31>>> 4.1/31.0整数/浮点数相除,对结果四舍五入.**:乘方运算>>> 2**24>>> 2**38>>> 2**416注:乘方的优先级最高比较运算符:< <= > >= == != <>!= 和 <> 都表示不等于>>> 3 < 4True>>> 3 > 4False逻辑运算符:and or not>>> 3 < 4 and 4 < 5True>>> 3 < 4 < 5True>>> not 4 > 6True6、变量Python变量的命名与其他编程语言相同,可以是字母/数字/下划线,但是变量名不能以数字开头.并且python无需预先声明变量的类型.1、python支持增量赋值:n = n * 10  <=> n *= 102、python不支持自增一和自减一>>> n = 2>>> ++n2>>> --n27、数字Python支持5种数字类型:Int(有符号整数)long(长整数)  bool(布尔值) float(浮点值) complex(复数)其中,int ,long , bool 都是整数类型.bool值是一种特殊的整数,在一个数值的上下文中,True为1, False为0>>> 1 + (3<4)28、字符串成对的单引号,双引号,三引号(三个连续的单引号或者双引号)之间的内容都是字符串.索引运算符:[] ; 切片运算符:[ :] 用来得到子字符串.[a:b]表示获取从索引为a到b之间的字符串(包含a但不包含b指向的字符).如果不指定a,默认是从开始字符到b;如果不指定b,默认是从a到字符串结尾+:用于字符串连接; *:用于字符串重复.字符串索引规则:第一个字符索引为0, 最后一个为-1>>> user = 'Hello World'>>> user[0]'H'>>> user[-1]'d'>>> user[0:-1]'Hello Worl'>>> user[2:6]'llo '>>> user + ' ' + user'Hello World Hello World'>>> user * 3'Hello WorldHello WorldHello World'9、列表和元组列表和元组都可以当成普通的’数组’,能保存任意类型的python对象,索引从0开始,但是列表和元组可以存储不同类型的对象.区别:列表用[ ]包裹,元素的个数和元素的值可以更改.通过索引运算[],切片运算[:]可以得到子集.元组用()包裹,元素的个数和值不能更改. 通过索引运算[],切片运算[:]可以得到子集.>>> list = [1,2,3,4]>>> list[1, 2, 3, 4]>>> list[3]4>>> list[1:3][2, 3]>>> list[0] = 5>>> list[5, 2, 3, 4]>>> tuple = (1,2,3,4)>>> tuple(1, 2, 3, 4)>>> tuple[2]3>>> tuple[1:3](2, 3)>>> tuple[0] = 5#不能更改Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: 'tuple' object does not support item assignment10、字典字典由键-值(key-value)对构成.数字或字符串常用作键.字典元素用{ }包裹.>>> dict = {'Host': 'XYW'} # creat a dict>>> dict['Port'] = 80  # add element to dict>>> dict{'Host': 'XYW', 'Port': 80}>>> dict.keys()['Host', 'Port']>>> dict['Host']'XYW'>>> for key in dict:...     print key, dict[key]...Host XYWPort 8011、if语句if expression: #表达式非0或者为布尔值True(不要忘记后边的冒号)If_suite #代码块缩进>>> user = 4>>> if user < 5:...     print '%d < 5' % (user)...4 < 5if expression:If_suiteelse:else_suite>>> if user < 5:...     print '%d < 5' % (user)... else:...     print '%d > 5' % (user)...4 < 5if expression1:if_suiteelif expression2:elif_suiteelse:else_suite12、while循环while expression:while_suite>>> user = 5>>> while user > 0:...     print 'user = %d' % (user)...     user -= 1...user = 4user = 3user = 2user = 113、for循环Python中的for循环和传统的(计数器类型)for循环不太一样, 它可以接受迭代对象(例如序列或者迭代器)做参数,每次迭代其中一个元素.>>> print 'I like to use the Internet for:'I like to use the Internet for:>>> for item in  ['email', 'net-browsing', 'work']:...     print item,...email net-browsing work注:print默认会给每一行添加一个换行符,所以在print语句最后加一个逗号,就会显示在一行.(1)range()函数:range([start,] stop[, step])start:开始数值; stop:结束数值; step:每一步大小(可以为正数或负数).start或step可以省略.如果省略start,则默认是从0开始.如果省略step,则默认是每步加1,start和step可以同时省略,但是不能只省略start.>>> range(4) #省略start和step[0, 1, 2, 3]>>> range(1,5) #省略step[1, 2, 3, 4]>>> range(0,-10,-1)[0, -1, -2, -3, -4, -5, -6, -7, -8, -9](2)for迭代每个字符:>>> user = 'Chinese'>>> for item in user:...     print item...Chinese(3)range函数和len函数结合使用可以实现普通计数器类型的for循环:>>> user = 'Chinese'>>> for i in range(len(user)):...     print user[i], '%d' % (i)#输出元素值及其索引值...C 0h 1i 2n 3e 4s 5e 6(4)enumerate函数同时遍历索引以及元素>>> user = 'Chinese'>>> for index, value in enumerate(user):...     print '%d' % index, value...0 C1 h2 i3 n4 e5 s6 e(5)列表解析:通过操作或者处理一个序列创建一个新的列表[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr]第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表.第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表.>>> list = [x ** 2 for x in range(4)]>>> list[0, 1, 4, 9]>>> list = [x ** 2 for x in range(8) if not x % 2]>>> list[0, 4, 16, 36]14、文件打开文件:handle = open(filename, access_mode = ‘r’)以access_mode的方式打开文件filename.默认是只读的r.>>> fileName = raw_input('Enter a file name: ')Enter a file name: C:\\杂项\\test.txt>>> File = open(fileName, 'r')>>> for eachLine in File:...     print eachLine,...BUS:00, DEV:00, FUN:00 = 01548086BUS:00, DEV:00, FUN:01 = FFFFFFFFBUS:00, DEV:00, FUN:02 = FFFFFFFFBUS:00, DEV:00, FUN:03 = FFFFFFFFBUS:00, DEV:00, FUN:04 = FFFFFFFFBUS:00, DEV:00, FUN:05 = FFFFFFFFBUS:00, DEV:00, FUN:06 = FFFFFFFF>>> File.close()15、异常处理使用try-except语句try: filename = raw_input('Enter file name: ') fobj = open(filename, 'r') for eachLine in fobj: print eachLine, fobj.close() except IOError, e: print 'file open error:', e16、函数函数在调用前必须先定义,如果函数中没有return语句,默认返回None对象.Python是通过引用调用的参数,在函数内对参数进行改变会影响可变对象的值.定义方式:def function_name([arguments]):“optional documentation string”function_suiteE.g:>>> def Add(x, y):...     'add x and y'...     return (x + y)...>>> Add(2, 3)5>>> Add('I am a ', 'Boy')'I am a Boy'>>> Add([1,2,3], [4,5,6])[1, 2, 3, 4, 5, 6]>>>注:几乎所有的标准数据类型都支持 + 运算符,不管是数值相加还是序列合并.(1)默认参数Python可以使用默认参数#定义函数>>> def foo(debug = True):...     if debug:...             print 'in debug mode'...     print 'done'...#调用函数>>> foo()in debug modedone>>> foo(False)done17、类类定义:class ClassName(base_class[es]): "optional documentation string" static_member_declarations method_declarationse.g:>>> class HelloClass(object):...     'my first class: HelloClass'...     version = 1.0   #类成员变量...     def _init_(self, nm = 'Eliot'):...             self.name = nm...             print 'Create a class instance for ', nm...     def showName(self):...             print 'Your name is ', self.name...             print 'My name is ', self._class_._name_...     def showVer(self):...             print 'My version is ', self.version...     def addMe(self, x):...             'add myself'...             return x + x...调用:hello = HelloClass()hello.showName()hello.showVer()hello.addMe(4)注:hello. showName()在Dos下调用时有错误,而且hello=HelloClass()没有按照要求输出,可能因为没有使用可视化平台有关.#定义类时可以提供一个可选的父类或者基类,如果没有合适的基类,使用object.#所有名字开始和结束都有两个下划线的方法都是特殊方法.当一个类的实例创建时_init_()方法会自动执行,但是系统的_init_()方法是空的,所以要创建自己的_init_()方法来覆盖系统的方法,它一般用来实例化对象的某些属性.self相当于其他语言中的this,指向类实例自身的引用或者调用它的类实例.18、模块模块将彼此有关系的 Python 代码组织到一个个独立文件当中.通过导入模块可以使用其中的变量和方法.import module_name19、实用的函数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-4:>>> raw_input('Enter a num:')Enter a num:3'3'>>> user = raw_input('Enter a num:')Enter a num:4>>> int(user)42-5:(1)while:>>> i = 0>>> while i < 11:...     print i,...     i += 1...0 1 2 3 4 5 6 7 8 9 10for:>>> for i in [0,1,2,3,4,5,6,7,8,9,10]:...     print i,...0 1 2 3 4 5 6 7 8 9 10(2)while:>>> i = 0>>> while i in range(11):...     print i,...     i += 1...0 1 2 3 4 5 6 7 8 9 10for:>>> for i in range(11):...     print i,...0 1 2 3 4 5 6 7 8 9 10For函数定义:for_stmt ::=  "for" target_list "in" expression_list ":" suite              ["else" ":" suite]The for statement is used to iterate over the elements of a sequence (such as a string, tuple or list) or other iterable object:The while statement is used for repeated execution as long as an expression is true:while_stmt ::=  "while" expression ":" suite                ["else" ":" suite]总结:while后接一个条件表达式,满足条件时才执行循环语句,且需要自己手动累加计数,如: i += 1,如果条件不满足,可以继续执行后面的else语句(可选).for循环是循环迭代一个字符串或者list,直至字符串或者list遍历完,继续执行后面的else语句(可选).并且不需要手动累加计数.2-7:>>> str = raw_input('Enter a string:Enter a string:Chinese>>> i = 0>>> while i < len(str):...     print str[i]...     i += 1...Chinese>>> for i in str:...     print i...Chinese>>> for i in range(len(str)):...     print str[i]...Chinese2-8:While:>>> list = [1,2,3,4,5]>>> i = 0>>> sum = 0>>> while i < 5:...     sum += list[i]...     i += 1...>>> sum15>>> tuple = (1,2,3,4,5)>>> i = 0>>> sum = 0>>> while i < 5:...     sum += tuple[i]...     i += 1...>>> sum15For:>>> list = [1,2,3,4,5]>>> i = 0>>> sum = 0>>> for i in list:...     sum += i...>>> sum15>>> tuple = (1,2,3,4,5)>>> i = 0>>> sum = 0>>> for i in tuple:...     sum += i...>>> sum15用户输入list的前提是list已经有一定的数值,用户>>> list = [1,2,3,4,5]>>> i = 0>>> sum = 0>>> while i < 5:...     user = raw_input('Enter a number: ')...     list[i] = int(user)...     i += 1...Enter a number: 1Enter a number: 2Enter a number: 3Enter a number: 4Enter a number: 5>>> list[1, 2, 3, 4, 5]2-9:>>> list = [1,2,3,4,5,6]>>> sum = 0>>> for i in list:...     sum += i...>>> sum/(len(list))3>>> sum21>>> float(sum)/(len(list))3.52-10:>>> i = 0>>> while (i < 1 or i > 100):...     i = int(raw_input('Enter a number between 0 and 100: '))...     if(i < 1 or i > 100):...             print 'The number is out of range,please reput it !'...Enter a number between 0 and 100: 110The number is out of range,please reput it !Enter a number between 0 and 100: 120The number is out of range,please reput it !Enter a number between 0 and 100: 11注:raw_input返回的是一个字符串类型的,要转换为int型2-11#!/usr/bin/python# -*- coding: utf-8 -*-#author:xyw#date:2012-11-22#2-11ch = 0sum = 0list = [1,2,3,4,5]while(ch != 3):    print '1.求和     2.求均值    3.退出'    ch = int(raw_input())    if(ch == 1):        print '请输入5个数字:'        i = 0        sum = 0        while( i < 5):            list[i] = int(raw_input())            sum += list[i]            i += 1        print '和为:%d' % (sum)    elif(ch == 2):        print '请输入5个数字:'        i = 0        sum = 0        while(i < 5):            list[i] = int(raw_input())            sum += list[i]            i += 1        print '均值为:%f' % (float(sum)/5)    


原创粉丝点击