python自学笔记(一)
来源:互联网 发布:不属于流程优化原则 编辑:程序博客网 时间:2024/05/29 16:43
一.简介
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
有点是简介
缺点1:运行速度慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢,但是是相对的,考虑到网络的带宽延迟的可以忽略
缺点2:无法加密,当然,现在如火如荼的开源运动和互联网自由开放的精神是一致的,互联网上有无数非常优秀的像Linux一样的开源代码,我们千万不要高估自己写的代码真的有非常大的“商业价值”。那些大公司的代码不愿意开放的更重要的原因是代码写得太烂了,一旦开源,就没人敢用他们的产品了。
二.python编程
2.1 第一个python程序
2.2 输入输出
现在,你已经可以用print输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?Python提供了一个raw_input,可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
2.3 python基础
整数、浮点数 略
字符串 一般用’ “ :
例: ‘i am ok’ ———>i am ok
“ i’m ok” ———>i’m ok
'I\'m \"OK\”!’———> I’m “OK”!
unicode码
>>> print u'中文'
中文
>>> u'中'
u'\u4e2d'
中文
>>> u'中'
u'\u4e2d'
写u'中'和u'\u4e2d'是一样的,\u后面是十六进制的Unicode码。因此,u'A'和u'\u0041'也是一样的。
两种字符串如何相互转换?字符串'xxx'虽然是ASCII编码,但也可以看成是UTF-8编码,而u'xxx'则只能是Unicode编码。
把u'xxx'转换为UTF-8编码的'xxx'用encode('utf-8')方法:
>>> u'ABC'.encode('utf-8')
'ABC'
>>> u'中文'.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87'
格式化
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
常见的占位符有:
%d
整数
%f
浮点数
%s
字符串
%x
十六进制整数
2.4 使用list和tuple
list有点类似数组,
classmate=[‘wyz’,’sbq’,’jzh’,’xm’]
此时变量classmate就是个list,len(classmate)可以获取list长度,classmate(0)-(3可以获取list里具体的值
或者直接print classmate[-1] 就是最后一个值,xm
以此类推,倒数第二个就是-2 、-3等等
当然list也是个可变的有序表,所以可以在list后面追加append()
classmate.append(‘gl’)
如果要删除最后末尾的元素,用pop()
classmate.pop() 默认删除的是最后一个末尾,当然可以指定删除哪一个classmate.pop(i)
i要在范围内
list里的类型也可以是其他的
如L = [‘wyz’ ,100 ,true]
也可以嵌套成二维数组一样
s=[‘java’ ,’asp’, [‘c’,’python],’go’]
其中s[2][1]=c
s[2][2]=python
tuple
另一种有序列表叫元组,
tuple和list非常相似,但是tuple一旦初始化就不能修改,不能像list一样append,pop,insert
tuple是声明是用(),list声明使用[]
例如t=(‘a’,’b’,[‘A’,’B’])
t中t(0),t(1)都是无法改变的,但是t(2)其实是个list,所以t[2][0]和t[2][1]是可以变化的。
2.5 条件判断和循环
条件判断
if用来条件判断,else输出不符合要求的结果,中间可以加elif多一重判断,当然完全可以有n个elif,elif是else if的缩写
但是if有个缺点,遍历过程是自上而下的,如果出现了ture的结果,后面的就不会去判断了。
如下图,20岁直接被认为是kid就是因为这个道理
循环
python的循环有两种,一种是for...in的循环,一次把list或者tuple中的元素遍历出来
所以for i in就是把每个元素都遍历进变量i
python提供了range函数,比如range(100)就是从0至100的整数
第二种循环是while循环,只要满足条件就不退出一直循环,条件不满足时自动退出循环
比如计算100以内奇数的和
2.6 使用dict和set
dict是dictionary的缩写,可以简化list和tuple的组合
例如names=[‘wyz’,’sbq’,’jzh’]
scores=[99,89,79]
我们可以用dict来实现这两个list的组合查询
d={‘wyz’:99,’sbq’:89,’jzh’:79}
则d[‘wyz’]=99
查询dict的key值是否存在有两种方法
一是直接用in方法
‘xjf’ in dcit
二是用get的方法
总结和list相比dict查询和插入删除速度更快,但是占用更多内存。dict是通过hash算法根据key来计算vaule的,所以相比list而言dict的value是不可变的,否则内存就会混乱
set和dict类似,也是一组key的集合但是没有value
三. 函数
3.1 调用函数
python里有很多有用的函数,我们可以直接调用
https://docs.python.org/2/library/functions.html#abs是python官网的函数解释
例如调用绝对值函数abs()
比较函数cmp(x,y),如果x<y,返回-1;x>y,返回1;x==y,返回0
int()转换为整数
3.2 定义函数
在python中定义函数需要def语句,然后在缩进块中编写函数体,返回值用return语句返回
例如定义一个my_abs(x)的函数
上图定义的my_abs(x)和内置的abs()看似没区别,脱裤子放屁多余,但是还是有实质区别的,函数会识别里面的参数的可用性,例如abs(‘A’)就会报错,因为内置abs里的参数不能是字符串,但是my_abs(‘A’)结果就是A
3.3 函数的参数
定义一个x平方的函数
当然可以定义n次方的,可以利用两个参数
可变参数
可变参数顾名思义其参数是可变的,不是固定的,写法是在前面加个*号
比如正常情况下计算
a平方+b平方+c平方+...
def calc(numbers)
sum=0
for n in numbers:
sum=sum+n*n
return sum
但是调用的时候需要先组装一个list或者tuple
numbers((1,2,3,))
或者numbers([1,2,3])
如果定义函数的时候使用可变参数def calc(*numbers)
则调用的时候可以直接用numbers(1,2,3)来使用。
关键字参数
写法是前面加**
*args是可变参数,args接收的是一个list或者tuple
**kw是关键字参数,kw接收的是一个dict。
可变参数既可以直接传入 func(1,2,3),又可以组装成list或者tuple,再通过*args传入func(*(1,2,3));
关键字参数既可以直接传入 func(a=1,b=2),又可以先组装成dict,再通过**kw传入kw(**{‘a’:1,’b’:2})
阅读全文
0 0
- python自学笔记(一)
- python自学笔记(一)
- Python自学笔记(一)变量类型
- 20170220 Python自学笔记(一)
- Python自学手册笔记(一)
- Python自学笔记一、反射
- Python自学笔记(一)(Python基础知识)
- Python自学(一):概述
- ajax自学笔记(一)
- android自学笔记(一)
- java自学笔记(一)
- TUXEDO自学笔记(一)
- TUXEDO自学笔记(一)
- QuickServer自学笔记(一)
- Linux自学笔记(一)
- Android自学笔记(一)
- Yii自学笔记(一)
- Java自学笔记(一)
- numpy中矩阵有关函数
- php 不用第三个变量交换两个变量的值
- SQLite数据库创建临时表、增加列的方法
- C#的结构
- 关于项目管理软件-禅道的简单使用说明
- python自学笔记(一)
- CDH5离线安装(最新版5.3.3内置hadoop2.5.0)
- 会话管理技能树
- SpringMvc学习笔记(三)对Servlet API和json的支持
- fork,你拿什么证明你的写时拷贝(COW)
- gdb 打印vector
- 简单dp hdu 5532 Almost Sorted Array nlogn 的最长非严格单调子序列
- JavaScript中不能作为变量名的关键字和保留字总结
- python零基础学起