由於從未系統學過python的相關知識,故今天將之前遺漏的部分內容,稍作補充
1.函數部分
1.字符串處理
去末尾空格 s.rstrip()
去頭空格 s.lstrip()
去首尾空格 s.strip()
首字母大寫 s.title()
2.乘方計算 用**表示
如
3**2 9
4**3 64
2.列表
name=['jian','xu','hao','miao','bin','zhen']
print(name[5])
print(name[-1])
name.append('ma')#末尾添加
name.insert(0,'na')#任意位置添加
del name[0]#刪除第一個元素
a=name.pop(0)#彈出第一個元素,注意區分棧中的pop
name.remove('ma')#刪除值爲ma的元素(只刪除第一個)
name.sort()#永久排序正序
name.sort(reverse=True)#倒序
sorted(name)#臨時排序,注意區別
name.reverse()#反轉列表
len(name)#長度
#遍歷列表
for na in name:
print(na)
類似vector的概念,但不同的是可以支持負數訪問,即name[-1],表示倒數第一個元素
range函數
for i in range(1,5)#i從1到4
numbers=list(range(1,5))#創建數字列表 numbers=[1,2,3,4]
numbers=list(range(2,11,2))#創建數字列表,步長爲2numbers=[2,4,6,8,10]
a=min/max(numbers)
a=sum(numbers)
列表解析
squares=[value**2 for value in range(1,11)]
squares=[1,4,9...100]#建立平方列表
切片讀取列表元素
name[a:b]讀取a到b,a爲起始下標,b爲終止下標,均可省略
列表複製
name1=name[:]#這裏必須使用切片,只有這樣纔會複製內容,否則只是引用關聯
while 循環刪除列表中的元素
pets=['cat','dog','cow','cat','dog']
while 'cat'in pets:
pets.remove('cat')
print(pets)
`` `
## 3.元組
與列表不同,元組是不可修改的一組元素
且定義用()
```python
numbers=(20,32)#元組的定義
4.邏輯判斷
#and作用同&&
if a<8 and a>3
#or作用同||
if a>8 or a<3
#檢驗特定值是否存在於列表中
if '...' in name
if '...' not in name
#區別於c中的else if,python 使用elif
if condition1:
do1
elif condition2:
do2
...
else:
do n
5.字典
作用於map與class的結合近似,即鍵值對的形式
#簡單定義與調用
people1={}#建立空字典
people1={'name':'ma','age':'18','sex':'male'}
print(people1['name'])
print(people1['sex'])
#添加
people1['hobby']='sda'
#刪除
del people1['hobby']
#遍歷一所有鍵值對
for key,value in people1.items():#key,value可以是任意變量名
print("key : "+key)
print("value : "+value)
#只遍歷鍵
for key in people1.keys():
#也可不顯式調用keys方法
for key in people1:
#順序遍歷
for key in sorted(people1.keys()):
#只遍歷值
for value in people1.values():
爲了避免重複,可用set去重
for value in set(people1.values()):for value in set(people1.values()):
#列表中存儲字典
people[people1,people2,people3]
#字典中存儲列表
people1={'name':'ma',
'hobby':['basketball','reading','run']
}
#在字典中存儲字典
players={
'A':{'name':'ma',
'age':'18'
},
'B':{'name':'jack',
'age':'19'
}
}
for player,play_info in players.items():
print("player:"+player)
print(play_info['name']+" "+play_info['age'])
6.用戶輸入
#簡單語法
message=input("please input: ")#input參數可空白
print(message)
需要注意的是input()輸入的是字符串型變量,如果用於數值類的操作,需對其進行強制類型轉化
a=input()
a=int(a)
7.函數
定義格式:def 函數名(參數1,參數2、、、):
幾點重要不同
1.關鍵字實參,在傳遞給函數的名稱-值對。直接指出各個實參對應的形參
def desribes(name,age):
print(name)
print(age)
desribes('as','18')#普通調用
desribes(name='asa',age='19')#關鍵字調用
幾種等效的函數調用
def desribes(name='as',age='0'):
print(name)
desribes('ma')
desribes(name='ma')
desribes('na','2')
desribes(name='na',age='2')
desribes(age='2',name='na')
傳遞列表
def desribes(names):
for name in names :
print(name)
names=['jack','john','kitty','julie']
desribes(names)
desribes(names[:])
這裏列表有兩種形式,但區別在於,第一種可以在函數中修改列表內容,傳遞的是原件,第二種即切片表示法,傳遞的是副本,不能修改原列表
傳遞任意數量的形參
用*來建立一個列表,傳過來的參數就儲存在列表中
def Students(*names):
for name in names :
print(name)
Students('sd','ds','dsf'...)
如果需要將位置實參與任意數量實參結合使用,則要把任意實參放在最後
即
def Students(number,*names):
Students(12,'ma'...)
任意數量的關鍵字實參:有時候在不知道傳遞給函數的是什麼信息時,可以將函數編寫爲能夠存儲任意數量的鍵值對的形式
def Students(first,last,**student_info):
profile={}
profile['first']=first
profile['last']=last
for key,value in student_info.items():
profile[key]=value
print(profile)
Students('sd','ds',Location='Tai',sex='male')
將函數存儲在模塊中,以及模塊的調用
#ppp.py模塊
def Students(first,last,**student_info):
profile={}
profile['first']=first
profile['last']=last
for key,value in student_info.items():
profile[key]=value
print(profile)
#ptest.py 調用
1.
import ppp
ppp.Students('ms','ss',Location='sd')
2.爲 ppp重命名
import ppp as p
p.Students('ms','ss',Location='sd')
3.調用函數
from ppp import Students
Students('ms','ss',Location='sd')
4.
from ppp import Students as S
S('ms','ss',Location='sdS')
5.使用*導入所有函數,而非模塊全部內容,避免衝突
from ppp import *
Students('ms','ss',Location='sdS')
注意:編寫函數最好使用描述性名稱,儘量使用小寫字母以及下劃線
給實參指定默認值時,等號兩邊要避免空格
8.類
基本形式
class Dog():
def __init__(self,name,age):
self.name=name
self.age=age
def back(self):
print(self.name+" : wang"+)
def rool(self):
print(self.name.title()+" rolled over")
其中__init__相當於c中的構造函數
實例化
my_dog=Dog('bb', 2)
my_dog.back()
其他方法和變量的調用與c++一致,不再說明
繼承 ***
class Animal():
def __init__(self,name,age):
self.name=name
self.age=age
class Food():
def __init__(self,food):
self.food=food
def printfood(self):
return self.food
class Dog(Animal):
def __init__(self,name,age):
super().__init__(name,age)#super()是一個特殊的函數,用以將子類與父類(也稱超類)關聯起來
self.sound='wang'#添加新屬性
self.food=Food('bone')#將實例類用作屬性
def back(self):
print(self.name+" : "+self.sound)
def rool(self):
print(self.name.title()+" rolled over")
def eat(self):
print(self.name+" eats "+self.food.printfood())
my_dog=Dog('bb', 2)
my_dog.eat()
類的導入
同函數模塊部分一樣,類的導入有多種形式,下面以Car/Electriccar/Battery三類給出幾種方法給出幾種方法
1.導入單個類 from car import Car
2.在一個含多個模塊的類中導入類
from car import Electriccar(Car的子類)
3.導入整個模塊
import car
補充-類的編碼風格
1.類名採用駝峯命名法——類名中每個單詞首字母大寫,不適用下劃線,實例名和模塊名均使用小寫,使用下劃線
2.每個類後,最好包含一個文檔字符串以解釋類的作用
3.使用空行組織代碼,類中方法用一個空行,模塊中類的分隔則用兩個空行
待續