第八章 Date/Time + Function [日期+函數]
習題一
請用中文輸出今日的年、月、日及星期。例如:「2011.10.05 Wed」 則輸出 「二零一一年十月五日 星期三」
觀看解答
import time year = {0:"零", 1:"一", 2:"二", 3:"三", 4:"四", 5:"五", 6:"六", 7:"七", 8:"八", 9:"九"} month = {1:"一", 2:"二", 3:"三", 4:"四", 5:"五", 6:"六", 7:"七", 8:"八", 9:"九", 10:" 十", 11:"十一", 12:"十二"} date_10 = {0:"", 1:"十", 2:"二十", 3:"三十"} date_1 = {0:"", 1:"一", 2:"二", 3:"三", 4:"四", 5:"五", 6:"六", 7:"七", 8:"八", 9:"九"} week = {"Mon":"星期一", "Tue":"星期二", "Wed":"星期三", "Thu":"星期四", "Fri":"星期五", "Sat":"星期六", "Sun":"星期日"} time_year = time.strftime("%Y", time.localtime(time.time())) for y in range(0,4): print(year[int(time_year[y])], end = "") print("年", end = "") time_month = time.strftime("%m", time.localtime(time.time())) print(month[int(time_month)] + "月", end = "") time_date = time.strftime("%d", time.localtime(time.time())) print(date_10[int(time_date[0])] + date_1[int(time_date[1])] + "日", end = "\b") time_week = time.strftime("%a", time.localtime(time.time())) print(week[time_week])習題二
請寫一個能印出"NxN乘法表"之函數,並利用此函數印出1x1、2x2、......、9x9乘法表。
請寫一個能印出"NxN乘法表"之函數,並利用此函數印出1x1、2x2、......、9x9乘法表。
觀看解答
def mul_table(number): for i in range(1, number+1): for j in range(1, number+1): print(i*j,end="\t") print("\n") print("\t") for i in range(1, 10): mul_table(i)習題三
請輸出現在日期,並先使用input來輸入y/n來表示是否顯示年分。例如,是否顯示年分?若輸入「y」,則顯示年分、月份、日期;若打「n」,則只顯示月份、日期。
請輸出現在日期,並先使用input來輸入y/n來表示是否顯示年分。例如,是否顯示年分?若輸入「y」,則顯示年分、月份、日期;若打「n」,則只顯示月份、日期。
觀看解答
import time time_stamp = time.time() x=input("是否顯示年分?(y/n)") if (x=="y"): print(time.strftime("%Y/%m/%d")) elif (x=="n"): print(time.strftime("%m/%d")) else: print("輸入有誤")習題4
若執行下列程式碼,最終result值應為多少?
>>>
def divination(num):
re = 0
for i in range(len(str(num))):
re += int(str(num)[i])
return re
result = divination(1017)
>>>
若執行下列程式碼,最終result值應為多少?
>>>
def divination(num):
re = 0
for i in range(len(str(num))):
re += int(str(num)[i])
return re
result = divination(1017)
>>>
觀看解答
9觀看解答
def factorial(N): re = 1 for i in range(2, N+1): re *= i return re n, m = 10, 3 C = factorial(n)/(factorial(m)*factorial(n-m)) print(C) 執行結果:120.0習題6
請撰寫一個函式copy,能傳入一字串Str及一整數n,然後輸出n次Str。
請撰寫一個函式copy,能傳入一字串Str及一整數n,然後輸出n次Str。
觀看解答
def copy(Str, n): for i in range(n): print(Str, end='')習題7
請撰寫一個函式,能傳入一個浮點數參數,並回傳四捨五入至小數點第二位的結果。
請撰寫一個函式,能傳入一個浮點數參數,並回傳四捨五入至小數點第二位的結果。
觀看解答
def round_off(f): num = str(f).split(".") if (f % 1 != 0 and len(num[1])>=3): f = float(num[0] + "." + num[1][0] + num[1][1]) if (int(num[1][2])>=5): f += 0.01 return f觀看解答
def absoluteV(i): if(i < 0): i *= -1 return i def det(det_list): value = det_list[0][0]*det_list[1][1] - det_list[0][1]*det_list[1][0] return value coordinate1 = input("請輸入點A座標(x與y請用半形空白格開):").split(" ") coordinate2 = input("請輸入點B座標(x與y請用半形空白格開):").split(" ") coordinate3 = input("請輸入點C座標(x與y請用半形空白格開):").split(" ") tDet = [[int(coordinate2[0])-int(coordinate1[0]), int(coordinate3[0])-int(coordinate1[0])], [int(coordinate2[1])-int(coordinate1[1]), int(coordinate3[1])-int(coordinate1[1])]] print(1/2*absoluteV(det(tDet)))習題9
請利用遞迴函式(函式重複呼叫本身)的方法輸出一個9x9乘法表,其中不能使用任何迴圈。
請利用遞迴函式(函式重複呼叫本身)的方法輸出一個9x9乘法表,其中不能使用任何迴圈。
觀看解答
def mul_table(i, j): if (i==9): print("%d*%d=%d" %(i, j, i*j)) if (j==9): return return mul_table(1, j+1) else: print("%d*%d=%d" %(i, j, i*j), end='\t') return mul_table(i+1 , j) mul_table(1, 1) 執行結果: 1*1=1 2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9 1*2=2 2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18 1*3=3 2*3=6 3*3=9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27 1*4=4 2*4=8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81習題10
請讓使用者輸入一個包含年月日的日期,然後再利用程式計算那天與現在的系統日期相差幾天。
請讓使用者輸入一個包含年月日的日期,然後再利用程式計算那天與現在的系統日期相差幾天。