while循環(huán)
while 判斷語句:
語句
實例:
n = 100
sum = 0
counter = 1
while counter <= n:#條件為false是跳出
sum = sum + counter
counter += 1
print("1 到 %d 之和為: %d" % (n,sum))
寫一個無限循環(huán):
var = 1
while var == 1 : # 表達式永遠為 true
print('夢妍大佬你好!')
print ("Good bye!")
while & else
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
for語句
Python for循環(huán)可以遍歷任何序列的項目准颓,如一個列表或者一個字符串。
for <variable> in <sequence>:
<statements>
else:
<statements>
實例:
tester = ['myl', 'lnc', 'xg', 'zzl', 'qfl']
for x in tester:
print(x)
使用break跳出循環(huán)
tester = ['myl', 'lnc', 'xg', 'zzl', 'qfl']
list = []
for name in tester:
list.append(name)
if name == 'xg':
break
else:
print('員工列表為空')
print('the old tester:',list)
print('完成循環(huán)')
循環(huán)到zzl之后就跳出循環(huán)
break和continue語句及循環(huán)中的else子句
break 語句可以跳出 for 和 while 的循環(huán)體圃郊。如果你從 for 或 while 循環(huán)中終止,任何對應(yīng)的循環(huán) else 塊將不執(zhí)行女蜈。 實例如下:
tester = ['myl', 'lnc', 'xg', 'qfl', 'zzl']
for name in tester:
if name == 'myl':
break
print('大佬為:',name)
tester = ['myl', 'lnc', 'xg', 'qfl', 'zzl']
t = 0
while t < len(tester):
print(t)
if tester[t] == 'lnc':
print('大佬為',tester[t])
break
t = t + 1
print('bye')
continue語句被用來告訴Python跳過當(dāng)前循環(huán)塊中的剩余語句持舆,然后繼續(xù)進行下一輪循環(huán)。
tester = ['myl', 'lnc', 'xg', 'zzl', 'qfl']
for name in tester:
if name == 'qfl':
continue
print('tester中的大佬為:',name)
pass語句
Python pass是空語句伪窖,是為了保持程序結(jié)構(gòu)的完整性逸寓。
pass 不做任何事情,一般用做占位語句惰许,如下實例
for letter in 'Runoob':
if letter == 'o':
pass
print ('執(zhí)行 pass 塊')
print ('當(dāng)前字母 :', letter)
print ("Good bye!")
Pyhon3 函數(shù)
函數(shù)是組織好的席覆,可重復(fù)使用的,用來實現(xiàn)單一汹买,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性聊倔,和代碼的重復(fù)利用率晦毙。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()耙蔑。但你也可以自己創(chuàng)建函數(shù)见妒,這被叫做用戶自定義函數(shù)。
定義一個函數(shù)
你可以定義一個由自己想要功能的函數(shù)甸陌,以下是簡單的規(guī)則:
- 函數(shù)代碼塊以 def 關(guān)鍵詞開頭须揣,后接函數(shù)標(biāo)識符名稱和圓括號 ()。
- 任何傳入?yún)?shù)和自變量必須放在圓括號中間钱豁,圓括號之間可以用于定義參數(shù)耻卡。
- 函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
- 函數(shù)內(nèi)容以冒號起始牲尺,并且縮進卵酪。
- return [表達式] 結(jié)束函數(shù)幌蚊,選擇性地返回一個值給調(diào)用方。不帶表達式的return相當(dāng)于返回 None溃卡。
語法
def 函數(shù)名(參數(shù)列表):
函數(shù)體
實例:
def hello():
print('Hello World')
復(fù)雜點的:
def cha(w, h):
return w- h
l, f =4, 5
print(cha(w,h))#按順序
print(cha(h=5,w=4))#指定
def printinfo( name, age = 35 ):
"打印任何傳入的字符串"
print ("名字: ", name)
print ("年齡: ", age)
return
#調(diào)用printinfo函數(shù)
printinfo( age=24, name="lqf" )
print ("------------------------")
#不傳age溢豆,則使用定義時的默認值35
printinfo( name="lqf" )
不定長參數(shù)
加了星號(*)的變量名會存放所有未命名的變量參數(shù)。如果在函數(shù)調(diào)用時沒有指定參數(shù)瘸羡,它就是一個空元組漩仙。我們也可以不向函數(shù)傳遞未命名的變量。如下實例:
def printinfo( arg1, *vartuple ):
"打印任何傳入的參數(shù)"
print ("輸出:,"arg1)
for var in vartuple:
print (var)
return
# 調(diào)用printinfo 函數(shù)
printinfo( 10 )
printinfo( 70, 60, 50 )
作用域
total = 0 # 這是一個全局變量
# 可寫函數(shù)說明
def sum( arg1, arg2 ):
#返回2個參數(shù)的和."
total = arg1 + arg2 # total在這里是局部變量.
print ("函數(shù)內(nèi)是局部變量 : ", total)
return total
#調(diào)用sum函數(shù)
sum( 10, 20 )
print ("函數(shù)外是全局變量 : ", total)
面向?qū)ο?/h4>
在python中犹赖,所有數(shù)據(jù)類型都可以視為對象队他,當(dāng)然也可以自定義對象,自定義對象數(shù)據(jù)類型就是面向?qū)ο笾械念悾╟lass)的概念冷尉;
student(有name漱挎,score)這種數(shù)據(jù)類型應(yīng)該被視為一個對象,這個對象擁有name和score這兩個屬性雀哨,如果要打印一個學(xué)生的成績磕谅,首先要創(chuàng)建出這個學(xué)生對應(yīng)的對象,然后給對象發(fā)一個print_score消息雾棺,讓對象自己把自己的數(shù)據(jù)打印出來膊夹。
class Student():
def __init__(self,name,score):
self.name = name
self.score = score
def print_score(self):
print('%s: %s' % (self.name,self.score))
lqf = Student('luoqingfu',59)
lqf.print_score()
類(Class)和實例
面向?qū)ο笞钪匾母拍罹褪穷悾–lass)和實例(Instance),必須牢記類是抽象的模板捌浩,比如Student類放刨,而實例是根據(jù)類創(chuàng)建出來的一個個具體的“對象”,每個對象都擁有相同的方法尸饺,但各自的數(shù)據(jù)可能不同进统。
仍以Student類為例,在Python中浪听,定義類是通過class關(guān)鍵字:
class Student(object):
pass
class后面緊接著是類名螟碎,即Student,類名通常是大寫開頭的單詞迹栓,緊接著是(object)掉分,表示該類是從哪個類繼承下來的,繼承的概念我們后面再講克伊,通常酥郭,如果沒有合適的繼承類,就使用object類愿吹,這是所有類最終都會繼承的類不从。
定義好了Student類,就可以根據(jù)Student類創(chuàng)建出Student的實例洗搂,創(chuàng)建實例是通過類名+()實現(xiàn)的:
lqf = Student()
由于類可以起到模板的作用消返,因此载弄,可以在創(chuàng)建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去撵颊。通過定義一個特殊的init方法宇攻,在創(chuàng)建實例的時候,就把name倡勇,score等屬性綁上去:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
注意到init方法的第一個參數(shù)永遠是self逞刷,表示創(chuàng)建的實例本身,因此妻熊,在init方法內(nèi)部夸浅,就可以把各種屬性綁定到self,因為self就指向創(chuàng)建的實例本身扔役。
繼承和多態(tài)
在面向?qū)ο蟮某绦蛟O(shè)計中帆喇,當(dāng)我們定義一個class的時候,可以從某個現(xiàn)有的class繼承亿胸,新的class稱為子類(Subclass)坯钦,而被繼承的class稱為基類、父類或超類(Base class侈玄、Super class)婉刀。
比如,我們已經(jīng)編寫了一個名為Animal的class序仙,有一個run()方法可以直接打油患铡:
class Animal(object):
def run(self):
print('Animal is running...')
當(dāng)我們需要編寫Dog和Cat類是,就可以從animal類中繼承
class Dog(Animal):
pass
class Cat(Animal):
pass
對于Dog來說潘悼,Animal就是它的父類律秃,對于Animal來說,Dog就是它的子類治唤。Cat和Dog類似友绝。
繼承有什么好處?最大的好處是子類獲得了父類的全部功能肝劲。由于Animial實現(xiàn)了run()方法,因此郭宝,Dog和Cat作為它的子類辞槐,什么事也沒干,就自動擁有了run()方法:
dog = Dog()
dog.run()
cat = Cat()
cat.run()
#結(jié)果
Animal is running...
Animal is running...
繼承的第二個好處需要我們對代碼做一點改進粘室。你看到了榄檬,無論是Dog還是Cat,它們run()的時候衔统,顯示的都是Animal is running...,符合邏輯的做法是分別顯示Dog is running...和Cat is running...,因此沪袭,對Dog和Cat類改進如下:
class Dog(Animal):
def run(self):
print('Dog is running...')
class Cat(Animal):
def run(self):
print('Cat is running...')
#結(jié)果
Dog is running...
Cat is running...
當(dāng)子類和父類都存在相同的run()方法時湾宙,我們說,子類的run()覆蓋了父類的run()伟恶。
筆者整理到這博秫,有些例子是參照菜鳥教程的,