2016-08-18 142 views
-1

喜IM相当新的Python和着点我的错误在这个程序中,我的错误看起来像这样Python函数错误:类型错误

TypeError: hitormiss() missing 1 required positional argument: 'totalaim'

#!usr/bin/python3 
import random 

def takeshot(prompt='do you want to take shot?\n'): 
answer = input(prompt) 
    if answer == ['yes', 'y']: 
     print("taking shot...") 
    else: 
     print("not-working") 

def cal(randomnum = random.randrange(0, 100) , baseaim = 15): 
    totalaim = randomnum + baseaim 
    return totalaim 




def hitormiss(totalaim, hit=50): 
    if totalaim >= hit: 
     print("You have hit your target!") 
    elif totalaim < hit: 
     print("You have missed your target!") 
    else: 
     print("Revise Code.") 



takeshot() 
cal() 
hitormiss() 

是totalaim不CAL已经声明?

+3

不,这不是。它仅在本地声明为“cal”。再加上你似乎在混淆课程和功能以及更多的东西。也许你应该从一个教程开始? – Julien

+0

感谢您的复习!是的,这可能是由于过去三天不断学习python,只有这么多的信息可以吸收。 –

+1

请注意,只有计算'cal'函数中参数'randomnum'的值一旦。之后,你总是会得到相同的号码。如果你不想这样做,你必须将'randomnum'的创建移动到函数的主体。 – Matthias

回答

0

此外,cal.totalaim不会在方式解决你打算

def hitormiss(totalaim, hit=50): 
    if totalaim >= hit: 
     print("You have hit your target!") 
    elif totalaim < hit: 
     print("You have missed your target!") 
    else: 
     print("Revise Code.") 

然后调用,如建议

takeshot()  
hitormiss(cal()) 
+0

谢谢!菜鸟犯我的错误。我很抱歉,我花了很多时间在最近尝试学习python,以至于一次没有太多的信息要保留。 –

0

您应该删除cal()hitormiss()函数调用,取而代之的是:

hitormiss(cal()) 

这是因为一个参数将被传递到hitormiss()cal()返回totalaim值。