Int对象不可调用(排列和组合)

时间:2017-04-04 00:44:51

标签: python

我最近制作了一个具有45多种不同功能的多功能计算器。计算器的最新成员是排列和组合。排列工作正常,但当我尝试使用组合时,我收到此错误:

  

'int'对象不可调用

我向用户询问nr的值,然后程序会为这两个数字吐出所有可能的组合。

def comb(num1, num2):
    return (factorial(num1))/(factorial(num2)(factorial(num1 - num2)))

print("You chose combinations")
num1 = int(input("Enter the value of n: "))
num2 = int(input("Enter the value of r: "))
print("There are", str(comb(num1, num2)), "possible combinations.")

解决方案似乎非常简单,但我只是不知道它是什么。要么我是盲目的,解决方案就是盯着我,或者我不知道我在做什么。

3 个答案:

答案 0 :(得分:1)

您错过了正确的乘法运算符:

int a2D[5][10];

你在分母中尝试做的是

typedef int A2D[ROW][COL];
A2D     a2d  = {0}; // Declares 2D array a2d and inits all elements to zero

func(n)是一个整数,你用括号中的内容跟着它。解析器认为你试图使用从 factorial 返回的值作为函数名,并给它一个参数(这是** factorial(num1 - num2)的返回值)。

答案 1 :(得分:0)

您意外地称为阶乘或其他

我刚刚为你清理了你的代码

def comb(num1, num2):
    numer = factorial(num1);
    denom = factorial(num2) * factorial(num1 - num2);
    return numer/denom;

答案 2 :(得分:0)

这不起作用,因为Python不进行隐式乘法(即你不能做这样的事情:

4(factorial(5))

期望得到一个答案,因为Python不会这样做。)

您需要手动插入乘法符号:

factorial(num1) / (factorial(num2) * factorial(num1 - num2))

请注意,在我的回答中,我为你删除了一些括号,因为你不需要它们。