一、優(yōu)缺點(diǎn)分析
1、缺點(diǎn):?
① 數(shù)學(xué)問題的生成中只考慮了消除乘除法加括號的無效情況(例如3*(4+5)或(6*5)/2這樣的計(jì)算),但沒有去掉加減法加括號的無效情況(例如(4+(7+8))或(3-(2-1)));
?
?
?
② 項(xiàng)目代碼中變量的命名沒有嚴(yán)格安裝規(guī)范來,有些命名有點(diǎn)相似且無特定含義,給閱讀代碼的過程中造成了不小的困難,不方便理解,看起來會有些混亂。
2、 優(yōu)點(diǎn)
① 代碼是用python寫的,能夠熟練運(yùn)用各種循環(huán)判斷語句和列表,并且其中用到了許多便利簡潔的函數(shù),比如getcwd()獲取文件地址、lstrip()截掉左邊字符串、re.match()通過正則表達(dá)式進(jìn)行匹配等等;
② 一對括號的插入,是在已知固定操作數(shù)個(gè)數(shù)的情況下,在包含所有括號對可能位置的列表中,random挑選能夠插入的位置,因此得出來的數(shù)學(xué)題具有一定隨機(jī)性,這個(gè)算法思路很獨(dú)特;
?
?
?
?
③ 代碼中對于中文字符的處理非常簡便,值得參考,主要是要記得保存基本信息txt為utf-8的格式,調(diào)用open函數(shù)時(shí)也encoding=“utf-8”方式打開,然后就可以直接進(jìn)行處理了;
?
?
?
④ 初高中的數(shù)學(xué)題要求插入根號平方和三角函數(shù),因?yàn)閞andom.random()范圍是[0,1),所以將其與小于1的數(shù)(比如0.3、0.5)做比較,以此來達(dá)到隨機(jī)的目的;
?
二、具體功能實(shí)現(xiàn)
1、InputInformation():錄入附表中基本信息,用read函數(shù)讀取txt文件,并根據(jù)換行符分割成列表:
?
?
2、LandAccount():登入個(gè)人賬戶,首先通過find判斷輸入格式是否正確,接著在列表中循環(huán),看是否匹配到正確的賬戶名和密碼:
?
?
3、GenerateQuestions():隨機(jī)生成小初高的數(shù)學(xué)題,用了random函數(shù)實(shí)現(xiàn)隨機(jī)化,并且還要去除掉括號的無效情況;
4、OutputFiles():生成文件夾和數(shù)學(xué)題txt,用datetime得到當(dāng)前時(shí)間并格式化轉(zhuǎn)為字符串,之后生成相應(yīng)文件:
?
?
?
5、OldFiles():用于查重,將過去同一賬戶同一學(xué)歷生成的題目保存到一個(gè)字符串中,并在生成每個(gè)數(shù)學(xué)題時(shí)通過find來比較是否有相同的題目:
?
?
?
三、?? 個(gè)人總結(jié)
我使用的是C++進(jìn)行書寫,在寫完后才發(fā)現(xiàn)用這種語言寫的童鞋比較少,后來想想發(fā)現(xiàn)C++書寫的代碼量較大,書寫不易;在當(dāng)今計(jì)算機(jī)軟件開發(fā)的行業(yè)中多數(shù)使用python進(jìn)行敏捷開發(fā);而且python語言獨(dú)立于平臺性質(zhì),同時(shí)開發(fā)周期短,程序員易于上手;同時(shí)底層封裝性強(qiáng),代碼更加簡潔;
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
