python-查漏補缺

由於從未系統學過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.使用空行組織代碼,類中方法用一個空行,模塊中類的分隔則用兩個空行
待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章