2017-10-14 66 views
0

因爲我最後一個問題,我好一點了。沒有更多的語法問題,我希望。無論如何。猜謎遊戲 - 如何讓它變得更好?

我在做這個練習創建的猜謎遊戲,將產生號碼,並要求用戶輸入。我能夠使它工作,但我不喜歡我的代碼。

的事情是,在功能我創建了我使用變量從功能之外。據我所知,在編寫好的代碼方面並不好。任何人都可以建議我怎樣才能做得更好?我應該把這個功能放在一起嗎?我想以某種形式保留它。提前致謝 !

import random 

counter = 0 

def result_check(num): 
    if guess == rng_number: 
     print("Bravo") 
    else: 
     print("Wrong!, The number is {0}".format(rng_number)) 

while True: 
    reply = input("Do you want to play ? Y/N: ") 
    rng_number = random.randint(0,9) 
    counter += 1 
    if reply == "Y": 
     guess = int(input("Select a digit between 0 and 9: ")) 
     result_check(guess) 
    elif reply == "N": 
     print("You played {0} times".format(counter)) 
     break 
+0

如果你的代碼的工作,是完整的,但還有待改進,它應該是在代碼審查來代替。此網站主要用於修復損壞的代碼。 – Carcigenicate

+0

@Carcigenicate由於'rng_number'在腳本的主體中定義(與'guess'一起),它是一個'global'變量,因此可以從其他任何地方訪問(包括'functions'內部) - 擁有一個看看[這個](http://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html),它比我更好地解釋它! –

回答

1

您的代碼正常工作,但有一些事情我會改變。首先,如果你想使用檢查function顯正,那麼你應該pass兩個guessrng_number作爲兩個獨立的parameters。它是目前的樣子,你passguessparameternum,但num不用於支票function。該函數正在查看它被調用的範圍,並從那裏獲取猜測和隨機數。所以這是我要改變的第一件事 - 明確地將variables傳入function

雖然說這一切,對我來說似乎是愚蠢的function在所有使用!因爲你所有的語句都是if...else,所以把它移到主代碼中似乎更簡單。通過這樣做,爲你節省傳遞parametersfunction的需要,您可以通過刪除幾行這是一件好事整理代碼! :)

這裏是代碼從function移到主要部分。我也刪除在stringformatting不必要0 ...

import random 

counter = 0 

while True: 
    reply = input("Do you want to play ? Y/N: ") 
    rng_number = random.randint(0,9) 
    counter += 1 
    if reply == "Y": 
     guess = int(input("Select a digit between 0 and 9: ")) 
     if guess == rng_number: 
      print("Bravo") 
     else: 
      print("Wrong!, The number is {}".format(rng_number)) 
    elif reply == "N": 
     print("You played {} times".format(counter)) 
     break 
+0

這是有道理的,它的確看起來像功能在這裏是不必要的。這個社區是驚人的,謝謝你的洞察力:) – crookedteeth

+1

@crookedteeth請投票並接受然後顯示您的讚賞! –

+1

我不知道'接受'。考慮它做了:) – crookedteeth