Python程序開發(fā)基礎 課件 任務3 模擬時鐘_第1頁
Python程序開發(fā)基礎 課件 任務3 模擬時鐘_第2頁
Python程序開發(fā)基礎 課件 任務3 模擬時鐘_第3頁
Python程序開發(fā)基礎 課件 任務3 模擬時鐘_第4頁
Python程序開發(fā)基礎 課件 任務3 模擬時鐘_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

time庫——模擬時鐘任務描述

鐘表是一種計時裝置,其樣式千變?nèi)f化,但用來顯示時間的表盤卻相差無幾。對于指針式鐘表的表盤一般是由刻度、時針、分針和秒針、星期顯示、日期顯示組成。本任務要求編寫程序,使用time模塊繪制并控制所示時鐘。

時間管理

在Python程序開發(fā)過程中根據(jù)時間來選擇不同的處理場景的情況很多,譬如,動態(tài)時鐘秒針的運動時間、游戲的防沉迷控制、外賣平臺店鋪的營業(yè)時間管理、數(shù)據(jù)的記錄及日志的處理等。Python語言提供了兩個與時間管理有關(guān)的庫,它們是time庫、datetime庫。01time庫02datetime庫04任務實現(xiàn)time庫01

time庫time庫是Python中最常用的與時間處理相關(guān)的庫。中常用的time庫函數(shù)如表所示。函數(shù)說明time()獲取當前時間,結(jié)果為實數(shù),單位為秒。sleep(secs)進入休眠狀態(tài),時長由secs確定,單位為秒。strptime(string[,format])將一個年月日時間格式的字符串解析為時間元組。

localtime([secs])以struct_time類型輸出本地時間。asctime([tuple])獲取時間字符串,或?qū)r間元組轉(zhuǎn)換為字符串。mktime(tuple)將時間元組轉(zhuǎn)換為秒數(shù)。strftime(format[,tuple])返回字符串表示的當?shù)貢r間,格式由format決定。計算時間。時間是可以進行加減運算的,一般情況下,時間是以時間戳的形式來進行加減運算。本實例首先導入time庫,獲取系統(tǒng)的第一個當前時間,這個時間是以時間戳的形式表示。然后讓系統(tǒng)等待幾秒后,再獲取系統(tǒng)的第二個當前時間,計算這兩個時間的和和差,即完成時間的計算。

time實例其代碼如下:importtimetime_1=time.time()time.sleep(3)time_2=time.time()print(time_1+time_2)print(time_1+time_2)Datetime庫02

datetime庫

以不同格式顯示日期和時間是程序中最常用到的功能。datetime

庫可以從系統(tǒng)中獲得時間,并以用戶選擇的格式進行輸出。常用的datetime庫函數(shù)如表所示。函數(shù)說明date()獲取當前的日期。time()獲取當前的時間。datetime()獲取當前的日期和時間。timedelta()獲取兩個時間的時間差。tzinfo()獲取時區(qū)信息。

編程確定某天是該年的第幾天。時間和日期是可以進行操作的。本實例首先導入datetime庫,獲取指定的日期,然后從這一年的1月1日起計算天數(shù)。

datetime實例其代碼如下:importdatetimedefday_year(year,month,day):date1=datetime.date(year=int(year),month=int(month),day=int(day))date2=datetime.date(year=int(year),month=1,day=1)return(date1-date2).days+1y=input('請輸入年份:')m=input('請輸入月份:')d=input('請輸入日期:')n=day_year(y,m,d)print(f'{y}年{m}月abhqx4t日是這一年的第{n}天')任務實現(xiàn)——模擬時鐘03

模擬時鐘

根據(jù)題意,使用turtle模塊繪制如下表盤(屏幕顯示表盤)。表盤有三根指針:時針、分針、秒針。它們的一端被固定在表盤中心,另一端可以沿順時針方向進行旋轉(zhuǎn)。表盤中最頂端的刻度為12,它是所有指針的起始點,指針按順時針刻度依次是1,2,3……59。這里,秒針旋轉(zhuǎn)一周,分針移動一個刻度,同樣,分針移動一周,時針移動一格刻度。它們是通過datetime模塊控制時鐘動態(tài)顯示。

模擬時鐘#模擬時鐘fromturtleimport*fromdatetimeimport*defskip(step):'''

跳躍給定的距離'''penup()forward(step)pendown()defsetup_clock(radius):'''

建立鐘表的外框'''reset()pensize(7) #設置畫筆線條的粗細foriinrange(60):skip(radius) #在距離圓心為r的位置落筆ifi%5==0:#若能整除5,則畫一條短直線forward(20)skip(-radius-20)else: #否則畫點dot(5)skip(-radius)right(6)代碼如下:

模擬時鐘defmake_hand(name,length):'''

注冊turtle形狀,建立名字為name的形狀'''reset()skip(-0.1*length)#開始記錄多邊形的頂點begin_poly()forward(1.1*length)#停止記錄多邊形的頂點,并與第一個頂點相連end_poly()#返回最后記錄的多邊形handForm=get_poly()#注冊形狀,命名為nameregister_shape(name,handForm)definit():globalsecHand,minHand,hurHand,printer#重置turtle指針向北mode("logo")#建立3個表示表針的Turtle對象并初始化secHand=Turtle()make_hand("secHand",130)#秒針secHand.shape("secHand")

代碼如下:

模擬時鐘minHand.shape("minHand")hurHand=Turtle()make_hand("hurHand",90)#時針hurHand.shape("hurHand")forhandinsecHand,minHand,hurHand:hand.shapesize(1,1,3)#調(diào)整3根指針的粗細hand.speed(0) #設置移動速度#建立并輸出文字的Turtle對象printer=Turtle()printer.hideturtle()printer.penup()defweek(t):week=["星期一","星期二","星期三","星期四","星期五","星期六","星期七"]returnweek[t.weekday()]defday(t):return"%s%d%d"%(t.year,t.month,t.day)deftick():'''

繪制鐘表的動態(tài)顯示'''t=datetime.today()#獲取本地當前的日期與時間#處理時間的秒數(shù)、分鐘數(shù)、小時數(shù)

代碼如下:

模擬時鐘second=t.second+t.microsecond*0.000001minute=t.minute+t.second/60.0hour=t.hour+t.minute/60.0#將secHand、minHand和hurHand的方向設為指定的角度secHand.setheading(second*6)minHand.setheading(minute*6)hurHand.setheading(hour*30)tracer(False)printer.fd(70)#向前移動指定的距離#根據(jù)align(對齊方式)和font(字體),在當前位置寫入文本printer.write(week(t),align="center",font=("Courier",14,"bold"))printer.back(130)printer.write(day(t),align="center",font=("Courier",14,"bold"))#調(diào)用home()方法將位置和方向恢復到初始狀態(tài),位置的初始坐標為(0,0),#初始方向有兩種情況:若為"standard"模式,則初始方向為right,表示朝向東;#若為"logo"模式,則初始方向是up,表示朝向北

代碼如下:

模擬時鐘printer.home()tracer(True)#設置計時器,100ms后繼續(xù)調(diào)用tick()函數(shù)ontimer(tick,100)defmain():#關(guān)閉繪畫追蹤,可以用于加速繪畫復雜圖形tracer(False)init()#畫表框setup_clock(200)#開啟動畫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論