一个数的阶乘是从1到该数的所有整数的乘积。
例如,6的阶乘是12345*6 = 720。阶乘对负数没有定义,0的阶乘是1,0 !
= 1。def recur_factorial(n):
if n == 1:
return n
else:
return n*recur_factorial(n-1)
num = 7
# check if the number is negative
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
elif num == 0:
print("The factorial of 0 is 1")
else:
print("The factorial of", num, "is", recur_factorial(num))
为此,您可以在函数下面添加以下代码:我只是想知道如何读取条目和调用函数
# main program
method = {
"IV": add_node,
"IA": add_edge,
"RV": delete_node,
"RA": delete_edge
}
numinputlines = int(input())
for _ in range(numinputlines):
instruction, *rest = input().split()
if len(rest) == 3: # There is a cost:
rest[-1] = int(rest[-1])
method[instruction](*rest)
method
字典帮助将两个字母的代码翻译成需要调用的方法。由于这些方法的参数顺序相同,您可以将它们捕获到列表rest
中,然后"解包"。传递参数时的列表。只有一件特别的事需要处理。两个方法得到一个cost
参数,它必须是数字类型。由于输入是作为字符串读取的,因此需要将该成本字符串转换为数字。if
语句处理这种情况。
这应该回答了你的问题,但它并没有完成练习。您仍然需要调试代码。例如,当前你的代码将在你给出的示例输入上引发异常——vertex "B"在IA B A 1
中被IV B
引用之前
此外,您还需要添加生成输出的代码。
但是因为你的问题是关于捕获输入和调用函数,我把剩下的留给你去解决。
如何在Python中计算整数的阶乘?请注意,阶乘函数仅为正整数定义;因此,您还应该检查n>= 0和isinstance(n, int)
。否则,分别引发ValueError
或TypeError
。
def factorial(n):
if(not isinstance(n, int) or n < 0):
raise ValueError("Invalid argument")
if (n==1 or n==0):
return 1
else:
return (n * factorial(n - 1))
# Driver Code
num = int(input("Please enter a number"))
print("Factorial : ",factorial(num))