![]() |
羅德興老師的教學歷程檔案 - 113-2 程式語言二(2025) - 程式範例 |
|
|
程式範例# 程式範例 A-1 (迴圈) # -*- coding: utf-8 -*- """ 註解:此為 double loop by L.D.S on 2022/04/03 檔名:loop2.py 功能:此程式為印出 九九乘法表 # \t Tab 印出,\n 跳行 印出, end= "" 接續印出 """ print ("雙層 Loop 九九乘法表 應用1") for i in range(1, 9): for j in range(1, 9): print ("{}*{}={:2} ".format(j, i, i*j), end="") print("") # 程式範例 A-2 (迴圈) # -*- coding: utf-8 -*- """ 註解:此為 double loop by L.D.S on 2022/04/03 檔名:loop2.py 功能:此程式為印出 九九乘法表 # \t Tab 印出,\n 跳行 印出, end= "" 接續印出 """ print ("雙層 Loop 九九乘法表 應用2") for i in range(9, 0,-1): for j in range(1, 9): print ("{}*{}={:2} ".format(i, j, i*j), end="") print("") # 程式範例 A-3 (亂數模擬) """ 檔名:die-9.py 功能:此為 亂數 模擬 擲骰子 by L.D.S on 2022/04/03 """ import random def roll_dice(): """ 模擬擲骰子 """ roll = random.randint(1, 6) return roll def main(): """ 主函數 """ total_times = 10 # 初始化點數所擲次數列表[0, 0, 0, 0, 0, 0] result_list = [0] * 6 for i in range(total_times): roll = roll_dice() print(roll) # 判斷所擲點數,並把其次數加1 for j in range(1, 7): if j == roll: result_list[j - 1] += 1 print("骰子點數") print("1 2 3 4 5 6") print("出現次數") print(result_list) if __name__ == '__main__': main() # 程式範例 B-1 (函式) # -*- coding: utf-8 -*- """ 註解:此為 Recursive 遞迴呼叫 by L.D.S on 2022/04/03 檔名:recursive2.py 功能:此程式為遞迴呼叫 # \t Tab 印出,\n 跳行 印出, end= "" 接續印出 """ print ("遞迴呼叫 應用 1 by 110xxx 張三豐") def print_msg(): print("歡迎學習Python程式設計!") def sum_to_n(start, stop): print("從 " + str(start) + " 加") s = 0 for i in range(start, stop+1): print(i) s += i return(s) print_msg() m=int(input("請輸入一個數字:")) sum2 = sum_to_n(1, m) print("到 "+ str(m) + " = " + str(sum2)) # 程式範例 B-2 (遞迴呼叫) # -*- coding: utf-8 -*- """ 註解:此為 Recursive 遞迴呼叫 by L.D.S on 2022/04/03 檔名:recursive2.py 功能:此程式為遞迴呼叫 # \t Tab 印出,\n 跳行 印出, end= "" 接續印出 """ def fact(n): if (n==1): result= 1 else: result = n*fact(n-1) print(" * " + str(n)) return result m=int(input("請輸入一個數字:")) sum2 = fact(m) print(str(m) + " ! 階層 = " + str(sum2)) # 程式範例 B-3 (模組習作) 1. mymath.py # module 習作 2. # mymodule.py # call module 習作 import mymath 3. 套裝 package 的使用 ![]() # main.py import pypackage.mymath as math import pypackage.bank2 as bk """ main.py module 習作 This is written by 110XXXX dsluo 2022/04/09 package exercise main.py pypackage __init__.py mymath.py bank2.py """ import pypackage.mymath as math import pypackage.bank2 as bk print ('模組應用 1: mymath 中的變數 pi =', math.pi) print ('模組應用 2: 引用 mymath 中的函式 最大公約數 gcd') a=24 b=8 print (a, '和 ', b, '的最大公約數 =', math.gcd (a,b)) print ('模組應用 3: 引用 mymath 中的 求階層 函式 factorial') a=5 print (a, '! 階層 =', math.factorial(a)) print() acct = bk.Account('Tommy', '999-889', 900) print ('模組應用 4: 引用 套件(Package) pypackage 的模組(Module) bank2 中的 類別 (class)') print ('原帳戶為:', acct) x = 500 acct.deposit(x) print ('Call Bank 存款 ', x, '後 帳戶為:', acct) y=200 acct.withdraw(y) print ('Call Bank 提款 ', y, '後 帳戶為:', acct) print(acct) # -*- coding: utf-8 -*- """ 檔案操作處理:開,關,讀、寫 檔名:sort9.py 功能:此為 檔案處理與排序by L.D.S on 2022/04/03 讀入檔案:myfile9.txt 如:5 17 9 10 2 6 寫出檔案:test9.csv """ import numpy as np import csv filename = 'myfile9.txt' elements = [] with open(filename) as file: for line in file: line = line.strip().split() elements.append(line) print("讀入的串列:") print(elements) a = np.array(elements[0]) file.close() def bubble_sort(b, n): print("排序中...") for i in range(n-2): for j in range(n-i-1): print("第 ",i,"輪 第 " , j ," 次 比較 \t",end=" ") if (int(b[j]) > int(b[j+1])): temp= b[j] b[j] = b[j+1] b[j+1]=temp print_array(b,b.size) def print_array(c, n): for i in range(0,len(c)): print(c[i],end=" ") print() print("原始陣列:") print_array(a, a.size) bubble_sort(a,a.size) print("排序後的陣列:") print_array(a, a.size) with open("test9.csv","w") as csvfile: writer = csv.writer(csvfile) writer.writerow(a) file.close() # 程式範例 C-2 下載區 1. "雙層 Loop 應用2" # loop2.py 2. # This is double loop by L.D.S on 2016/03/08 print ("雙層 Loop 應用 九九乘法表") 3. 猜數字遊戲 guess2.py 4. GUI 練習 # Getting input using Button # -*- coding: utf-8 -*- """ 註解:此為 Recursive 遞迴呼叫 by L.D.S on 2022/04/03 檔名:recursive3.py 功能:此程式為遞迴呼叫 & 非遞迴呼叫 (Iterative 迭代) 遞迴讓你直覺地表示特定模式經典題型:最大公因數 (GCD)、費波納契數列 (Fibonacci Sequence)、河內塔 (Hanoi Tower)、N 個字元的排列組合。# \t Tab 印出,\n 跳行 印出, end= "" 接續印出 """ import time def fact(n): if (n==1): result= 1 else: result = n*fact(n-1) print(" * " + str(n)) return result def sum_fact(n): total = i = 1 while(i<=n): total *= i print(" * " + str(i)) i+=1 return total n=int(input("請輸入一個數字:")) start = time.time() sum2 = fact(n) print(str(n) + " ! 階層 = " + str(sum2)) end = time.time() print("遞迴呼叫") print(end - start) start = time.time() total2= sum_fact(n) print("%d! 階層 =%d" % (n, total2)) end = time.time() print("非 遞迴呼叫") print(end - start) # -*- coding: utf-8 -*- """ 註解:此為 Recursive 遞迴呼叫 by L.D.S on 2022/04/03 檔名:recursive4.py 功能:此程式為遞迴呼叫 & 非遞迴呼叫 (Iterative 迭代) 遞迴讓你直覺地表示特定模式 經典題型:最大公因數 (GCD)、費波納契數列 (Fibonacci Sequence)、河內塔 (Hanoi Tower)、N 個字元的排列組合。 """ counter=0 def hanoi(n, A, B, C): global counter if n == 1: return [(A, C)] else: return hanoi(n-1, A, C, B) + hanoi(1, A, B, C) + hanoi(n-1, B, A, C) n = input("請輸入整數:") for move in hanoi(int(n), 'A', 'B', 'C'): counter +=1 print("盤由 %c 移至 %c" % move) print("共移動了 " + str(counter) + " 次 盤子") # -*- coding: utf-8 -*- """ 註解:此為 Recursive 非遞迴呼叫 by L.D.S on 2022/04/03 檔名:recursive5.py 功能:此程式為遞迴呼叫 & 非遞迴呼叫 (Iterative 迭代) 遞迴讓你直覺地表示特定模式 經典題型:最大公因數 (GCD)、費波納契數列 (Fibonacci Sequence)、河內塔 (Hanoi Tower)、N 個字元的排列組合。 非遞迴呼叫 (Iterative 迭代)方式 如果函式中只遞迴呼叫自身一次,使用堆疊來模擬遞迴過程的話,基本上需要一個堆疊, 單色河內塔遞迴解會在函式中,呼叫自身兩次,這需要兩個堆疊, 把自己當成電腦來思考的話,就得小心堆疊中狀態的儲存與取出順序,才能正確地解決問題,無疑地,這是個繁瑣的過程, """ counter=0 def hanoi(n, a, b, c): global counter param_stack_recursion2 = [[n, a, b, c]] while param_stack_recursion2: m, pa, pb, pc = param_stack_recursion2.pop() param_stack_recursion1 = [] while True: if m == 1: print("盤由 " + pa +" 搬到 "+ pc) # hanoi(1, A, B, C) counter+=1 # hanoi(m - 1, A, C, B) is completed leng = len(param_stack_recursion2) while param_stack_recursion1: m = m + 1 sa, sb, sc = param_stack_recursion1.pop() # hanoi(m - 1, B, A, C) param_stack_recursion2.insert(leng, [m - 1, sb, sa, sc]) if param_stack_recursion2: _, mb, ma, mc = param_stack_recursion2[-1] print("盤由 " + ma + " 搬到 " + mc) # move A to C counter+=1 break param_stack_recursion1.append([pa, pb, pc]) # hanoi(m - 1, A, C, B) m = m - 1 pa, pb, pc = pa, pc, pb k = input("請輸入整數:") hanoi(int(k), 'A', 'B', 'C') print("共移動了 " + str(counter) + " 次 盤子")
|
|
中華科技大學數位化學習歷程 - 意見反應 | ![]() |