python核心编程学习笔记【2016-10-06】

来源:互联网 发布:守望max 数据不更新 编辑:程序博客网 时间:2024/05/18 00:52

@python起步
#程序输出,print语句以及“hello world”
$在交互式解释器中,可以使用print输出变量值,也可以仅使用变量名查看变量值,一下是关于字符串‘hello world’的一个例子:
这里写图片描述
??发现两者在输出字符串的时候存在差异,后者有单引号,这是为了让非字符串对象也能以字符串的方式显示在屏幕上--即它显示的是该对象的字符串表示,而不仅仅是字符串本身。引号表示你刚刚输入的变量的值是一个字符串。
*下划线(_)在解释器中有特别的含义, 表示最后一个表达式的值。
$输出重定向>>
下面这个例子将输出重定向到标准错误输
出:
这里写图片描述
下面这个例子将输出重定向到日志文件:
这里写图片描述

#程序输入和 内建函数raw_input()
$以下是输入的例子:
这里写图片描述
输入字符串数字,并强转为整形:
这里写图片描述

#运算符
$算术运算符:+,-,,,/,//,%,*(按优先级排列)
//:对除法结果进行四舍五入
**:乘方
比较运算符:< <= > >= == !=
逻辑运算符:and or not

#数字
int (有符号整数)
long (长整数)
bool (布尔值)
float (浮点值)
complex (复数)

#字符串
可以用索引[]或者切片[:]来获取子字符串:
这里写图片描述

#列表和元组
列表:[ ]元素可以被修改
元组:( )元素不可以被修改
这里写图片描述

#字典
??

#if语句
$语法
if expression1:
if_suite
elif expression2:
elif_suite
else:
else_suite

#while循环
$语法:
while expression:
while_suite

#for迭代
这里写图片描述

$通过range达到计数循环:
这里写图片描述
$通过range和len达到对字符串的遍历:
这里写图片描述

#列表解析
将for循环放到列表中:
这里写图片描述
并进行元素挑选:
这里写图片描述

#文件和内建函数 open() 、file()
filename = raw_input(‘Enter file name: ‘)
fobj = open(filename, ‘r’)
for eachLine in fobj:
print eachLine,
fobj.close()

#错误和异常
try-except语句

#函数
def function_name([arguments]):
“optional documentation string”
function_suite
默认参数:
这里写图片描述

#类
class ClassName(base_class[es]):
“optional documentation string”
static_member_declarations
method_declarations

$类的实例:
这里写图片描述

#实用的函数
函数 描述
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 对象!)

#本章练习
$while()输出0—-10
这里写图片描述
$for()输出0——10
这里写图片描述
$判断输入数值是正数还是负数,或是零,输出结果:
这里写图片描述
显示字符串:
这里写图片描述

这里写图片描述

这里写图片描述

求列表平均数:

带文本菜单的程序 写一个带文本菜单的程序,菜单项如下(1)取五个数的和 (2) 取五个
数的平均值….(X)退出。由用户做一个选择,然后执行相应的功能。 当用户选择退出时程序
结束:
这里写图片描述

??dir():
这里写图片描述

不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

排序
list.sort(func=None, key=None, reverse=False)
正序和逆序:
这里写图片描述

sorted()排序
sorted(iterable, cmp=None, key=None, reverse=False)

这里写图片描述

&*list.sort和sorted的区别在于前者不会返回对象,直接修改原列表,后者返回排好序的新对象

#sorted解析
sorted(data, cmp=None, key=None, reverse=False)
其中,data是待排序数据,可以使List或者iterator, cmp和key都是函数,这两个函数作用与data的元素上产生一个结果,sorted方法根据这个结果来排序。
cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 < e2, 0: e1 == e2, 正数: e1 > e2. 默认为 None, 即用内建的比较函数.
key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素.
通常, key 和 reverse 比 cmp 快很多, 因为对每个元素它们只处理一次; 而 cmp 会处理多次.

通过例子来说明sorted的用法:


  1. 对由tuple组成的List排序
    Python代码 收藏代码

students = [(‘john’, ‘A’, 15), (‘jane’, ‘B’, 12), (‘dave’, ‘B’, 10),]
用key函数排序(lambda的用法见 注释1)
Python代码 收藏代码
sorted(students, key=lambda student : student[2]) # sort by age
[(‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12), (‘john’, ‘A’, 15)]

用cmp函数排序
Python代码 收藏代码

sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age
[(‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12), (‘john’, ‘A’, 15)]

用 operator 函数来加快速度, 上面排序等价于:(itemgetter的用法见 注释2)
Python代码 收藏代码

from operator import itemgetter, attrgetter
sorted(students, key=itemgetter(2))

用 operator 函数进行多级排序
Python代码 收藏代码

sorted(students, key=itemgetter(1,2)) # sort by grade then by age
[(‘john’, ‘A’, 15), (‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12)]


  1. 对由字典排序
    Python代码 收藏代码

d = {‘data1’:3, ‘data2’:1, ‘data3’:2, ‘data4’:4}
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[(‘data4’, 4), (‘data1’, 3), (‘data3’, 2), (‘data2’, 1)]
注释1
参考:http://jasonwu.me/2011/10/29/introduce-to-python-lambda.html

注释2
参考:http://ar.newsmth.net/thread-90745710c90cf1.html
class itemgetter(builtin.object)
| itemgetter(item, …) –> itemgetter object
|
| Return a callable object that fetches the given item(s) from its operand.
| After, f=itemgetter(2), the call f(r) returns r[2].
| After, g=itemgetter(2,5,3), the call g(r) returns (r[2], r[5], r[3])

相当于
Python代码 收藏代码
def itemgetter(i,*a):
def func(obj):
r = obj[i]
if a:
r = (r,) + tuple(obj[i] for i in a)
return r
return func

a = [1,2,3]
b=operator.itemgetter(1)
b(a)
2
b=operator.itemgetter(1,0)
b(a)
(2, 1)
b=itemgetter(1)
b(a)
2
b=itemgetter(1,0)
b(a)
(2, 1)

参考资料:
1. http://www.linuxso.com/linuxbiancheng/13340.html
2. http://www.douban.com/note/13460891/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 反祈祷式做不到怎么办 窦性心跳过缓怎么办 四维彩超查出胎儿心脏有问题怎么办 减脂肚子饿了怎么办 做瑜伽腰扭到了怎么办 出了汗怎么办活动反思 农村都是老人和孩子怎么办 瑜伽垫容易出现痕迹怎么办 37岁失业了该怎么办 45岁找什么工作怎么办 华为手机4g网速慢怎么办 解析软件包时出现问题怎么办 一字马不能下去髋摆不正怎么办 练轮瑜伽骆驼式腰疼怎么办 感昌咳嗽老不好怎么办 我感昌一直不好怎么办 腰间盘突出晚上睡觉痛怎么办 天天吃撑了怎么办啊 一吸气就想咳嗽怎么办 鼻子堵住了怎么办没法吸气时 一只鼻子不通气怎么办 练瑜伽后特别饿怎么办 站一天小腿肿了怎么办 练腹肌腰粗了怎么办 大专不交学费.然后退学怎么办 练瑜伽压腿一字马受伤了怎么办 银行工作人员借钱不还怎么办 借钱不还跑了但有工作怎么办 亲戚家借钱不还怎么办 学习瑜伽教练口令好复杂怎么办 练瑜伽腿的柔韧性不够怎么办 瑜伽扭转时手抓不到脚怎么办 练瑜伽腿部太硬怎么办 褶皱衣服不紧了怎么办 吃撑了肚子涨怎么办 正好压本科线该怎么办 大脚趾被砸了怎么办 脊柱侧弯每天疼怎么办 内衣扣的位置脊柱疼怎么办 练完瑜伽颈椎疼怎么办 乳胶枕头太高了怎么办