版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
time庫(kù)——模擬時(shí)鐘任務(wù)描述
鐘表是一種計(jì)時(shí)裝置,其樣式千變?nèi)f化,但用來(lái)顯示時(shí)間的表盤卻相差無(wú)幾。對(duì)于指針式鐘表的表盤一般是由刻度、時(shí)針、分針和秒針、星期顯示、日期顯示組成。本任務(wù)要求編寫程序,使用time模塊繪制并控制所示時(shí)鐘。
時(shí)間管理
在Python程序開發(fā)過(guò)程中根據(jù)時(shí)間來(lái)選擇不同的處理場(chǎng)景的情況很多,譬如,動(dòng)態(tài)時(shí)鐘秒針的運(yùn)動(dòng)時(shí)間、游戲的防沉迷控制、外賣平臺(tái)店鋪的營(yíng)業(yè)時(shí)間管理、數(shù)據(jù)的記錄及日志的處理等。Python語(yǔ)言提供了兩個(gè)與時(shí)間管理有關(guān)的庫(kù),它們是time庫(kù)、datetime庫(kù)。01time庫(kù)02datetime庫(kù)04任務(wù)實(shí)現(xiàn)time庫(kù)01
time庫(kù)time庫(kù)是Python中最常用的與時(shí)間處理相關(guān)的庫(kù)。中常用的time庫(kù)函數(shù)如表所示。函數(shù)說(shuō)明time()獲取當(dāng)前時(shí)間,結(jié)果為實(shí)數(shù),單位為秒。sleep(secs)進(jìn)入休眠狀態(tài),時(shí)長(zhǎng)由secs確定,單位為秒。strptime(string[,format])將一個(gè)年月日時(shí)間格式的字符串解析為時(shí)間元組。
localtime([secs])以struct_time類型輸出本地時(shí)間。asctime([tuple])獲取時(shí)間字符串,或?qū)r(shí)間元組轉(zhuǎn)換為字符串。mktime(tuple)將時(shí)間元組轉(zhuǎn)換為秒數(shù)。strftime(format[,tuple])返回字符串表示的當(dāng)?shù)貢r(shí)間,格式由format決定。計(jì)算時(shí)間。時(shí)間是可以進(jìn)行加減運(yùn)算的,一般情況下,時(shí)間是以時(shí)間戳的形式來(lái)進(jìn)行加減運(yùn)算。本實(shí)例首先導(dǎo)入time庫(kù),獲取系統(tǒng)的第一個(gè)當(dāng)前時(shí)間,這個(gè)時(shí)間是以時(shí)間戳的形式表示。然后讓系統(tǒng)等待幾秒后,再獲取系統(tǒng)的第二個(gè)當(dāng)前時(shí)間,計(jì)算這兩個(gè)時(shí)間的和和差,即完成時(shí)間的計(jì)算。
time實(shí)例其代碼如下:importtimetime_1=time.time()time.sleep(3)time_2=time.time()print(time_1+time_2)print(time_1+time_2)Datetime庫(kù)02
datetime庫(kù)
以不同格式顯示日期和時(shí)間是程序中最常用到的功能。datetime
庫(kù)可以從系統(tǒng)中獲得時(shí)間,并以用戶選擇的格式進(jìn)行輸出。常用的datetime庫(kù)函數(shù)如表所示。函數(shù)說(shuō)明date()獲取當(dāng)前的日期。time()獲取當(dāng)前的時(shí)間。datetime()獲取當(dāng)前的日期和時(shí)間。timedelta()獲取兩個(gè)時(shí)間的時(shí)間差。tzinfo()獲取時(shí)區(qū)信息。
編程確定某天是該年的第幾天。時(shí)間和日期是可以進(jìn)行操作的。本實(shí)例首先導(dǎo)入datetime庫(kù),獲取指定的日期,然后從這一年的1月1日起計(jì)算天數(shù)。
datetime實(shí)例其代碼如下: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('請(qǐng)輸入年份:')m=input('請(qǐng)輸入月份:')d=input('請(qǐng)輸入日期:')n=day_year(y,m,d)print(f'{y}年{m}月eodsdst日是這一年的第{n}天')任務(wù)實(shí)現(xiàn)——模擬時(shí)鐘03
模擬時(shí)鐘
根據(jù)題意,使用turtle模塊繪制如下表盤(屏幕顯示表盤)。表盤有三根指針:時(shí)針、分針、秒針。它們的一端被固定在表盤中心,另一端可以沿順時(shí)針?lè)较蜻M(jìn)行旋轉(zhuǎn)。表盤中最頂端的刻度為12,它是所有指針的起始點(diǎn),指針按順時(shí)針刻度依次是1,2,3……59。這里,秒針旋轉(zhuǎn)一周,分針移動(dòng)一個(gè)刻度,同樣,分針移動(dòng)一周,時(shí)針移動(dòng)一格刻度。它們是通過(guò)datetime模塊控制時(shí)鐘動(dòng)態(tài)顯示。
模擬時(shí)鐘#模擬時(shí)鐘fromturtleimport*fromdatetimeimport*defskip(step):'''
跳躍給定的距離'''penup()forward(step)pendown()defsetup_clock(radius):'''
建立鐘表的外框'''reset()pensize(7) #設(shè)置畫筆線條的粗細(xì)foriinrange(60):skip(radius) #在距離圓心為r的位置落筆ifi%5==0:#若能整除5,則畫一條短直線forward(20)skip(-radius-20)else: #否則畫點(diǎn)dot(5)skip(-radius)right(6)代碼如下:
模擬時(shí)鐘defmake_hand(name,length):'''
注冊(cè)turtle形狀,建立名字為name的形狀'''reset()skip(-0.1*length)#開始記錄多邊形的頂點(diǎn)begin_poly()forward(1.1*length)#停止記錄多邊形的頂點(diǎn),并與第一個(gè)頂點(diǎn)相連end_poly()#返回最后記錄的多邊形handForm=get_poly()#注冊(cè)形狀,命名為nameregister_shape(name,handForm)definit():globalsecHand,minHand,hurHand,printer#重置turtle指針向北mode("logo")#建立3個(gè)表示表針的Turtle對(duì)象并初始化secHand=Turtle()make_hand("secHand",130)#秒針secHand.shape("secHand")
代碼如下:
模擬時(shí)鐘minHand.shape("minHand")hurHand=Turtle()make_hand("hurHand",90)#時(shí)針hurHand.shape("hurHand")forhandinsecHand,minHand,hurHand:hand.shapesize(1,1,3)#調(diào)整3根指針的粗細(xì)hand.speed(0) #設(shè)置移動(dòng)速度#建立并輸出文字的Turtle對(duì)象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():'''
繪制鐘表的動(dòng)態(tài)顯示'''t=datetime.today()#獲取本地當(dāng)前的日期與時(shí)間#處理時(shí)間的秒數(shù)、分鐘數(shù)、小時(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的方向設(shè)為指定的角度secHand.setheading(second*6)minHand.setheading(minute*6)hurHand.setheading(hour*30)tracer(False)printer.fd(70)#向前移動(dòng)指定的距離#根據(jù)align(對(duì)齊方式)和font(字體),在當(dāng)前位置寫入文本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()方法將位置和方向恢復(fù)到初始狀態(tài),位置的初始坐標(biāo)為(0,0),#初始方向有兩種情況:若為"standard"模式,則初始方向?yàn)閞ight,表示朝向東;#若為"logo"模式,則初始方向是up,表示朝向北
代碼如下:
模擬時(shí)鐘printer.home()tracer(True)#設(shè)置計(jì)時(shí)器,100ms后繼續(xù)調(diào)用tick()函數(shù)ontimer(tick,100)defmain():#關(guān)閉繪畫追蹤,可以用于加速繪畫復(fù)雜圖形tracer(False)init()#畫表框setup_clock(200)#開啟動(dòng)畫
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省武漢市2024年中考一模數(shù)學(xué)試題含答案
- 遼寧大學(xué)《公共政策理論與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 黃河交通學(xué)院《藝術(shù)實(shí)踐(2)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇海事職業(yè)技術(shù)學(xué)院《建筑工程進(jìn)度控制》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】第七章 力 章末練習(xí) 2024-2025學(xué)年八年級(jí)下冊(cè)人教版物理
- 黑龍江財(cái)經(jīng)學(xué)院《醫(yī)藥學(xué)術(shù)推廣綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶三峽職業(yè)學(xué)院《大數(shù)據(jù)與數(shù)據(jù)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶城市管理職業(yè)學(xué)院《消防工程綜合》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江育英職業(yè)技術(shù)學(xué)院《裝飾工程制圖及AutoCAD應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 體現(xiàn)漢字文化的有趣漢字故事
- 建筑工地節(jié)前停工安全檢查表
- 三年級(jí)下冊(cè)小猿口算題1000道
- QUALITY MANUAL質(zhì)量手冊(cè)(英文版)
- 決策的藝術(shù)課件
- 國(guó)際經(jīng)濟(jì)學(xué)國(guó)際貿(mào)易的標(biāo)準(zhǔn)理論
- 8D報(bào)告培訓(xùn)教材(PPT 47頁(yè))
- -居民死亡醫(yī)學(xué)證明(推斷)書
- 糖尿病酮癥酸中毒病例討論-文檔資料
- 液相色譜質(zhì)譜質(zhì)譜儀LCMSMSSYSTEM
- 民辦非企業(yè)單位章程核準(zhǔn)表-空白表格
- 派克與永華互換表
評(píng)論
0/150
提交評(píng)論