自定义阶乘函数生成的不受支持的操作数错误

时间:2019-07-09 14:27:18

标签: python python-3.x function

f = input("Enter the number to be squared : ")
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)
print(factorial(f))    

我正在尝试获取输入数字的阶乘

运行代码时,出现以下错误: TypeError: unsupported operand type(s) for -: 'str' and 'int'

3 个答案:

答案 0 :(得分:1)

您必须将输入强制转换为function onEdit(e) { var sh = e.source.getActiveSheet(); if(sh.getName() === 'Date Calculator' && e.range.getA1Notation() === 'C9' ) { var cell = sh.getRange("C10"); cell.setFormula('=WORKDAY(C9,+$C$3)'); } } float,以使其在数学方程式中被接受。您甚至可以将其与integerwhile一起放在try:循环中,以解决输入错误或当用户不满意您想要的类型{{1 }}变量。您可以阅读documentation了解更多信息。

except ValueError:

OR

f

例如,即使您输入数字f = int(input("Enter the number to be squared : ")) ,在原始代码f = float(input("Enter the number to be squared : ")) 上也将采用任何字符串值。因此,当您调用解决阶乘的函数时,它将返回错误,因为您当然不能对字符串进行阶乘表示法。

答案 1 :(得分:0)

我看到的第一个问题是您的数据类型。您将需要将f转换为整数或浮点数,以便可以在函数的数学运算中使用它。如果用户输入的不是数字,则可能还需要包括一些异常处理。

您可以使用int(f)float(f)

来转换类型

正如另一位评论者所提到的,您还print(factorial(f)的结尾缺少括号。

如果进行这些更改,则代码将运行。

答案 2 :(得分:0)

  1. 您忘了在圆括号结尾处关闭圆括号')'。
  2. 变量“ f”的数据类型必须为整数,并且您正在传递字符串。作为“输入”,默认情况下将字符串数据类型分配给变量。

进行以下更改:

f = int(input("Enter the number to be squared : "))
print(factorial(f))

分别到第1行和最后一行。