2017-02-14 227 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

相关问题