Python基礎語法【第16關】時間記錄器
阿新 • • 發佈:2021-06-19
我的設計:
#!/usr/bin/env python # -*- coding:utf-8 -*- # time模組中的時間戳(可進行日期運算)和格式化日期(可將日期轉換成平常我們所見的格式); # 倒計時的功能怎麼用print()函式實現,屬於之前沒有講過的方法,需要去搜索新的知識。 # 第一行:必不可少的呼叫模組。 import time input("歡迎使用“時間管理器”!請按回車繼續。") while True: task_name = input('請輸入任務名:') task_time = int(input('你覺得自己至少可以專注這個任務多少分鐘?輸入 N 分鐘')) input('此次任務資訊:\n我要完成的任務:%s\n我至少要專注:%d分鐘\n按回車開始專注:'%(task_name,task_time)) # 下面應該要有兩行程式碼,自動記錄可以計算以及可以列印的開始時間。 time_start = time.strftime('%Y/%m/%d %H:%M:%S') print('自動記錄開始時間為:{}'.format(time_start)) # 這裡可以加一個倒計時,實時顯示還剩多少時間,可參考左側提供的資料。程式碼量大概有5行。 task_time_s=task_time*60 while task_time_s: print("離結束還剩{}秒".format(task_time_s)) time.sleep(1) task_time_s-=1 task_status = input('請在任務完成後按輸入y:') actual_time = input('該任務實際用時為幾分鐘?') if task_status == 'y': # 下面應該要有兩行程式碼,自動記錄可以計算以及可以列印的結束時間。 # 有了自動記錄的始末時間後,記錄的程式碼也需要隨之改變。 with open(r'D:\python\風變程式設計\第16關-哆啦A夢\timelog2.txt','a', encoding = 'utf-8') as f: f.write(task_name + ' 的預計時長為:' + str(task_time) + '分鐘\n') f.write(task_name + ' 的實際時長為:' + str(actual_time) + '分鐘\n') again = input('建立一個新任務請按 y, 退出時間日誌記錄器請按 q:') if again == 'q': break else: print('抱歉,你的輸入有誤。請重啟時間記錄器。') print('願被你善待的時光,予你美好的回贈。')
參考答案:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/6/19 15:35 # @Author : name # @File : 時間記錄器參考答案.py import time input("歡迎使用“時間管理器”!請按回車繼續。") while True: task_name = input('請輸入任務名:') task_time = int(input('你覺得自己至少可以專注這個任務多少分鐘?輸入 N 分鐘')) input('此次任務資訊:\n我要完成的任務:%s\n我至少要專注:%d分鐘\n按回車開始計時:' % (task_name, task_time)) start = time.time() # 開始計時 start_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # 格式化日期 # 實際程式碼:分鐘轉成秒要乘60,用-1來倒計時。 for t in range(task_time*60, 0, -1): info = '請專注任務,還要保持專注 ' + str(t) + ' 秒哦!' print(info, end="") print("\b" * (len(info) * 2), end="", flush=True) time.sleep(1) print('你已經專注了 %d 分鐘,很棒~再加把勁,完成任務!' % task_time) # 倒計時後,才繼續執行之後的程式碼。 # 詢問任務是否完成 task_status = input('請在任務完成後按輸入y:') if task_status == 'y': end = time.time() # 一定使用者按了 y,就記下結束時間。 end_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # 日期格式化 actual_time = int((end - start) / 60) # 始末時間相減,從秒換算到分,除以60。 start_end = start_time + '——' + end_time + '\n' with open(r'D:\python\風變程式設計\第16關-哆啦A夢\timelog3.txt', 'a', encoding='utf-8') as f: f.write(task_name + ' 的預計時長為:' + str(task_time) + '分鐘\n') f.write(task_name + ' 的實際時長為:' + str(actual_time) + '分鐘,具體時間為:' + start_end) again = input('建立一個新任務請按 y, 退出時間日誌記錄器請按 q:') if again == 'q': break else: print('抱歉,你的輸入有誤。請重啟時間記錄器。') print('願被你善待的時光,予你美好的回贈。')