[Project] Python隨機字串組合範例 – 以標語產生器為例 (含反重複語法)

2015-07-03專案 Projects Standard

這幾天又搞了個小專案來練Python,完成了就放上來與大家分享囉!

請注意,本專案基於Python 3.4
請不要用Python 2,然後回來靠北有Bug

這次要弄個最近很紅的標語產生器,透過隨機選取字串並組合,來產生「隨機標語、語錄產生器」的效果。

專案目標


  • 隨機選取字串
  • 任何一段字串都不能與上一次產生出來的字串相同
  • 把每段字串組合起來並且Print

程式碼


 

 

流程圖


antinukeGenerater

詳細說明


 全域定義

  • 首先可以看到我們import了隨機、計時函式庫

 

  • 接著定義句子中3個部份的字串

 main函式宣告、定義

  • 接著宣告一個函式叫main(i),i值等等會拿來判斷是否為第一次執行,本範例中假設i值為1時,為第一次執行,為0時,是重複執行

  • 透過global前綴,我們讓函式中宣告的變數可以跨函式運用

  • 透過random.choice函式,我們可以讓它隨機選出每個randomStr要採用的字串

  • if判斷式,等等呼叫函式時我們會賦值,如果i是1,那就表示為第一次執行,直接pass繼續執行,不然就執行check()檢查字串是否有重複

  • 用過的字串存入oldStr中

  • 用+符號組合句子,Print出來,順便印幾行空格出來,當作排版

  • time.sleep函式,可以使程式暫停

  • 呼叫 restart() 函式

check反重複函式宣告、定義

  • 在main函式中,我們已經宣告並且定義了randomStr(新字串)跟oldStr(舊字串),接著我們要用check函式來比較兩者是否相同,如果相同,則再跑一次main,如果不同,就直接pass繼續執行。
    回顧一下main函式,這裡的oldStr值會對應到oldStr1、oldStr2、oldStr3,randomStr值會對應到randomStr1、randomStr2、randomStr3

 start首次啟動函式宣告、定義

  • 首先先定義一個只是為了偵測Enter,其他根本沒屁用的GenConfirm變數,使用者不管輸入什麼,按下Enter後,程式即繼續執行

  •  Print出一條分隔線,接著帶入i=1,藉此判斷此為第一次執行main

restart再次啟動函式宣告、定義

  •  這段函式跟start差不多,只不過是要讓main識別是重新啟動

 呼叫啟動函式

  • 結尾就是呼叫start開始跑程式

 

執行結果


基本上會一直loop下去…

python_Generator

 

後記


其實就是個很簡單的判斷+組合,不過check函式確實搞蠻久的=_=

算是拿來練表格、組合的好範例