2012-11-17 58 views
-1

我正在研究python代碼,因爲我是初學者編程。然而,由於我無法找到解決問題的方法,所以我一直處於停頓狀態,所以我希望能有人發光或指導我告訴我哪裏出錯。Python遊戲中創建的問題(while循環和更多)

程序大綱:
一個電腦和玩家對對方採取隨機數字。誰挑選最後一個失去。

這裏是Python程序:

import random 

playAgain = 'y' 

while playAgain == 'y': 
    random_Number = random.randint(0-30) 

    while random_Number != 0 : 
     computer = random.randint(1,6) <= random_Number 
     random_Number = random_Number - computer 
     if random_No <= 0 : 
      print('Player 1 wins') 
     else: 
      player = int(input('Enter number')) 

     random_Number = random_Number - int(player) 

     if random_Number <=0: 
      print('Computer wins') 

playAgain== input('play again? (yes/no)') 

,我所面臨的三個問題是:當我選擇「否」再次發揮
1)while循環不會終止比賽。 有人可以告訴我我在這方面出了什麼問題,以及在未來的while循環中如何避免這種情況。

2)如果剩餘的隨機數是1,並且玩家選擇了一個更高的數字,那麼隨機數就會變成負數。我該如何避免這種情況?

3)當隨機數字顯示1或2時,電腦不會選擇一個數字,所以玩家失去很多時間。如何讓電腦選擇一個數字,直到遊戲結束?

+1

固定請解決您的缺口,所以我們實際上可以讀取(運行)的代碼。就目前而言,playAgain提示不在任何while循環中,整個事件只是爲print('Player 1 wins')'行引發一個SyntaxError,並且很難猜測實際結構應該是什麼成爲。 – abarnert

+0

我已經修復了縮進,並且代碼應該運行。但是,即使這樣,當我爲playAgain輸入'no'時,遊戲再次開始。 –

+0

這仍然不可能運行。 'random.randint(0-30)'會引發一個'TypeError',因爲你只用一個參數('-30')來調用它,而不是兩個。然後,'如果random_No <= 0:'會引發'NameError',因爲你還沒有定義任何這樣的變量。如果您希望我們幫助您解決問題,您必須發佈實際的代碼。 – abarnert

回答

0

1)while playAgain == 'y'應該是總體循環,因爲它應該執行遊戲的每個實例。因此,在此之後再縮進一個tab/4多個空格。

2)如果值爲負值,則將while random_Number != 0更改爲while random_Number > 0以終止。 ifs似乎沒問題。

3)您應該縮進ifelse子句緊跟在內部while循環之後,以便在讀取每個數字後執行。例如:

while random_Number > 0: 
    computer = random.randint(1,6) <= random_Number 
    random_Number = random_Number - computer 
    if random_No <= 0: 
     print('Player 1 wins') 
    else: 
     player = int(input('Enter number')) 
     random_Number = random_Number - int(player) 
     if random_Number <= 0: 
      print('Computer wins') 

編輯:有條件應該現在

+0

我改變了while whileNumber,但它仍然允許一個負數。 –