将C++阶乘代码转Python遇语法错误,需适配returnfac(9)测试
解决C++阶乘转Python的语法错误与代码实现
先解决「Syntax error: unmatched '{'」问题
Python完全不使用C的大括号{}划分代码块,而是依靠**缩进(推荐4个空格)**区分代码层级,同时if/else/for等语句结尾必须加冒号:。你直接保留C代码里的大括号到Python中,就会触发这个语法错误——直接删掉所有{},用缩进替代即可。
按测试要求编写fac函数
作业给出的测试代码是return fac(9),这要求你必须定义一个名为fac的函数,接收整数参数并返回对应阶乘结果。结合原C++的逻辑,完整实现如下:
def fac(n): # 处理负数阶乘的异常情况 if n < 0: return None factorial = 1 # 对应C++的for循环逻辑:从1遍历到n(包含n) for i in range(1, n + 1): factorial *= i return factorial # 验证测试代码:调用fac(9)并输出结果 print(fac(9)) # 输出:362880 # 还原原C++的交互输入输出功能 n = int(input("Enter a positive integer: ")) if n < 0: print("Error! Factorial of a negative number doesn't exist.") else: print(f"Factorial of {n} = {fac(n)}")
关键细节说明
- 函数定义:Python用
def关键字声明函数,不需要像C++那样指定返回值类型 - 循环实现:
range(1, n+1)是左闭右开区间,刚好对应C++中i从1到n的循环逻辑 - 输入处理:
input()获取的是字符串,必须用int()转换为整数类型 - 字符串输出:用Python的f-string(
f"...")替代C++的cout拼接,语法更简洁直观
内容的提问来源于stack exchange,提问作者John1974
相关产品推荐
相关产品推荐

