Python 简明学习笔记
一:最初的步骤:
・添加环境变量:path=%path%;c:\python26;.
・第一个helloworld程序:
#!/usr/bin/python
#Filename:hellowrold.py
pirnt 'hello world'
运行:Python helloworld.py
输出:hello world
二:基本概念:
常量:不能改变值的量
数:
整数:int
长整数:long //int和long 有合并的趋势,长整形所表达的数的最大值取决于用户计算机的虚拟内存总数,与java中的bigInterger相似。
浮点数:float 如:2.23E-4
复数: -5+3j
decimal:用于十进制浮点数。并非内建,使用前需导入decimal模块。例如:由于二进制表示中有一个无限循环片段,数字1.1无法用二进制浮点数精确表示,如:
>>>1.1
1.1000000000000000000001
>>>print decimal.Decimal('1.1')
1.1
字符串:string
・使用单引号('')
引号中的所有空白都原样保留,如'this is a python example'
・使用双引号("")
同单引号。
・使用三引号('''或""")
用于指示一个多行字符串,在其中可以自由使用'和":
'''example of multi-line string.
"what is your name ?"
'my name is anix.'
'''
・转义符:(\)
如:'what\'s your name?' //注意这里也可以用双引号而不使用转义符:"what's your name?"
又如:"this is the first sentence.\
this is the second one."等价于"this is the first sentence.this is the second one."
・自然字符串:如果需要指定某些不需要如转义符那样的特别处理字符串,那么需要指定为自然字符串,自然字符串通过给字符串加上前缀r或R指定:如:
r 'newlines are indicated by \n'
・Unicode字符串
字符串中包含非拉丁字母时,需要被指定为Unicode字符串,制定方法为在字符串前加上前缀U或u,如:U"这是简体中文。"
・星号*
表示重复,如:
>>>pystr='hello'
>>>pystr * 2
hellohello
>>>'-'*10
'----------'
tips:字符串是不可变的。
变量
标示符的命名:
・标示符的第一个字符必须是字母表中的字母或一个下划线'_'
・标示符其他部分可以由字母,下划线,数字组成。
・标示符对大小写敏感。
数据类型:变量可以处理的不同类型的值称为数据类型
对象
三:运算符与表达式
运算符 说明 例子
+ 3+5得8.'a'+'b'得'ab'
-
* 2*3得6;'ha'*3得'hahaha'
** 返回x的y次幂 2**10得 1024
/ 4/3得1;4.0/3得1.333333
// 取整 4/3.0得1.0
% 取模 4//3.0得1;8%3得2;-25.5%2.25得0.75
<< 左移 2<<1得4
>> 右移 2>>1得1;3>>1得1
& 按位与
| 按位或
^ 按位非
~ 按位翻转(x的按位翻转式-(x+1)) ~5得-6
<
>
<=
>=
==
!=
not 布尔非
and 布尔与
or 布尔或
运算符优先级:
运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...) 函数调用
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 字符串转换
四:数据结构
1:list tuple
列表和元组可以被看做是数组,可以存储任意类型数据,并可以用切片操作[],[:]得到子集。
区别是:1:列表用[]包裹,元组用()包裹;2:列表元素可以修改,而元组数据不可以修改。
>>>alist=[1,2,3,4]
>>>alist
[1,2,3,4]
>>>alist[0]
1
>>>alist[2:] #从第三个元素开始到结尾(包括第三个)
[3,4]
>>>alist[:3] #从头到第四个元素(不包括第四个)
[1,2,3]
>>>alist[0]=5
>>>alist
[5,2,3,4]
>>>atuple=('apple',3,7,'orange')
>>>atuple
('apple',3,7,'orange')
>>>atuple[:3]
('apple',3,7)
>>>atuple[2:]
(7,'orange')
>>>atuple[1:3]
(3,7)
2:字典 map
工作原理类似哈希表,是由key-value对组成,用{}包裹,key和value之间用':'分割,不同key-value对之间用','分割。
>>>adict={'host':'google.com','dns':'8.8.8.8'}
>>>adict['port']=23
>>>adict
{'host':'google.com','dns':'8.8.8.8','port':23}
>>>adict['host']
'google.com'
>>>adict.keys()
['host','dns','port']
>>>for key in adict:
print key,adict[key]
```
host google.com
dns 8.8.8.8
port 23
3:序列
元组、列表和字符串都属于序列。序列的两个主要特点是:索引操作符和切片操作符。索引操作符可从序列中抓取一个特定项目,切片操作符可以从序列中获取一个子集。
Python中序列的一个重要特点是索引可以为负值:-1表示最后一个元素,,-2表示倒数第二个元素......
eg:
#!/usr/bin/python
# Filename: seq.py
shoplist = ['apple', 'mango', 'carrot', 'banana']
# Indexing or 'Subscription' operation
print 'Item 0 is', shoplist[0]
print 'Item 1 is', shoplist[1]
print 'Item 2 is', shoplist[2]
print 'Item 3 is', shoplist[3]
print 'Item -1 is', shoplist[-1]
print 'Item -2 is', shoplist[-2]
# Slicing on a list
print 'Item 1 to 3 is', shoplist[1:3]
print 'Item 2 to end is', shoplist[2:]
print 'Item 1 to -1 is', shoplist[1:-1]
print 'Item start to end is', shoplist[:]
# Slicing on a string
name = 'swaroop'
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]
输出
$ python seq.py
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is ['mango', 'carrot']
Item 2 to end is ['carrot', 'banana']
Item 1 to -1 is ['mango', 'carrot']
Item start to end is ['apple', 'mango', 'carrot', 'banana']
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
4:引用
当在计算机中创建一个对象并把它赋予一个变量时,这个变量仅仅引用那个对象,而不是表示这个对象本身,两者只是存在绑定关系。还可以有其他变量指向同一个对象。
eg:
#!/usr/bin/python
#!Filename:reference.py
shoplist=['apple','mango','carrot','banana']
mylist=shoplist #mylist is just another name pointing
to the same object
del shoplist[0]
print 'shoplist is ',shoplist
print 'mylist is ',mylist
#apple has been removed in the object, so the reference of it
#will print the same list which has no apple.
print'copy by making full slice'
mylist=shoplist[:]
del mylist[0] #remove first item
print 'shoplist is ',shoplist
print 'mylist is ',mylist
output:
shoplist is ['mango', 'carrot', 'banana']
mylist is ['mango', 'carrot', 'banana']
Copy by making a full slice
shoplist is ['mango', 'carrot', 'banana']
mylist is ['carrot', 'banana']
//列表的赋值语句不创建copy,你得通过切片创建拷贝。
五:控制流
1:if语句(if... elif...else:)
eg:
#!/usr/bin/python
#Filename:if.py
number=23
guess=raw_input('enter an integer:)
if guess==number:
print'bingle!'
elif guess<number:
print'a little higher~'
else:
print'a little lower~'
print 'Done'
//Python中没有switch语句,你可以使用if...elif...else完成同样的工作,但在某些场合使用字典(map)会更有效率。
2:while语句
eg:
#!/usr/bin/python
#Filename:while.py
number=23
running=True
while running:
guess=raw_input('enter an integer:')
if guess==number:
print r'bingle!\n'
running=False
elif guess<number:
print r'a litter higher~\n'
else:
print r'a little lower~\n'
else:
print'the loop is over~' #useless~
print'Done'
//你可以在while循环中使用一个else从句!
3:for循环
for...in 可以在一个递归对象上递归逐一使用队列的每个item。
eg:
#!/usr/bin/python
#Filename:for.py
for i in range(1,5): #等价于for i in【1,2,3,4】
print i
else:
print'loop is over'//useless
output:
1
2
3
4
loop is over
#range()是内建函数,产生一个序列。
#range(2,10,2),表明产生这么一个序列:从2开始,到10终止(不含10),步长为2 ,即【2,4,6,8】,如果没有第三个参数,默认步长为1.
#lese部分是可选的,如果包含else部分,它总是在for结束后执行一次,除非遇到break语句。
#for i in range(0,5)等价于C中 for(int i=0;i<5;++i)
4:break语句
中断/跳出循环
eg:
#!/usr/bin/python
#Filename:break.py
while True:
s=raw_input()
if s=='quit'
break
print'length of the string is ',len(s)
print 'Done'
5:continue
跳过当前循环的剩余语句,执行下一轮循环。
eg:
#!/usr/bin/python
# Filename: continue.py
while True:
s = raw_input('Enter something longer than 3 chars : ')
if s == 'quit':
break
if len(s) < 3:#len()为内建函数,返回字符串字长。
continue
print 'Input is of sufficient length'
#############################################
G2
programming is fun
when the work is done
if you wanna make your work also fun:
use Python!
#############################################
没有评论:
发表评论