什麼是函數
#函數名:最好是取體現函數功能的名字,通常用小寫字母和單下劃線、數字等組合
def greet(name):
#參數:根據函數功能,括號裏能夠有多個參數,也能夠不帶參數,命名規則與函數名相同
#規範:括號是英文括號,後面的冒號不能丟
print(name+'早上好')
#函數體:函數體就是體現函數功能的語句,要縮進,通常是四個空格
return
複製代碼
思考: 如何使用函數進行以下輸出
def eat(param1,param2):
print('一份開胃菜:'+param1)
print('一份主食:'+param2+'\n')
eat('牛肉拉麪','話梅花生')
eat('話梅花生','牛肉拉麪')
eat(param2 = '話梅花生',param1 = '牛肉拉麪')
複製代碼
每句後面, 加一個甜品
默認參數能夠解決參數傳值不肯定的問題
若是參數個數不肯定呢?
def menu(*barbeque):
print(barbeque)
menu('烤雞翅','烤茄子','烤玉米')
#這幾個值都會傳遞給參數barbeque
複製代碼
order=('烤雞翅','烤茄子','烤玉米')
#元組的長度沒有限制
def menu(*barbeque):
print(barbeque)
menu(*order)
複製代碼
barbeque_list = ['烤雞翅','烤茄子','烤玉米','烤腰子']
def menu(*barbeque):
print(barbeque)
menu(barbeque_list)
# (['烤雞翅', '烤茄子', '烤玉米', '烤腰子'],) 把列表當成一個參數了...
menu(*barbeque_list)
# ('烤雞翅', '烤茄子', '烤玉米', '烤腰子')
複製代碼
位置參數、默認參數、不定長參數
def menu(appetizer,course):
print('一份開胃菜:'+appetizer)
print('一份主食:'+course)
menu('話梅花生','牛肉拉麪')
複製代碼
這裏的'話梅花生'和'牛肉拉麪'是對應參數appetizer和course的位置順序傳遞的,
因此被叫做【位置參數】 ,這也是最多見的參數類型
def menu(appetizer,course):
print('一份開胃菜:'+appetizer)
print('一份主食:'+course+'\n')
#還記得轉義字符\n吧,表示換行
menu('牛肉拉麪','話梅花生')
menu('話梅花生','牛肉拉麪')
複製代碼
def menu(appetizer,course):
print('一份開胃菜:'+appetizer)
print('一份主食:'+course+'\n')
#還記得轉義字符\n吧,表示換行
menu('牛肉拉麪','話梅花生')
menu('話梅花生','牛肉拉麪')
#若是採用下面這種形式傳遞,就不須要理會參數位置
menu(course='牛肉拉麪',appetizer='話梅花生')
複製代碼
不定長參數
def menu(*barbeque):
print(barbeque)
menu('烤雞翅','烤茄子','烤玉米')
#這幾個值都會傳遞給參數barbeque
複製代碼
參數的順序問題
def menu(appetizer,course,*barbeque,dessert='綠豆沙'):
print('一份開胃菜:'+appetizer)
print('一份主菜:'+course)
for i in barbeque:
print('一份烤串:'+i)
menu('話梅花生','牛肉拉麪','烤雞翅','烤茄子','烤玉米')
複製代碼
def menu(appetizer,course,*barbeque,dessert='綠豆沙'):
print('一份開胃菜:'+appetizer)
print('一份主菜:'+course)
for i in barbeque:
print('一份烤串:'+i)
print('一份甜品: '+dessert)
menu('話梅花生','牛肉拉麪','烤雞翅','烤茄子','烤玉米',dessert = '奶昔')
複製代碼
若是沒有返回值呢?
若是函數沒有返回值, 默認返回None
何時使用print寫在函數裏仍是函數外?
def hello0():
print('hello world')
def hello1():
return 'hello world'
hello0()
print(hello1()) # 除非須要當即顯示, 不然通常都是先返回, 而後用變量保存...
複製代碼
def face(name):
return name + '的臉蛋'
def body(name):
return name + '的身材'
def main(dream_face,dream_body):
return '個人夢中情人:' + face(dream_face) + ' + ' + body(dream_body)
print(main('李若彤','林志玲'))
print(main('新垣結衣','長澤雅美'))
複製代碼
函數能夠有多個返回值嗎?
有了第五條, 咱們能夠模擬一次跳出兩層循環
def demo():
for i in range(10):
for j in range(10):
if j == 4:
return
print(str(i)+'==>'+str(j))
demo()
複製代碼
猜一下結果...
x=99 #全局變量x
def num():
x=88 #局部變量x
print(x)
num()
#打印局部變量x
print(x)
#打印全局變量x
複製代碼
代碼會報錯嗎?
def egg():
#定義了一個叫egg的函數
quantity = 108
#定義了一個變量quantity,並賦值爲108
egg()
#調用egg() 函數
print(quantity)
# 打印egg() 函數裏面的變量quantity
複製代碼
函數外的變量, 函數內能夠用; 函數內的變量, 函數外不能用
使用global語句, 定義全局變量
def egg():
global quantity
#global語句將變量quantity聲明爲全局變量
quantity = 108
egg()
print(quantity)
複製代碼
兩種隨機(從123中隨機選一個)
import random
print(random.randint(1,3))
list1 = [1,2,3]
print(random.choice(list1))
複製代碼
做業: 抽取幸運觀衆
# 查看註釋,運行代碼。
import random
import time
# 用random函數在列表中隨機抽獎,列表中只有3位候選者。
luckylist = ['海綿寶寶','派大星','章魚哥']
# random模塊中有個隨機選取一個元素的方法:random.choice()。
a = random.choice(luckylist) # 從3我的中隨機選取1我的。
print('開獎倒計時',3)
time.sleep(1) # 調用time模塊,控制打印內容出現的時間
print('開獎倒計時',2)
time.sleep(1)
print('開獎倒計時',1)
time.sleep(1)
# 使用三引號打印hellokitty的頭像
image = ''' /\_)o< | \\ | O . O| \_____/ '''
print(image) # ……
print('恭喜'+a+'中獎!') # 使用print函數打印幸運者名單
複製代碼
開始抽取幸運觀衆......
第一個字: 劉
......
第二個字: 德
......
第三個字: 華
最終的幸運觀衆: 劉德華!
若是是兩個字
開始抽取幸運觀衆......
第一個字: 黎
......
第二個字: ※
......
第三個字: 明
最終的幸運觀衆: 黎明!
複製代碼
素材
students = ['劉少康',
'左月',
'侯志傑',
'王楓元',
'張居正',
'王濤',
'曹亞南',
'劉偉',
'楊成龍',
'鄧凱凱',
'吳成浩',
'彭博',
'段妮',
'白泉林',
'喻祿',
'劉嘉偉',
'鄭明利',
'陳朋來',
'嶽佳蕊',
'李傑',
'楊栓',
'張承恩',
'李國慶',
'王嵩',
'張彩芸',
'張瑤',
'張虎躍',
'宋晨光',
'朱顏恩',
'楊歡歡',
'韋丹丹',
'康濤濤',
'高廣宇',
'吳紀昌',
'王宇行',
'龐忠良',
'郭天',
'陳雲',
'金寶順',
'尚尚',
'曹新宇',
'祁書',
'秦磊']
複製代碼
import random,time
students = ['劉少康',
'左月',
'侯志傑',
'王楓元',
'張居正',
'王濤',
'曹亞南',
'劉偉',
'楊成龍',
'鄧凱凱',
'吳成浩',
'彭博',
'段妮',
'白泉林',
'喻祿',
'劉嘉偉',
'鄭明利',
'陳朋來',
'嶽佳蕊',
'李傑',
'楊栓',
'張承恩',
'李國慶',
'王嵩',
'張彩芸',
'張瑤',
'張虎躍',
'宋晨光',
'朱顏恩',
'楊歡歡',
'韋丹丹',
'康濤濤',
'高廣宇',
'吳紀昌',
'王宇行',
'龐忠良',
'郭天',
'陳雲',
'金寶順',
'尚尚',
'曹新宇',
'祁書',
'秦磊']
def name_to_three():
stu_list = []
for i in students:
if len(i) == 2:
tmp_list = list(i)
tmp_list.insert(1,'※')
i = ''.join(tmp_list)
stu_list.append(i)
return stu_list
def make_first():
first_list = []
stu_dict = {}
for i in name_to_three():
first_list.append(i[0])
one_set = set(first_list)
for i in one_set:
stu_dict[i] = {}
return stu_dict
def make_second():
stu_dict = make_first()
for i in stu_dict:
for j in name_to_three():
if i == j[0]:
stu_dict[i][j[1]] = []
return stu_dict
def make_third():
stu_dict = make_second()
for i in stu_dict:
for j in stu_dict[i]:
for k in name_to_three():
if i+j == k[:2]:
stu_dict[i][j].append(k[2])
return stu_dict
def stu_split():
return make_third()
def print_point():
for i in range(6):
print('.',end='')
time.sleep(0.3)
print('')
def find_lucky_dog():
print('開始抽取幸運觀衆')
print_point()
stu_dict = stu_split()
one = random.choice(list(stu_dict))
two = random.choice(list(stu_dict[one]))
three = random.choice(stu_dict[one][two])
print('第一個字: '+one)
print_point()
print('第二個字: '+two)
print_point()
print('第三個字: '+three)
print('')
if two == '※':
two = ''
time.sleep(0.5)
print('最終的幸運觀衆: {}{}{}!!!'.format(one,two,three))
time.sleep(0.5)
print('')
def start():
while True:
find_lucky_dog()
if input('是否繼續? (輸入"y"繼續, 不然退出...) ') != "y":
break
else:
print('')
start()
複製代碼
貓哥教你寫爬蟲 000--開篇.md
貓哥教你寫爬蟲 001--print()函數和變量.md
貓哥教你寫爬蟲 002--做業-打印皮卡丘.md
貓哥教你寫爬蟲 003--數據類型轉換.md
貓哥教你寫爬蟲 004--數據類型轉換-小練習.md
貓哥教你寫爬蟲 005--數據類型轉換-小做業.md
貓哥教你寫爬蟲 006--條件判斷和條件嵌套.md
貓哥教你寫爬蟲 007--條件判斷和條件嵌套-小做業.md
貓哥教你寫爬蟲 008--input()函數.md
貓哥教你寫爬蟲 009--input()函數-人工智能小愛同窗.md
貓哥教你寫爬蟲 010--列表,字典,循環.md
貓哥教你寫爬蟲 011--列表,字典,循環-小做業.md
貓哥教你寫爬蟲 012--布爾值和四種語句.md
貓哥教你寫爬蟲 013--布爾值和四種語句-小做業.md
貓哥教你寫爬蟲 014--pk小遊戲.md
貓哥教你寫爬蟲 015--pk小遊戲(全新改版).md
貓哥教你寫爬蟲 016--函數.md
貓哥教你寫爬蟲 017--函數-小做業.md
貓哥教你寫爬蟲 018--debug.md
貓哥教你寫爬蟲 019--debug-做業.md
貓哥教你寫爬蟲 020--類與對象(上).md
貓哥教你寫爬蟲 021--類與對象(上)-做業.md
貓哥教你寫爬蟲 022--類與對象(下).md
貓哥教你寫爬蟲 023--類與對象(下)-做業.md
貓哥教你寫爬蟲 024--編碼&&解碼.md
貓哥教你寫爬蟲 025--編碼&&解碼-小做業.md
貓哥教你寫爬蟲 026--模塊.md
貓哥教你寫爬蟲 027--模塊介紹.md
貓哥教你寫爬蟲 028--模塊介紹-小做業-廣告牌.md
貓哥教你寫爬蟲 029--爬蟲初探-requests.md
貓哥教你寫爬蟲 030--爬蟲初探-requests-做業.md
貓哥教你寫爬蟲 031--爬蟲基礎-html.md
貓哥教你寫爬蟲 032--爬蟲初體驗-BeautifulSoup.md
貓哥教你寫爬蟲 033--爬蟲初體驗-BeautifulSoup-做業.md
貓哥教你寫爬蟲 034--爬蟲-BeautifulSoup實踐.md
貓哥教你寫爬蟲 035--爬蟲-BeautifulSoup實踐-做業-電影top250.md
貓哥教你寫爬蟲 036--爬蟲-BeautifulSoup實踐-做業-電影top250-做業解析.md
貓哥教你寫爬蟲 037--爬蟲-寶寶要聽歌.md
貓哥教你寫爬蟲 038--帶參數請求.md
貓哥教你寫爬蟲 039--存儲數據.md
貓哥教你寫爬蟲 040--存儲數據-做業.md
貓哥教你寫爬蟲 041--模擬登陸-cookie.md
貓哥教你寫爬蟲 042--session的用法.md
貓哥教你寫爬蟲 043--模擬瀏覽器.md
貓哥教你寫爬蟲 044--模擬瀏覽器-做業.md
貓哥教你寫爬蟲 045--協程.md
貓哥教你寫爬蟲 046--協程-實踐-吃什麼不會胖.md
貓哥教你寫爬蟲 047--scrapy框架.md
貓哥教你寫爬蟲 048--爬蟲和反爬蟲.md
貓哥教你寫爬蟲 049--完結撒花.mdhtml