函數的定義:
def function_name(parameters):
block
return expression
自帶函數:
abs(-9) #取絕對值
round(3.4) #浮點數四捨五入到整數
pow(2,4) #2的4次方
raw_input() #用戶輸入
例如:
>>> name=raw_input("Pls enter a name: ")
Pls enter a name: Obama
>>> name
'Obama'
模塊:
>>> import math
>>> math.sqrt(9)
3.0
定義本身的模塊:name.py中存放function一、function2等,name.function1
經常使用的字符串處理方法:
S.lower() #將S中全部字母轉化成小寫並輸出
S.upper() #將S中全部字母轉化成大寫並輸出
S.islower() #測試S中全部字母是否都爲小寫
S.isupper() #測試S中全部字母是否都爲大寫
S.swapcase() #大小寫互換
S.capitalize() #首字母大寫
S.find(s,beg) #返回S中索引beg以後首次出現s的索引,如沒有返回-1
S.find(s,beg,end) #返回S中索引beg與索引end之間首次出現s的索引,如沒有返回-1
如:
>>> "abcdefg".find("f",3)
5
>>> "abcdefg".find("f",3,6)
5
S.replace(old,new) #將S中全部old替換成new
如:
>>> "abcdefg".replace("b","M")
'aMcdefg'
S.split(del) #將del分割的子串以列表的形式返回
如:
>>> "abcdefg".split("b")
['a', 'cdefg']
S.strip(s) #刪除字符串中的s並返回
S.startswith(s) #判斷是否以s開始並返回
S.endswith(s) #判斷是否以s結尾並返回
如:
>>> "Computer Science".swapcase().endswith("ENCE")
True
Dictionary數據類型:
大括號括起來,裏邊是多個元素,每一個元素由"key":"value"組成,元素之間逗號間隔
如:d={"1":"Alsen","2":"Oxsel"}
能夠發現輸入命令行d["2"]時,系統返回'Oxsel'
key大小寫敏感
增長元素時,只須要命令行 d["4"]="Fabien"便可,鍵值對在d中不排序
刪除元素時,del d["2"]
清空元素時,d.clear()
>>> d={"1":"Alsen","2":"Oxsel"}
>>> d.keys()
['1', '2']
>>> d.values()
['Alsen', 'Oxsel']
>>> d.items()
[('1', 'Alsen'), ('2', 'Oxsel')]
>>> ["%s=%s" %(k,v) for k,v in d.items()]
['1=Alsen', '2=Oxsel']
>>> ";".join(["%s=%s" %(k,v) for k,v in d.items()])
'1=Alsen;2=Oxsel'
List數據類型:
>>> original=['H','He']
>>> final=original+['Be']
>>> final
['H', 'He', 'Be']
>>> metals="Fe Ni".split()
>>> metals*4
['Fe', 'Ni', 'Fe', 'Ni', 'Fe', 'Ni', 'Fe', 'Ni']
for循環
>>> outer=['1','2','3','4']
>>> inner=['A','B','C']
>>> for digi in outer:
... for alp in inner:
... print digi+alp+'\t',
...
1A 1B 1C 2A 2B 2C 3A 3B 3C 4A 4B 4C
切片:
>>> marker=["a","b","c","d","e"]
>>> marker[1:4]
['b', 'c', 'd']
切片的list[i:j]從索引i(包含)開始,到索引j(不包含)結束
別名機制:A和B均引用了1個列表,經過A對該列表修改都能被B看到
>>> A=['0','1','2','3']
>>> B=A[:]
>>> A[2]='test'
>>> A
['0', '1', 'test', '3']
>>> B
['0', '1', '2', '3']
>>> A=['0','1','2','3']
>>> B=A
>>> A[2]='test'
>>> A
['0', '1', 'test', '3']
>>> B
['0', '1', 'test', '3']
列表:
>>> number='1 2 3 4 5'.split() #分割,結果是['1', '2', '3', '4', '5']
>>> number.append('8') #追加
>>> number.insert(3,'8') #索引3處添加值8
>>> number.remove('8')
>>> number.reverse() #反轉列表中的順序
>>> number.sort() #升序排列
>>> number.pop() #移除,並返回列表的最後1個元素
>>> number.strip() #去掉行結束符
例如:
>>> line="marshal\n"
>>> len(line)
8
>>> len(line.strip())
7
Tuple數據類型:
不可變的list,小括號包圍
不能向tuple中增長、刪除、查找元素
但可使用in來查看一個元素是否存在與tuple中
if語句:
注意的是(1)條件後邊要加冒號,即if condition:(2)要認真縮進。
for語句:
for variable in list:
block
例如:
for i in range(2000,2050,4):
print i
enumerate()函數:
返回pair,第一個元素爲索引,第二個元素爲值
for i in enumerate(range(2000,2050,4)):
print i
while循環:
while condition:
block
break和continue:
break:跳出循環體
continue:跳回循環體頂部,從新開始下一次迭代
如:
entry_number = 1
file = open("data.txt","r")
for line in file:
line = line.strip()
if line.startswith("#"):
continue
if line == "Earth":
break
entry_number = entry_number + 1
print "Earth is the %d th-lightest planet." %(entry_number)
也能夠寫成:
entry_number = 1
file = open("data.txt","r")
for line in file:
line = line.strip()
if not line.startswith("#"):
if line == "Earth":
break
entry_number = entry_number + 1
print "Earth is the %d th-lightest planet." %(entry_number)
連續值賦值:
>>> (m,tu,w,th,f,s)=range(6)
>>> tu
1
>>> th
3
映射賦值:
>>> li=[1,3,4,7,5]
>>> [i*2 for i in li]
[2, 6, 8, 14, 10]
>>> li
[1, 3, 4, 7, 5]
>>> [i for i in li if i>6]
[7]
and 和 or :
執行布爾邏輯演算,可是它們並不返回布爾值,而是返回它們實際進行比較的值之一
從左到右演算表達式的值
>>> a="first"
>>> b="second"
>>> 1 and a or b
'first'
>>> 0 and a or b
'second'
導入模塊:
方法一:import module
方法二:from module import XXX
區別在於:
>>> import types
>>> types.FunctionType
<type 'function'>
>>> FunctionType
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'FunctionType' is not defined
>>> from types import FunctionType
>>> FunctionType
<type 'function'>
若是要常常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用 from module import。
若是模塊包含的屬性和方法與你的某個模塊同名,你必須使用 import module 來避免名字衝突。
儘可能少用 from module import * ,由於斷定一個特殊的函數或屬性是從哪來的有些困難,而且會形成調試和重構都更困難。
類class:
經過結構(struct),咱們將簡單數據類型(int,float,bool……)或簡單數據類型的數組、指針,組合成一個新的數據類型。
世界是由「數據」和「動做」組成的。光能定義出各類數據類型,還只是編程世界的一半。
類(class)的定義中,加入了函數
「動做」與「數據」從這裏開始合二爲一,在類的定義裏,同時能夠包括數據及函數。由此開啓了「面向對象」世界之門
1. 使用一個名爲 __init__ 的方法來完成初始化。
2. 全部的實例方法都擁有一個 self 參數來傳遞當前實例,相似於 this。
3. 可使用 __class__ 來訪問類型成員
例子:
*********************************************************************
class Person():
population=0
def __init__(self,name):
self.name=name
Person.population+=1
def sayHi(self):
print 'Hello everyone, my nationality is %s'% self.name
def howMany(self):
if Person.population==1:
print "I am the only one here"
else:
print "We have %d people here" % Person.population
a=Person('China')
a.sayHi()
a.howMany()
b=Person('USA')
b.sayHi()
b.howMany()
c=Person('France')
c.sayHi()
c.howMany()
*********************************************************************
結果:
Hello everyone, my nationality is China
I am the only one here
Hello everyone, my nationality is USA
We have 2 people here
Hello everyone, my nationality is France
We have 3 people here
另外一個例子:
*********************************************************************
class Account(object):
"一個簡單的類"
account_type="Basic"
def __init__(self,name,balance):
"初始化一個新的Account實例"
self.name=name
self.balance=balance
def deposit(self,amt):
"存款"
self.balance=self.balance+amt
def withdraw(self,amt):
"取款"
self.balance=self.balance-amt
def inquiry(self):
"返回當前餘額"
return self.balance
a=Account('1',50)
a.deposit(33)
a.withdraw(16)
print(a.balance)
*********************************************************************
結果:
67express