版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Python語言程序課程設(shè)計(jì)(報(bào)告)《Python語言程序課程設(shè)計(jì)》(報(bào)告)題目:簡易計(jì)算器的設(shè)計(jì)與應(yīng)用
摘要本文主要設(shè)計(jì)了簡易計(jì)算器和即時(shí)時(shí)鐘,主要的軟件平臺(tái)是Python語言編程實(shí)現(xiàn)的主要功能是進(jìn)行簡易計(jì)算和時(shí)間觀看,主要技術(shù)指標(biāo)是庫的應(yīng)用和按鍵位置運(yùn)算,本設(shè)計(jì)的優(yōu)點(diǎn)是可以進(jìn)行生活中的簡易計(jì)算取得結(jié)果,使運(yùn)算更加方便。可以應(yīng)用到日?;旧钸\(yùn)算領(lǐng)域,需要改進(jìn)的是無法進(jìn)行更精確地運(yùn)算,希望在進(jìn)行系統(tǒng)學(xué)習(xí)后可以改進(jìn)次設(shè)計(jì),如今Python在智能化時(shí)代的應(yīng)用越來越多,需要我們不斷學(xué)習(xí)和精進(jìn)自己的技能,跟上時(shí)代的腳步,本次設(shè)計(jì)貼合生活,與人工智能適應(yīng)人類需要的目標(biāo)相符。關(guān)鍵詞:按鍵調(diào)用turtle庫圖形用戶界面小4號(hào)宋體小4號(hào)宋體,兩個(gè)關(guān)鍵詞之間空兩格后退兩個(gè)漢字,4號(hào)黑體目錄一級(jí)標(biāo)題為小四號(hào)黑體,頂格。章節(jié)號(hào)后空2個(gè)空格。一級(jí)標(biāo)題為小四號(hào)黑體,頂格。章節(jié)號(hào)后空2個(gè)空格。TOC\o"1-3"\h\u第1章概述 此處無頁碼,頁碼下面居中一級(jí)標(biāo)題,三號(hào)黑體居中,“第1章此處無頁碼,頁碼下面居中一級(jí)標(biāo)題,三號(hào)黑體居中,“第1章”與“緒論”之間空2格;上下分別空一行,小4號(hào)。二級(jí)標(biāo)題為小四號(hào)黑體,縮進(jìn)兩個(gè)漢字。章節(jié)號(hào)后空2個(gè)空格。第1章概述1.1課題選擇正文中文為小四號(hào)宋體,數(shù)字和英文為小四號(hào)TimesNewRoman,各段行首縮進(jìn)兩正文中文為小四號(hào)宋體,數(shù)字和英文為小四號(hào)TimesNewRoman,各段行首縮進(jìn)兩個(gè)漢字。頁面設(shè)置如前。1.2設(shè)計(jì)目的為了便于程序的維護(hù)和更好的實(shí)現(xiàn)模塊化,好的程序都會(huì)分解為很多函數(shù)??梢赃@么說,對(duì)于任何的編程語言,函數(shù)都是一個(gè)非常重要的概念[4]。python
不僅簡化了函數(shù)的定義過程,而且還大量借鑒了其他函數(shù)編程語言中的優(yōu)秀特性1.3設(shè)計(jì)工具Python語言編程軟件Python3.3第2章設(shè)計(jì)內(nèi)容2.1題目12.1.1設(shè)計(jì)任務(wù)及要求編程實(shí)現(xiàn)一個(gè)圖形界面的具有加,減,乘,除運(yùn)算功能的計(jì)算機(jī)2.1.2程序代碼#*_*coding:utf8*_*importtkinterfromfunctoolsimportpartial#按鈕輸入調(diào)用defget_input(entry,argu):#從entry窗口展示中獲取輸入的內(nèi)容input_data=entry.get()#合法運(yùn)算符:+-*/--**//+-#輸入合法性判斷的優(yōu)化#最后一個(gè)字符不是純數(shù)字(已經(jīng)有算數(shù)符號(hào)),原窗口值不為空,且輸入值為運(yùn)算符#ifnotinput_data[-1:].isdecimal()and(notargu.isdecimal()):#ifinput_data[-2:]in["--","**","http://","+-"]:#return#if(input_data[-1:]+argu)notin["--","**","http://","+-"]:#return##出現(xiàn)連續(xù)+,則第二個(gè)+為無效輸入,不做任何處理if(input_data[-1:]=='+')and(argu=='+'):return#出現(xiàn)連續(xù)+--,則第三個(gè)-為無效輸入,不做任何處理if(input_data[-2:]=='+-')and(argu=='-'):return#窗口已經(jīng)有--后面字符不能為+或-if(input_data[-2:]=='--')and(arguin['-','+']):return#窗口已經(jīng)有**后面字符不能為*或/if(input_data[-2:]=='**')and(arguin['*','/']):return#輸入合法將字符插入到entry窗口結(jié)尾entry.insert("end",argu)#退格(撤銷輸入)defbackspace(entry):input_len=len(entry.get())#刪除entry窗口中最后的字符entry.delete(input_len-1)#清空entry內(nèi)容(清空窗口)defclear(entry):entry.delete(0,"end")#計(jì)算defcalc(entry):input_data=entry.get()#計(jì)算前判斷輸入內(nèi)容是否為空;首字符不能為*/;*/不能連續(xù)出現(xiàn)3次;ifnotinput_data:returnclear(entry)#異常捕獲,在進(jìn)行數(shù)據(jù)運(yùn)算時(shí)如果出現(xiàn)異常進(jìn)行相應(yīng)處理#noinspectionPyBroadExceptiontry:#eval()函數(shù)用來執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值;并將執(zhí)行結(jié)果轉(zhuǎn)換為字符串output_data=str(eval(input_data))exceptException:#將提示信息輸出到窗口entry.insert("end","Calculationerror")else:#將計(jì)算結(jié)果顯示在窗口中iflen(output_data)>20:entry.insert("end","Valueoverflow")else:entry.insert("end",output_data)if__name__=='__main__':root=tkinter.Tk()root.title("Yummy")#框體大小可調(diào)性,分別表示x,y方向的可變性;root.resizable(0,0)button_bg='pink'math_sign_bg='DarkTurquoise'#*_*coding:utf8*_*importtkinterfromfunctoolsimportpartial#按鈕輸入調(diào)用defget_input(entry,argu):#從entry窗口展示中獲取輸入的內(nèi)容input_data=entry.get()#合法運(yùn)算符:+-*/--**//+-#輸入合法性判斷的優(yōu)化#最后一個(gè)字符不是純數(shù)字(已經(jīng)有算數(shù)符號(hào)),原窗口值不為空,且輸入值為運(yùn)算符#ifnotinput_data[-1:].isdecimal()and(notargu.isdecimal()):#ifinput_data[-2:]in["--","**","http://","+-"]:#return#if(input_data[-1:]+argu)notin["--","**","http://","+-"]:#return##出現(xiàn)連續(xù)+,則第二個(gè)+為無效輸入,不做任何處理if(input_data[-1:]=='+')and(argu=='+'):return#出現(xiàn)連續(xù)+--,則第三個(gè)-為無效輸入,不做任何處理if(input_data[-2:]=='+-')and(argu=='-'):return#窗口已經(jīng)有--后面字符不能為+或-if(input_data[-2:]=='--')and(arguin['-','+']):return#窗口已經(jīng)有**后面字符不能為*或/if(input_data[-2:]=='**')and(arguin['*','/']):return#輸入合法將字符插入到entry窗口結(jié)尾entry.insert("end",argu)#退格(撤銷輸入)defbackspace(entry):input_len=len(entry.get())#刪除entry窗口中最后的字符entry.delete(input_len-1)cal_output_bg='Yellow'button_active_bg='gray'#justify:顯示多行文本的時(shí)候,設(shè)置不同行之間的對(duì)齊方式,可選項(xiàng)包括LEFT,RIGHT,CENTER#文本從窗口左方開始顯示,默認(rèn)可以顯示20個(gè)字符#row:entry組件在網(wǎng)格中的橫向位置#column:entry組件在網(wǎng)格中的縱向位置#columnspan:正常情況下,一個(gè)插件只占一個(gè)單元;可通過columnspan來合并一行中的多個(gè)相鄰單元entry=tkinter.Entry(root,justify="right",font=1)entry.grid(row=0,column=0,co#*_*coding:utf8*_*importtkinterfromfunctoolsimportpartial#按鈕輸入調(diào)用defget_input(entry,argu):#從entry窗口展示中獲取輸入的內(nèi)容input_data=entry.get()#合法運(yùn)算符:+-*/--**//+-#輸入合法性判斷的優(yōu)化#最后一個(gè)字符不是純數(shù)字(已經(jīng)有算數(shù)符號(hào)),原窗口值不為空,且輸入值為運(yùn)算符#ifnotinput_data[-1:].isdecimal()and(notargu.isdecimal()):#ifinput_data[-2:]in["--","**","http://","+-"]:#return#if(input_data[-1:]+argu)notin["--","**","http://","+-"]:#return##出現(xiàn)連續(xù)+,則第二個(gè)+為無效輸入,不做任何處理if(input_data[-1:]=='+')and(argu=='+'):return#出現(xiàn)連續(xù)+--,則第三個(gè)-為無效輸入,不做任何處理if(input_data[-2:]=='+-')and(argu=='-'):return#窗口已經(jīng)有--后面字符不能為+或-if(input_data[-2:]=='--')and(arguin['-','+']):return#窗口已經(jīng)有**后面字符不能為*或/if(input_data[-2:]=='**')and(arguin['*','/']):return#輸入合法將字符插入到entry窗口結(jié)尾entry.insert("end",argu)#退格(撤銷輸入)defbackspace(entry):input_len=len(entry.get())#刪除entry窗口中最后的字符entry.delete(input_len-1)lumnspan=4,padx=10,pady=10)defplace_button(text,func,func_params,bg=button_bg,**place_params):#偏函數(shù)partial,可以理解為定義了一個(gè)模板,后續(xù)的按鈕在模板基礎(chǔ)上進(jìn)行修改或添加特性#activebackground:按鈕按下后顯示顏place_params色my_button=partial(tkinter.Button,root,bg=button_bg,padx=10,pady=3,activebackground=button_active_bg)button=my_button(text=text,bg=bg,command=lambda:func(*func_params))button.grid(**place_params)#文本輸入類按鈕place_button('7',get_input,(entry,'7'),row=1,column=0,ipadx=5,pady=5)place_button('8',get_input,(entry,'8'),row=1,column=1,ipadx=5,pady=5)place_button('9',get_input,(entry,'9'),row=1,column=2,ipadx=5,pady=5)place_button('4',get_input,(entry,'4'),row=2,column=0,ipadx=5,pady=5)place_button('5',get_input,(entry,'5'),row=2,column=1,ipadx=5,pady=5)place_button('6',get_input,(entry,'6'),row=2,column=2,ipadx=5,pady=5)place_button('1',get_input,(entry,'1'),row=3,column=0,ipadx=5,pady=5)place_button('2',get_input,(entry,'2'),row=3,column=1,ipadx=5,pady=5)place_button('3',get_input,(entry,'3'),row=3,column=2,ipadx=5,pady=5)place_button('0',get_input,(entry,'0'),row=4,column=0,padx=8,pady=5,columnspan=2,sticky=tkinter.E+tkinter.W+tkinter.N+tkinter.S)place_button('.',get_input,(entry,'.'),row=4,column=2,ipadx=7,padx=5,pady=5)#運(yùn)算輸入類按鈕(只是背景色不同)#字符大小('+','-'寬度不一樣,使用ipadx進(jìn)行修正)place_button('+',get_input,(entry,'+'),bg=math_sign_bg,row=1,column=3,ipadx=5,pady=5)place_button('-',get_input,(entry,'-'),bg=math_sign_bg,row=2,column=3,ipadx=5,pady=5)place_button('*',get_input,(entry,'*'),bg=math_sign_bg,row=3,column=3,ipadx=5,pady=5)place_button('/',get_input,(entry,'/'),bg=math_sign_bg,row=4,column=3,ipadx=5,pady=5)#功能輸入類按鈕(背景色、觸發(fā)功能不同)place_button('<-',backspace,(entry,),row=5,column=0,ipadx=5,padx=5,pady=5)place_button('C',clear,(entry,),row=5,column=1,pady=5,ipadx=5)place_button('=',calc,(entry,),bg=cal_output_bg,row=5,column=2,ipadx=5,padx=5,pady=5,columnspan=2,sticky=tkinter.E+tkinter.W+tkinter.N+tkinter.S)root.mainloop()2.1.3編譯調(diào)試及運(yùn)行結(jié)果圖1.1簡易計(jì)算機(jī)運(yùn)行結(jié)果Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆于1990年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。
Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu)[1],還能簡單有效地面向?qū)ο缶幊?。Python語法和動(dòng)態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開發(fā)應(yīng)用的編程語言,
隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。
Python在各個(gè)編程語言中比較適合新手學(xué)習(xí),Python解釋器易于擴(kuò)展,可以使用C語言或C++(或者其他可以通過C調(diào)用的語言)擴(kuò)展新的功能和數(shù)據(jù)類型。
Python也可用于可定制化軟件中的擴(kuò)展程序語言。Python豐富的標(biāo)準(zhǔn)庫,提供了適用于各個(gè)主要系統(tǒng)平臺(tái)的源碼或機(jī)器碼。2.2題目2利用turtle庫重新實(shí)現(xiàn)一個(gè)時(shí)鐘運(yùn)行代碼importturtleimportdatetime'''懸空移動(dòng)'''defmove(distance): turtle.penup() turtle.forward(distance) turtle.pendown()'''創(chuàng)建表針turtle'''defcreateHand(name,length): turtle.reset() move(-length*0.01) turtle.begin_poly() turtle.forward(length*1.01) turtle.end_poly() hand=turtle.get_poly() turtle.register_shape(name,hand)'''創(chuàng)建時(shí)鐘'''defcreateClock(radius): turtle.reset() turtle.pensize(7) foriinrange(60): move(radius) ifi%5==0: turtle.forward(20) move(-radius-20) else: turtle.dot(5) move(-radius) turtle.right(6)'''獲得今天是星期幾'''defgetWeekday(today): return['星期一','星期二','星期三','星期四','星期五','星期六','星期日'][today.weekday()]'''獲得今天的日期'''defgetDate(today): return'%s年%s月%s日'%(today.year,today.month,today.day)'''動(dòng)態(tài)顯示表針'''defstartTick(second_hand,minute_hand,hour_hand,printer): today=datetime.datetime.today() second=today.second+today.microsecond*1e-6 minute=today.minute+second/60. hour=(today.hour+minute/60)%12 #設(shè)置朝向 second_hand.setheading(6*second) minute_hand.setheading(6*minute) hour_hand.setheading(12*hour) turtle.tracer(False) printer.forward(65) printer.write(getWeekday(today),align='center',font=("Courier",14,"bold")) printer.forward(120) printer.write('12',align='center',font=("Courier",14,"bold")) printer.back(250) printer.write(getDate(today),align='center',font=("Courier",14,"bold")) printer.back(145) printer.write('6',align='center',font=("Courier",14,"bold")) printer.home() printer.right(92.5) printer.forward(200) printer.write('3',align='center',font=("Courier",14,"bold")) printer.left(2.5) printer.back(400) printer.write('9',align='center',font=("Courier",14,"bold")) printer.home() turtle.tracer(True) #100ms調(diào)用一次 turtle.ontimer(lambda:startTick(second_hand,minute_hand,hour_hand,printer),100)'''開始運(yùn)行時(shí)鐘'''defstart(): #不顯示繪制時(shí)鐘的過程 turtle.tracer(False) turtle.mode('logo') createHand('second_hand',150) createHand('minute_hand',125) createHand('hour_hand',85) #秒,分,時(shí) second_hand=turtle.Turtle() second_hand.shape('second_hand') minute_hand=turtle.Turtle() minute_hand.shape('minute_hand') hour_hand=turtle.Turtle() hour_hand.shape('hour_hand') forhandin[second_hand,minute_hand,hour_hand]: hand.shapesize(1,1,3) hand.speed(0) #用于打印日期等文字 printer=turtle.Turtle() printer.hideturtle() printer.penup() createClock(160) #開始顯示軌跡 turtle.tracer(True) startTick(second_hand,minute_hand,hour_hand,printer) turtle.mainloop()if__name__=='__main__': start()運(yùn)行結(jié)果圖2.1:鐘表的運(yùn)行2.3題目3利用turtle庫繪制一個(gè)五角星運(yùn)行代碼#Five_Star.py#導(dǎo)入庫fromturtleimport*pensize(5)pencolor('black')fillcolor('red')begin_fill()forward(200)right(144)fd(200)right(144)fd(200)right(144)fd(200)right(144)fd(200)end_fill()運(yùn)行結(jié)果圖3.1:五角星第3章總結(jié)本次實(shí)訓(xùn),是對(duì)我本事的進(jìn)一步鍛煉,也是一種考驗(yàn)。從中獲得的諸多收獲,也是很可貴的,是十分有意義的。經(jīng)過這次實(shí)訓(xùn),我收獲了很多,一方面學(xué)習(xí)到了許多以前沒學(xué)過的專業(yè)知識(shí)與知識(shí)的應(yīng)用,另一方面還提高了自我動(dòng)手做項(xiàng)目的本事。在實(shí)訓(xùn)中我學(xué)到了許多新的知識(shí)。是一個(gè)讓我把書本上的理論知識(shí)運(yùn)用于實(shí)踐中的好機(jī)會(huì),原先,學(xué)的時(shí)候感嘆學(xué)的資料太難懂,此刻想來,有些其實(shí)并不難,關(guān)鍵在于理解。在這次實(shí)訓(xùn)中還鍛煉了我其他方面的本事,提高了我的綜合素質(zhì)。它鍛煉了我做項(xiàng)目的本事,提高了獨(dú)立思考問題、自我動(dòng)手操作的本事,在工作的過程中,復(fù)習(xí)了以前學(xué)習(xí)過的知識(shí),并掌握了一些應(yīng)用知識(shí)的技巧等。從那里,我學(xué)會(huì)了下面找工作的心態(tài):繼續(xù)學(xué)習(xí),不斷提升理論涵養(yǎng)。在信息時(shí)代,學(xué)習(xí)是不斷地汲取新信息,獲得事業(yè)進(jìn)步的動(dòng)力。作為一名青年學(xué)子更應(yīng)該把學(xué)習(xí)作為保持工作積極性的重要途徑。走上工作崗位后,我會(huì)積極響應(yīng)單位號(hào)召,結(jié)合工作實(shí)際,不斷學(xué)習(xí)理論、業(yè)務(wù)知識(shí)和社會(huì)知識(shí),用先進(jìn)的理論武裝頭腦,用精良的業(yè)務(wù)知識(shí)提升能力,以廣博的社會(huì)知識(shí)拓展視野。這次課程設(shè)計(jì)的實(shí)踐和體驗(yàn)下來,對(duì)我來說學(xué)到的不僅是那些知識(shí),更多的是團(tuán)隊(duì)和合作?,F(xiàn)在想來,也許學(xué)校安排的課程設(shè)計(jì)有著它更深層的意義吧,它不僅僅讓我們綜合那些理論知識(shí)來運(yùn)用到設(shè)計(jì)和創(chuàng)新,還讓我們知道了一個(gè)團(tuán)隊(duì)凝聚在一起時(shí)所能發(fā)揮出的巨大潛能!python作為我們的主要專業(yè)課之一,雖然在開學(xué)初我對(duì)這門課并沒有什么興趣,覺得那些程序枯燥乏味,但在這次課程設(shè)計(jì)后我發(fā)現(xiàn)自己在一點(diǎn)一滴的努力中興趣也在逐漸增加。一開始還在為到底選那個(gè)課題而發(fā)生分歧,最后還是在老師的耐心分析和指導(dǎo)下完成了課題的選定,但是隨之而來的問題卻遠(yuǎn)比我們想想的要困難的多過沒想到這項(xiàng)看起來不需要多少技術(shù)的工作卻是非
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽廣播影視職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2026年交管12123學(xué)法減分復(fù)習(xí)考試題庫附參考答案(培優(yōu)b卷)
- 鉬應(yīng)用市場影響需求研討投資評(píng)估規(guī)劃分析研究文獻(xiàn)
- 金融科技行業(yè)區(qū)塊鏈技術(shù)應(yīng)用及未來發(fā)展趨勢報(bào)告
- 重型機(jī)械制造行業(yè)供需平衡考察及融資項(xiàng)目可行性分析報(bào)告
- 車聯(lián)網(wǎng)行業(yè)供需分析及未來投資前景規(guī)劃分析研究報(bào)告
- 2025年度運(yùn)維經(jīng)理年底工作總結(jié)及下一年度工作計(jì)劃
- 證券行業(yè)市場發(fā)展現(xiàn)狀競爭分析投資評(píng)估行業(yè)規(guī)劃分析報(bào)告
- 2026年心理咨詢師之心理咨詢師基礎(chǔ)知識(shí)考試題庫帶答案(培優(yōu))
- 2026年消防設(shè)施操作員之消防設(shè)備高級(jí)技能考試題庫300道含答案【輕巧奪冠】
- 《中級(jí)財(cái)務(wù)會(huì)計(jì)》課程重點(diǎn)難點(diǎn)講解(東北財(cái)經(jīng)大學(xué)版)-課件
- 氯氣的實(shí)驗(yàn)室制備AI賦能課件高一上學(xué)期化學(xué)人教版
- 2025年公安院校聯(lián)考《申論》真題含答案解析
- 2025年2026江蘇省考申論題及答案
- 礦井密閉工培訓(xùn)知識(shí)課件
- DB61-T 1362-2020 海綿城市低影響開發(fā)雨水系統(tǒng)技術(shù)規(guī)范
- 2025年山東省臨沂市輔警考試題庫(附答案)
- 慢性腎病治療課件
- 2025年成都市錦江區(qū)教育局公辦學(xué)校員額教師招聘第六批考試參考試題及答案解析
- 國開2025年人文英語4寫作形考答案
- 四川省醫(yī)療服務(wù)價(jià)格項(xiàng)目匯編(2022版)
評(píng)論
0/150
提交評(píng)論