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

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