Hello呀,這是一個培養寫程式習慣的練習。
先前有試著每天學習一次線上課程,但學到後面就忘記前面,
自省缺少學習記錄,也沒有養成每天寫程式的習慣。
所以這次換個方式:每日固定的課程加學習記錄整理及分享。
看看是否比較能培養出寫程式的習慣
目前鎖定的練習標的物是 100天從新手到大師
歡迎各位前輩指導!!在此先謝謝了!
1. 心得
小語
做一個決定,並不難,難的是付諸行動,並且堅持到底
2. 本日學習摘要
Day06 - 函數和模組的使用
函數的作用- 程式碼的壞味道/ 用函數封裝功能模組
定義函數- def語句/ 函數名/ 調用自定義函數
調用函數- Python內置函數/ 導入模組和函數
函數的參數- 默認參數/ 可變參數
函數的返回值- 返回單個值
作用域問題- 局部作用域/ 嵌套作用域/ 全局作用域/ 內置作用域/ 和作用域相關的關鍵字
用模組管理函數- 模組的概念/ 用自定義模組管理函數/ 命名衝突的時候會怎樣(同一個模組和不同的模組)
3. 程式碼
#輸入M和N 計算C(M,N)
#C(M,N) = M! / (N! * (M-N!))
m = int(input('m= '))
n = int(input('n= '))
fm = 1
for num in range (1,m + 1):
fm *= num
fn = 1
for num in range (1,n + 1):
fn *=num
fm_n=1
for num in range (1,m - n +1):
fm_n *= num
print("C(m,n) = %d" % (fm // fn // fm_n))
#定義函數:避免程式重複
#輸入M和N 計算C(M,N) 呼叫函數
def fac(num):
result = 1
for n in range (1, num + 1):
result *= n
return result
m = int (input("m= "))
n = int (input("n= "))
print("使用函數計算的C(m,n) = %d" % (fac(m) // fac(n) // fac(m-n)))
#搖骰子
from random import randint
def roll_dice (n = 2):
#搖骰子
total = 0
for _ in range(n):
total += randint(1,6)
return total
def add (a = 0, b = 0, c = 0):
#三數相加
return a + b + c
print("搖兩次骰子合:",roll_dice()) #搖兩次骰子(默認值2)
print("搖三次骰子合:",roll_dice(3)) #搖三次骰子
print(add())
print(add(1))
print(add(1,2))
print(add(1,2,3))
print(add(c=50,a=100, b = 200))
#可變參數的函數
def add( * args):
total = 0
for val in args:
total += val
return total
print ( add ())
print ( add ( 1 ))
print ( add ( 1 , 2 ))
print ( add ( 1 , 2 , 3 ))
print ( add ( 1 , 3 , 5 , 7 , 9 ))
#練習:最大公因數和最小公倍數的函數
def gcd(x,y):
#求最大公因數
(x,y) = (y,x) if x > y else (x,y)
for factor in range (x,0,-1):
if x % factor == 0 and y % factor == 0 :
return factor
def lcm(x,y):
#求最小公倍數
return x * y // gcd(x,y)
x = int(input("x="))
y = int(input("y="))
print("最大公因數:",gcd(x,y))
print("最小公倍數:", lcm(x,y))
#判斷一個數是不是回文數的函數
def is_palidrome (num):
#判斷一個數是不是回文數
temp = num
total = 0
while temp > 0 :
total = total * 10 + temp % 10
temp //= 10
return total == num
n = int(input("n= "))
print( is_palidrome(n))
#判斷一個數是不是質數的函數
def is_prime (num):
#判斷一個數是不是質數
for factor in range (2, int(num ** 0.5) + 1):
if num % factor == 0:
return False
return True if num != 1 else False
n = int(input("判斷質數n= "))
print( is_prime(n))
#判斷輸入的正整數是不是回文質數
if __name__ == '__main__':
num = int (input("請輸入正整數:"))
if is_palidrome (num) and is_prime(num):
print ('%d是回文質數' %num)
else:
print ('%d不是回文質數' %num)
#變量的定義域
def foo():
b = 'hello'
#函數內部再定義函數
def bar():
c = True
print(a)
print(b)
print(c)
bar()
if __name__ == '__main__':
a = 100
foo()
#函數基本架構
def main():
# Todo: Add your code here
pass
if __name__ == '__main__':
main()
參考資料:Day06
模塊是左岸用語.代碼也是左岸用語.這兩個都是沒學問的土翻譯.
感謝大大提醒!!確是看中國的教學容易出現混淆,有查證臺灣教育局的用語如下。
會再依查證結果進行修改!!
謝謝您!
Module:臺灣翻譯為模組
Codes:臺灣翻譯為碼/程式碼