我不喜歡使用大量的IF語句。這裏是我打什麼周圍,現在,在世界上具有使用大量的IF把它做的語句:在bash腳本中是否有一個等同於嚴重口音的Python?
首先,一些變量...
pick_level = 1
lockpicking_level1_maxxp = 40
lockpicking_level2_maxxp = 70
lockpicking_level3_maxxp = 100
現在,我們得到撬鎖。當選擇一個1到任意一個直到當前鎖定技能水平的最大xp除以2的隨機數時,纔會成功選擇。因此,對於1級是1到20之間的任何東西 - 等級2級,1和35之間的任何東西,3什麼和50之間1這是它會怎樣看與IF語句:
x = random.randint(1, 100)
if pick_level == 1:
if x not in range(1, (lockpicking_level1_maxxp/2)):
print 'You failed to pick the lock'
...
elif pick_level == 2:
if x not in range(1, (lockpicking_level2_maxxp/2)):
etcetc
我想什麼做的是確定基於pick_level價值的XP和沒有做一堆IF語句問同樣的問題一遍又一遍的。這將大大下降爲這樣的事情(使用重音符像在bash):
if x not in range(1, (lockpicking_level`pick_level`_maxxp/2)):
這樣我可以通過具有自動成爲「lockpicking_level1_maxxp」,「lockpicking_level2_maxxp」或「lockpicking_level3_maxxp」代碼避免所有的IF語句基於pick_level的值是什麼。
它已經有一段時間,因爲我做的bash腳本了,所以我的工作原理可能是斷位的內存。我也知道``在Python高達3版本基本相同,使用再版(),所以這不會是如何做到這一點。有什麼辦法可以做到這一點,或者我堅持在所有地方寫出醜陋的IF語句?
我想我可以用一個字典,因爲這樣的:
lockpicking_maxxp = {1:20, 2:35, 3:50}
...
if x in range(1, lockpicking_maxxp[pick_level]):
...但我不知道這正是我將如何建立自己的技術數據庫(雖然會可能最終成爲一個JSON文件。我喜歡JSON)
非常感謝您的寶貴時間。我期待更多地瞭解這個想法。
使用的字典。凡是相當於使用'eval'是醜陋的,proner在給予無用的錯誤,很難理解,最糟糕的是完全不必要的。 – delnan
嘗試閱讀面向對象編程。從長遠來看,它會使處理更復雜的東西變得更容易。 Shell/Bash腳本只有原始數據結構,python更好,dict和set使得生活變得更好。eval()和friends可以在shellcript中使用,但是在高級語言中它被認爲是不好的風格。但不要讓這阻止你,無論你如何做,編程都是非常有趣的! :D – sleeplessnerd