例1:累加
def
add(*args):
"""定義可變引數,累加
:param args: 可變引數
:return: 累加求和後的值
"""total = 0
for value in args:
total += value
return total
if __name__ == '__main__':
print(add(1,2,3,4,5,10))
a = 100
deff
():# 函式內的區域性變數,離開f()函式變數a是無法訪問的
# local variable
global a # 區域性變數中執行全域性變數
a = 200
print(a)
f()print(a)
小結:從區域性作用域到巢狀作用域再到全域性作用域,弄清楚每一步步驟~
例2:21根火柴,人先拿,機後拿,(1,4),最後拿到一根火柴的輸
from random import randint
defmain
(): total = 21
while total > 0:
while
true:
num = int(input('拿幾根火柴:'))
if1<= num <= 4
and num <= total:
break
total -= num
if total > 0:
com = randint(1,min(4,total))
print('計算機拿走了%d根火柴'%(com))
total -= com
if total == 0 :
print('電腦拿到了最後一根火柴,你贏了!')
else:
print('你拿到了最後一根火柴,你輸了!')
if __name__ == '__main__':
main()
小結:其實可以做到,因為是人先拿,如果電腦每次都拿5-num次,那麼人鐵定會輸~這裡沒有寫,就當都是隨機取吧,更具有娛樂感~
例3:求階乘n! =n*(n - 1)!
def
f(n):
if n == 0
or n==1:
return
1return n*f(n-1)
if __name__ == '__main__':
# 在進入函式呼叫之前要儲存當前的執行現場
# 函式的執行現場是儲存在一種稱為棧(stack)的記憶體空間上
# 棧是一種先進後出(filo)的儲存機構
print(f(100))
小結:這裡用到遞迴函式,簡化了寫**的過程,幾句話就搞定階乘的計算。例4:累加def
f(n):
if n == 1:
return
1return n+f(n-1)
if __name__ == '__main__':
print(f(100))
例5:10級樓梯,每次只能跨1-3級,共有多少種方法?def
walk
(n):
if n < 0:
return
0elif n == 0:
return
1return walk(n-1) + walk(n - 2) + walk(n - 3)
if __name__ == '__main__':
print(walk(10))
小結:這兩個是遞迴函式的進一步運用,找到規律,巨集觀觀察,確定收斂條件,寫出遞迴公式,就可以寫出遞迴函式。def
main
():# 不變字串
str1 = 'hello,world!'
print(len(str1)) # 長度
print(str1.capitalize()) # 首字母大寫
help(str1.capitalize)
print(str1.upper()) #全轉大寫
print(str1.lower()) #全轉小寫
print(str1.find('or')) #尋找字串
print(str1.find('****')) #尋找字串
# print(str1.index('or'))
# print(str1.index('****'))
print(str1.startswith('he'))
print(str1.endswith('!'))
print(str1.center(50,'*'))
print(str1.rjust(50,'#'))
print(str1.ljust(50,'$'))
str2 = 'abc123456'
print(str2[2]) # 下標運算
print(str2[2:5]) # 切片
print(str2[-1:-3:-1]) # '-'方向
print(str2[-3:-1])
print(str2[2:])
print(str2[2::2])
print(str2[:])
print(str2[::2])
print(str2[::-1])
print(str2.isdecimal()) # 判斷字串中是否全是數字
print(str2.isalpha()) # 判斷字串中是否全是字母
print(str2.isalnum()) # 判斷字串中是否全為字母或數字
str3 = ' [email protected] '
print(str3.strip()) #去掉左右兩邊的空格
if __name__ == '__main__':
main()
例6:字串跑馬燈import os
import time
defmain
(): str4 = '歡迎來到千峰大世界~~~~~~~~'
while
true:
os.system('cls')
print(str4)
time.sleep(0.5)
str4 = str4[1:]+ str4[0]
if __name__ == '__main__':
main()
小結:運用字串以及命令視窗清除的函式,實現跑馬燈的效果~ Python作用域 全域性作用域 區域性作用域
在python中,每個函式都會建立乙個作用域。pythonistas也可能稱函式擁有它們自己的命名空間 namespace 這意味著當在函式體裡遇到變數名 時,python首先在該函式的命名空間中查詢,python包含了一些讓我們檢視命名空間的函式。讓我們寫乙個簡單的函式來探查一下local和glo...
javaScript全域性作用域和區域性作用域
1.全域性作用域 1 最外層函式和最外層函式外通過var來定義的變數 全域性變數 全域性函式 2 在函式內部不通過var定義的變數也稱為全域性變數 2.在es5中函式是區分全域性和區域性唯一的 塊 1 在函式內通過var來定義的變數,以及內部定義的函式 2 函式的引數具有區域性作用域 functio...
作用域,區域性與全域性變數
區域性變數 下圖中畫紅色的框為區域性變數,藍色框為全域性變數。不管區域性變數怎麼變,不會影響到全域性變數的值。只限於字串,數字等等簡單的變數 區域性變數的作用域只侷限於函式之內,在函式之外,不可以引用到區域性變數。在函式裡可以呼叫全域性變數,也可以賦值,但是不會對全域性變數有任何影響。只限於字串,數...