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'
答案 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
,以使其在数学方程式中被接受。您甚至可以将其与integer
和while
一起放在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)
进行以下更改:
f = int(input("Enter the number to be squared : "))
print(factorial(f))
分别到第1行和最后一行。