缺少1个潜在论点

时间:2015-06-02 05:54:21

标签: python python-3.x typeerror

这是我在这个网站上发表的第一篇文章,我正在参加编程介绍的在线课程,这对于一个介绍非常困难。我以前没有编码经验,python是我学习的第一种语言,如果我在论坛上做错了,请原谅我...无论如何这里是问题:

所以我的问题是,我如何满足函数中的参数?。例如,我有一个功能,可以检查以前代码中的一些东西(我正在编写一个莎士比亚侮辱生成器,有一些额外的东西,比如字母排序,保存,文件I / O等等。),我不能让我的def功能工作...... 它一直给我missing 1 potential argument numInsults错误。 我怎样才能满足这个条件?

def checkInsultsFile(numInsults, Insults="Insults.txt"):
    numInsults = number
    isItAlpha = "Insults.txt".isalpha()
    if isItAlpha:
        return True

如果我的侮辱文本文件是按字母顺序排列的,如果insults(numInsults)的数量合法(在100-10000之间,并且是一个整数),我需要此函数返回true,我确定它是合法使用另一个名为getNumInsults which = numInsults

的函数

和数字来自之前的函数......

number = int(input("\nHow many insults do you want? \
Enter in range 100 to 10,000: "))

我希望我把所有内容都包括在内......我的主要问题是:我怎样才能停止收到错误?

2 个答案:

答案 0 :(得分:1)

我发现此代码存在一些问题,您可以修复这些问题并尝试

以下两行

def checkInsultsFile(numInsults, Insults="Insults.txt"):
    numInsults = number ## Wrong: number is not known and numInsults assigned not a good idea)

有一个问题 - 您正在将numInsults传递给该函数,并在下一行中再次为其赋值。这当然不是期望/预期的。当您将其作为参数传递时,numInsults将在您的程序中可用。此外number未在任何地方定义,是否在文件中的其他位置定义?这是一个潜在的错误。记住 - 通常你不应该为传递给函数的参数赋值(在其他编程语言中有些情况可能需要/有用但不在这里)。

第二个参数有一个默认值“Insults.txt”,这在Python中很有用,你可以用以下方式调用函数checkInsults - 这三个都是合法的

checkInsults(10) # no value for Insults parameter - default is used
checkInsults(10, "another_insult.txt") # Insult is now set to "another_insult.txt" 

然而,以下是非法的

checkInsults() # Here numInsults an integer is expected to be passed and you are passing nothing 

所以这应该给出错误。 `期望1个参数得到0或类似的东西,但你的错误条件是我在Python中常见的东西。

希望这有助于您开始修复代码并希望自己修复错误。

答案 1 :(得分:0)

你是怎么称呼这个功能的?你已经定义它需要1-2个参数,但它需要至少1个参数我的猜测是,在你的代码的其他地方,你有:

isOk = checkInsultsFile()

当你应该拥有的是:

isOk = checkInsultsFile(101)

或者,使用可选参数:

isOk = checkInsultsFile(101, "myInsults.txt")

修改

虽然OP没有说,但我相信有问题的函数实际上是一个类的一部分,在这种情况下它的第一个参数应该是self。所以定义应该是:

def checkInsultsFile(self, numInsults, Insults="Insults.txt"):
    ...

虽然您仍然可以按上述方式调用该功能。