《Python程式設計:從入門到實踐》
《Python程式設計:從入門到實踐》
C2 變數和簡單資料型別
- 慎用小寫字母l和大小字母O
- title() 把每個單詞首字母改成大寫 還有upper lower
- \n 換行符 \t 製表符(在字串引號裡)
- strip,rstrip,lstrip() 去掉空格
- 浮點數問題,3*0.1的執行結果不止兩位小數。
- 3/2 在python3中執行結果為1.5,但在python2中返回1。
- 數字+字串會報錯,要強行str(3)
C3 列表介紹
- exp.append("a") exp.insert(0,"a") del exp[0] exp.pop(0) exp.remove("a")
- pop()為空時,預設刪除最末元素。如果要從列表中刪除以後不再用,使用del(),取出來用,使用pop()。remove()只刪除第一個指定的值。
- exp.sort(reserve=True)按元素大小降序排。sort()對列表永久排序,sorted()臨時排序。reverse()反轉元素排列的順序。
C4 操作列表
- 從列表中取元素,建議程式碼 for cat in cats:
- for i in range(1,5) 列印1 2 3 4 不包括5
squares=[value**2 for value in range(1,11)] print(squares) #列表解析式
- 複製列表:friend_foods=my_foods[:] 這是兩個列表。如果不用[:]操作,則兩個foods仍指向同一列表,改變一個元素,二者都會變。
- 元組:單個元素不可變,但可以整體賦值。相對於列表,元組是更簡單的資料結構,如果需要儲存的一組值在程式的整個生命週期內都不變,可使用元組。
- PEP8。建議每級縮排都用4個空格,不要和tab混用。
C5 if語句
requested_toppings=[]
if requested_toppings: #列表為空時返回False直接執行else語句
for requested_topping in requested_toppings:
print("Adding "+ requested_topping +".")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a pizza?")
C6 字典
for name in sorted(favorite_)languages.keys())
獲取字典元素時,獲取順序是不可預測的,可以用sorted獲取排序副本。還可以用set方法獲取不要重複列表。from collections import OrderedDict
#該模組記錄了鍵-值對的新增順序遍歷字典
favorite_languages={ 'jen':['python','ruby'], 'sarah':['c'], 'edward':['ruby','go'], 'phil':['python','haskell'] }
for name,languages in favorite_languages.items(): # 還可以keys() values() 不指定時預設遍歷所有鍵 print('\n'+name.title()+"'s favorite languages are:") for language in languages: print('\t'+language.title())
C7 使用者輸入和while迴圈
#使用使用者輸入來填充字典
responses={}
pooling_active=True #設定標誌,指出調查是否繼續
while pooling_active:
name=input('\nWhat is your name? ')
response=input('Which mountain would you like to climb someday? ')
responses[name]=response #把答案儲存在問卷中
repeat=input('Would you like to let another person respond?(y/n) ')
if repeat=='no':
pooling_active=False #無人時,停止調查
print('\n---Poll Results---')
for name,response in responses.items():
print(name.title()+' would like to climb '+response.title()+'.')
C8 函式
函式使用預設值時,在形參列表中,把有預設值的形參放在最後。這樣Python仍能正確解讀位置形參。
每個函式值負責一項具體工作。本例中,第一個函式列印每個設計,第二個顯示列印好的模型。
def print_models(unprinted_designs,completed_models): while unprinted_designs: current_design=unprinted_designs.pop()
print('Printing model: '+current_design) completed_models.append(current_design)
def show_completed_models(completed_models): print('\nThe following models have been printed: ') for completed_model in completed_models: print(completed_model)
unprinted_designs=['iphone case','robot pendant','dodecahedron'] completed_models=[]
print_models(unprinted_designs,completed_models) show_completed_models(completed_models)
形參*toppings,將任意數量的實參封裝入元組topping中。形參**userinfo,接受任意數量的關鍵詞實參。
def build_profile(first,last,**user_info): profile={} profile['first name']=first profile['last name']=last for key,value in user_info.items(): profile[key]=value return profile
user_profile=build_profile('albert','einstein',location='princeton',field='physics') print(user_profile)
返回值
{'first name': 'albert', 'last name': 'einstein', 'location': 'princeton', 'field': 'physics'}
C9 類
def __init__(self, name, age):
_ #init左右分別2個下劃線,和def間有一個空格。系統自動傳入實參self,它是指向例項本身的引用,讓例項能夠訪問類中的屬性和方法。_class Car():
def __init__(self,make,model,year): self.make=make self.model=model self.year=year self.odometer_reading=0 #新增里程表屬性 def get_descriptive_name(self): long_name=str(self.year)+' '+self.make+' '+self.model return long_name.title() def read_odometer(self): #讀取里程錶 print('This car has '+str(self.odometer_reading)+' miles on it.') def update_odometer(self,mileage): #可手動修改里程錶,防止回撥里程 if mileage >= self.odometer_reading: self.odometer_reading=mileage else: print('You can\'t roll back an odometer!') def increment_odometer(self,miles): #增加里程值 self.odometer_reading +=miles
my_used_car=Car('subaru','outback','2013') print(my_used_car.get_descriptive_name())
my_used_car.update_odometer(23500) my_used_car.read_odometer()
my_used_car.increment_odometer(100) my_used_car.read_odometer()
class Battery(): #定義電瓶
def __init__(self,battery_size=70): #初始化電瓶屬性 self.battery_size=battery_size def describe_battery(self): #列印電瓶容量描述資訊 print('This car has a ' + str(self.battery_size) + '-kWh battery.') def get_range(self): #定義電瓶續航里程 if self.battery_size == 70: range = 240 if self.battery_size == 85: range = 270
message = 'This car can go approximately ' + str(range) message += ' miles on a full charge.' print(message)
class ElectricaCar(Car): #電動車的獨特之處:呼叫電瓶 #建立子類。父類必須在當前檔案中、子類前,括號中制定父類名稱
def __init__(self,make,model,year): super().__init__(make,model,year) #super()呼叫父類的init方法,繼承父類所有屬性 self.battery=Battery()
my_tesla=ElectricaCar('tesla','models',2016)
print(my_tesla.get_descriptive_name()) my_tesla.battery.describe_battery() my_tesla.battery.get_range()
C10 檔案和異常
- 對於open(), with在不再需要訪問檔案後關閉,比close()更優。
- open()中可指定'r' 'w' 'a' 'r+'讀取、寫入、附加、讀和寫4種模式。寫入時,會自動建立、或覆蓋原檔案。
python中只能讀寫字串,可能需要用str()方法轉換。
with open('pi_digits.txt') as file_object:
contents=file_object.read() print(contents.rstrip())try-except-else結構。有時讓使用者看到報錯的traceback是危險的。將可能引發異常的結構放在try裡,如果異常執行except語句。
print("Give me two numbers, and I'll divide them.") print("Enter 'q' to quit.")
while True: first_number=input("\nFirst number: ") if first_number=='q': break second_number=input("\nSecond number: ") if second_number=='q': break try: answer=int(first_number)/int(second_number) #將input的str轉為int except ZeroDivisionError: #報錯,但程式繼續執行 print("You can't divide by zero!") else: print(answer)
相關文章
- Python 程式設計從入門到實踐5Python程式設計
- Python專案實戰(一)《Python程式設計 從入門到實踐》Python程式設計
- 《Python程式設計:從入門到實踐》第2章習題Python程式設計
- python程式設計:從入門到實踐學習筆記-字典Python程式設計筆記
- 《python 程式設計從入門到實踐》序:學習目標Python程式設計
- 資源 | 小白必收!《Python程式設計 從入門到實踐》Python程式設計
- 三週刷完《Python程式設計從入門到實踐》的感受Python程式設計
- python程式設計:從入門到實踐學習筆記-函式Python程式設計筆記函式
- 《Python程式設計:從入門到實踐》 筆記(一)基礎知識Python程式設計筆記
- 【Python程式設計從入門到實踐】 1 Linux搭建Python編譯環境Python程式設計Linux編譯
- Python Type Hints 從入門到實踐Python
- Python程式設計:從入門到實踐(第2版)第1章習題答案Python程式設計
- GraphQL 從入門到實踐
- Redis從入門到實踐Redis
- nginx從入門到實踐Nginx
- 7月讀書筆記-Python程式設計:從入門到實踐(未完進展中)筆記Python程式設計
- python程式設計:從入門到實踐學習筆記-使用者輸入和while迴圈Python程式設計筆記While
- Python多執行緒程式設計深度探索:從入門到實戰Python執行緒程式設計
- 求大神解答,《Python程式設計從入門到實踐》第94-95頁,外星人入侵Python程式設計
- Docker從入門到動手實踐Docker
- GDB除錯-從入門到實踐除錯
- Python入門到實踐-計算機算數Python計算機
- python核心程式設計:入門Python程式設計的8個實踐性建議Python程式設計
- Python 指令碼高階程式設計:從基礎到實踐Python指令碼程式設計
- Python入門到實踐-變數Python變數
- python程式設計:從入門到實踐 (第一版) 第八章學習筆記Python程式設計筆記
- Python函數語言程式設計:從入門到走火入魔Python函數程式設計
- Python的函數語言程式設計,從入門到⎡放棄⎦Python函數程式設計
- Python入門到實踐-瞭解PythonPython
- python程式設計從基礎到實踐第四章Python程式設計
- Android Camera 程式設計從入門到精通Android程式設計
- 程式設計實踐考試的入門模板程式設計
- Python入門到實踐-Hello Python3Python
- 手摸手帶你 Docker 從入門到實踐Docker
- Docker 從入門到實踐-3-安裝Docker
- 設計模式從放棄到入門設計模式
- redux 入門到實踐Redux
- Minecraft 從入門到入坑(邊玩遊戲邊學程式設計)Raft遊戲程式設計