2017-02-14 223 views
0

我其實很新,當我運行我的代碼時,我得到錯誤TypeError: game() missing 1 required positional argument: 'x',我想跟蹤由用戶輸入的gusses,我懷疑宣佈的名單b即,如果我宣佈bobjects()然後我無法使用該列表game()。我需要一些幫助來解決這個問題。 這裏是我的代碼:TypeError:game()缺少1個必需的位置參數:'x'

def objects(): 
import random 
x=random.randint(1,9) 
game(x) 
def game(x): 
b=[] 
a=int(input('Enetr the number between 1 and 9')) 
b.append(a) 
print ('till now you have entered ') 
print(b) 

if a==x: 
    print('Correct guess') 
    b=input('Do you want to do it again if not then press exit') 
    if b=='exit': 
     exit 
    else: 
     objects() 
elif a>x: 
    print('too big') 
    game() 
else: 
    print ('too small') 
    game() 
+2

解決您的縮進,因爲它出現在你的腳本。其次,你的'game()'函數需要一個參數,並且你在腳本的末尾調用'game()'....結束調用'game(x)' – MooingRawr

+1

而不是遞歸使用while循環並做它的邏輯。 – metmirr

+0

是@MooingRawr如果我在遊戲末尾運行'遊戲(x)',它就能正常工作。你可以幫助我甚至在聲明列表'b',因爲我稱之爲'遊戲(x)',列表又變空了。 –

回答

0

您定義遊戲爲def game(x):所以它需要一個自變量。然後你用game()來調用它,它沒有參數。

另外,請記住,Python關心縮進。

你可能要麼要定義game不帶任何參數,並設置x體內並使用while循環,或在函數調用如果x並沒有改變來電game(x)

讓我們的無參數+ while循環的方法

def run_game(): 
    def game(): 
     # set up x and b here 
     guess = None # that way guess won't equal x the first time around 
     while guess != x: 
      guess = int(input('Enetr the number between 1 and 9')) 
      b.append(guess) 
      print ('till now you have entered ') 
      print(b) 
      # do the guessing logic 
     # play again? 
     # yes 
      game() 
    game() 

你可以在這裏做一些改進,但多數民衆贊成它的要點

+3

爲什麼你會建議OP刪除這個參數,當他明確需要做什麼時,他想要的方式做到這一點。 – MooingRawr

+0

哦,我錯過了那一行...... oops – marisbest2

+0

編輯。我的壞... – marisbest2

相關問題