Python學習筆記(一)


python編程從入門到實踐


變量和簡單數據類型

字符串相關

name.title ()   	——  以首字大寫的方式顯示每個單詞 
name .lower ()		——字符串改爲全部小寫
name .upper ()		——字符串改爲全部大寫

\n	添加換行符
\n\t	換到下一行、並且在下一行開頭添加一個製表符

name.rstrip()		——可確保字符串name 末尾沒有空白
name.lstrip()		——確保name 開頭沒有空白
name.strip()		——確保name 兩端沒有空白
la = 'wait'

message = "happy" + str(age) + "rd Birthday!"

import this  ——獲悉編寫優秀python的指導原則

列表簡介

# python 索引從0開始,而不是1
name[0].title()

#添加元素	將元素附到列表末尾
moto.append('elc')
#插入元素	任何位置
moto.insert(num, 'elc')
#刪除元素	del刪除後不使用、pop刪除後還能使用
	del moto[num];
	#pop()可刪除列表任何的元素,並讓你能夠接着使用
    last = moto.pop(num)	#意味着被刪除的元素,並且彈出
	
    #根據值刪除元素、刪除後還能接着使用它的值
    moto.remove('elc')		#只能刪除第一個指定值
    
#使用sort()對列表進行永久性排序
    cars.sort()		#默認按照字母順序排列	Ex:reverse = True
   
#使用sorted()進行列表臨時排序
	sorted(cars, reverse  = True)
#反轉列表元素順序
	cars.reverse ()
#函數len()可以獲悉列表長度
	len(cars)

    

操作列表

#for循環
	for magician in magicians:
       print(magician)		#打印時,會自動換行
#千萬要注意縮進形式

#創建數字列表
	range(1,5)		#從指定第一值開始,並在到達第二個指定值停止,不包含第二個
    #從2開始不斷加2,知道達到或超過終值(11),末尾的2位步長
    number = list(range(2,11,2))
ex:
    squares = []			#!!!
    for value in range(1,11)
    	square = value**2
        squares.qppend(square)
       
    print(squares)
    
ex:
    squares = [value**2 for value in range(1,11)]
    
#需要指定索引0~3,這將輸出分別爲0、1、2的元素
print(player[0:3])
#最後三個元素
print(player[-3:])

#複製列表、即創造獨立副本
friend_foods = mu_food[:]

#元組、創造一系列   不可修改!的元素
	dimensions = (200, 50)		#利用圓括號,表示元素200、50
    
	

if語句

#在python中,檢查是否相等時區分大小寫
#所以一般只想檢查變量的值是,可將變量值轉化爲小寫	car.lower()

#檢查多個條件	可使用 and 或者 or 直接相連
#檢察特定值是否包含在列表中
‘mushrooms’ in requested_toppings

#檢查特定值是否不包含在列表中
if user not in banned_users:
    print()
    
#if-else
if age <=18:
    print()
else:
    print()
    
#if-elif-else		price = 5;則在打印的時候應該爲:str(price)
if age <4:
    print()
elif age<10:
    print()
else:
    print()

#在一個列表中存儲數字1-9
numbers = list(range(1, 10));

for number in numbers:
    print(str(number) + "th")

字典

#關於字典,注意大括號和中括號的使用
alien_0 = {'color': 'green ', 'point ': 5}


print (str (alien_0['points']))

#給字典中添加一組	'x_position' : 0 
alien_0['x_position '] = 0	#注意此處中括號
#刪除某一組值
del alien_0['points']		#該值永遠消失
#使用字典來存儲用戶提供的數據或在編寫能自動生成大量鍵-值對的代碼時,通常都需要定義一個  空字典!!

#有類似對象組成的字典		注意書寫格式
favorite_language = {
    'Jen ': 'python',
    'sarah' : 'c',
    'edward' : 'ruby',
	}

# ‘age ’ 不等於 'age'    前一個含有空格
print(str(message['age ']))

##   for key, value in user_0.items():
##	 if 'Erin' not infavourite_last.keys():

### 字典中values(), keys(), items() 
>>> dict = { 1 : 2, 'a' : 'b', 'hello' : 'world' }  
>>> dict.values()  	#返回的是  值列表
['b', 2, 'world']  
>>> dict.keys()  	#返回的是  鍵列表
['a', 1, 'hello']  
>>> dict.items()  	#返回的是  值-鍵對應
[('a', 'b'), (1, 2), ('hello', 'world')]  

#若要按照順序遍歷	sorted()
for name in sorted(favorite_language.keys()):
    
#若爲了剔除重複項,則可以使用set()
for language in set(favourite_language.values()):
   
#在字典中存儲字典時的調用
for city, city_info in cities.items():
    country = city_info['country'].title()

用戶輸入和while循環

#input()函數的調用
name = input("please enter your name:")
print("Hello, + name + "!")
      
#在字符串和數字進行比較時,不能直接比較。應該利用   int()   進行換算
# 例如在作比較時,可以使用:	height = int(height)  然後進行 if height >36
      
# int(number)  從字符串轉化成數字	從用於 判斷時
# str(number)  從數字轉化成字符串	常用於 打印時

#在while執行之前一般都要進行中間變量初始化
active = True
while active:

#退出循環的兩種方式
1.while 的條件執行變成 False
2.break

# continue 用來返回循環開頭,並根據條件測試結果決定是否繼續執行  用法同break

#利用while進行重複元素刪除
while 'cat' in pets:
      pets.remove('cat')
#使用用戶輸入來填充字典
	responses[name] = response


函數

#關鍵字實參		以下兩者是相同的
describe_pet(animal_type = 'hamster', pet_name = 'harry')
describe_pet(,pet_name = 'harry', animal_type = 'hamster')

# 函數返回簡單值
def ____
	return full_name.title()
#函數可返回任何類型的值 包括列表和字典等較複雜的數據結構

#傳遞列表
#禁止函數修改列表
	function_name(list_name[:])
    ex:  print(unprinted_designs[:], completed_models)
        
#傳遞任意數量的實參
###形參名*toppings中的星號讓python創建一個名爲toppings的空元祖,並將收到的所有制均存在這個空元組中
def make_pizza(*toppings):
    for topping in toppings:
        print("-" + topping)
make_pizza('peperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
#如果要讓函數接收不同類型的實參,必須在函數定義中將接納任意數量的形參放在最後

#使用任何數量的關鍵字實參
def build_profile(first, last, **user_info)

#導入整個模塊	pizza.py 和 making_pizza.py 應放在同一目錄下
#在making_pizza.py中,可以使用: 
import pizza
#如果要從導入模塊中的特定函數則:
from module_nmae import function_name
from pizza import make_pizza

#使用as給函數指定別名
#例如給函數   make_pizza()指定了別名 mp()
from pizza import make_pizza as mp
from module_nmae ipmort function_name as fn
import pizza as p

#導入模塊中的所有函數	!!將pizza的所有函數複製到當前文件夾,但是慎用:因爲可能出現多個名稱相同的函數或變量,進而覆蓋函數
from pizza import *

##給形參制定默認值時,或者調用關鍵字實參,等號兩邊不要有空格
def function_name(parameter_0, parameter_1='default value')

#在python中,首字母大寫的名稱指的是 類;
#在命名中,我們通常可以認爲首字母大寫的名稱(Dog)指的是類;而小寫的名稱(my_dog)指的是根絕類創建的實例
class Dog():
	#__init__()第一包括三個形參,其中self必不可少,而且位於其他所有之前
	def __init__(self, name, age):
		"""初始化屬性name和age"""
		self.name = name
		self.age = age
	
	def sit(self):
		"""模擬小狗被命令時蹲下"""
		print(self.name.title() + " is now sitting.")
	
	def roll_over(self):
		"""模擬小狗被命令時打滾"""
		print(self.name.title() + " rolled over")
        
#修改屬性的值
#1.直接修改屬性的值
#2.通過方法修改屬性的值 		def update(self, mileage):
#3.通過方法對屬性的值進行遞增


#關於繼承
#子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法
#創建子類時,父類必須包含在當前文件中,且位於子類之前
class EledctricCar(Car):
    	#函數super()是一個特殊函數,幫助python將父類和子類關聯起來
        #父類也成爲superclass, 名稱super因此出名
        def __init__(self,make, model, year):
            super().__init__(make, model, year)
            
#重寫父類的方法
#可在子類中定義,他與要重寫的父類方法同名,則python可忽視父類中的方法。

##!!將實例用作屬性

#在car.py中導入Car類,並創建其實例
from car import Car		#car爲文件名,Car爲類名
##直接導入整個模塊 car.py
import car 		
my_beetle = car.Car('volkswagen', 'beetle', 2016)


#調用OrderedDict()來創建一個空的有序字典,並將其存儲在glossary中。
from collections import OrderedDict
glossary = OrderedDict()


文件和異常

#本章的技能可提高程序的適用性、可用性和穩定性

#讀取整個文件				注意要放在同一文件夾下
with open('pi_digits.txt') as file_object:
	contents = file_object.read()
	print(contents.rstrip())	#.rstrip 可以刪除字符串末尾的空白行
    							#.strip  可以刪除字符串每行左側的空格

#文件路徑
file_path = 'C:\Users\ehmatthes\other_files\text_files\filename.txt'
with open(file_path) as file_object:
    
#對文件進行逐行讀取
with open('pi_digits.txt') as file_object:
	for line in file_object:
		print(line.rstrip())

#創建一個包含各行內容的列表,	並且使用文件的內容
filename = 'pi_30_digits.txt'

with open(filename) as file_object:
    lines = file_object.readlines()
    
pi_string = ''
for line in lines:
    	pi_string += line.stip()

print(pi_string)	##	print(pi_string[:52] + "...") 
print(len(pi_string))

#打開文件時,可指定“都區模式('r')、寫入模式('w')、附加模式('a')或者可以同時讀取和寫入文件的模式('r+')”

#如果要給文件添加內容,而不是覆蓋原有的內容,可用附加模式('a')

#try-except  異常代碼處理
try:
except ZeroDivisionError:
else:
    
#處理FileNotFoundError  你要查找的其他文件、文件名可能不正確或者這個文件根本不存在
#方法split()以空格爲分隔符將字符串分拆成多個部分
words = contents.split()
num_words = len(words)
print(num_words)

#使用多個文件時,可用函數表示
def count_words(filename):
    
#  pass 語句,可在代碼塊中使用來讓python什麼都不要做
#可以使用count()確定特定單詞或短語在字符串中出現了多少次
line.count('row')
line.lower().count('row')

#模塊json讓你能夠簡單的python數據結構轉儲在文件中,並在程序再次運行時加載該文件中的數據
#json.dump()用來存儲這組數字,,	json.load()負責使用~~~number_writer.py
import json

number = [2.35.7.11.13]

filename = 'numbers,json'
with open(filename, 'w') as f_obj:
    json.dump(numbers, f_obj)~~~num_reader.py
import json

filename = 'numbers.json'
with open(filename) as f_obj:
    numbers = json.load(f_obj)
    
print(numbers)

測試代碼

#unittest提供了一系列代碼測試工具
#unittest類最有用的功能之一:斷言!!斷言使用來覈實得到的結果是否與期望的結果一樣
import unittest 
class NameTestCase(unittest.TestCase)def   :
        self.assertEqual(formatted_name, 'Woflgang Amadeus Mozart')
方法 用途
assertEqual(a, b ) 覈實 a == b
assertNotEqual(a, b) 覈實 a != b
assertTrue(x) 覈實x爲true
assertFalse(x) 覈實x爲false
assertIn(item, list) 覈實item在list中
assertNotIn(item, list) 覈實item不在list中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章