Python求最大数及其阶乘程序无法通过在线平台审核求助
Python程序提交问题求助
我需要编写一个Python程序,功能是提示用户依次输入5个数字,找出并显示其中的最大数;若该最大数为正整数,则计算并显示其阶乘。我写的代码在本地测试时,示例输入输出都符合要求,但提交到theta dmstech平台(Python3环境)后始终无法通过。试过用import math、数组存数后用max()找最大值、限制非整数返回NoProceed等方法,都没用,不确定是代码、题目要求还是平台判题逻辑的问题,求帮助。
我的代码
def max_factorial(): largest_n = int(input('')) result = 1 for i in range (4): n = int(input('')) if n >= largest_n: largest_n = n print (largest_n) if largest_n >= 0: for i in range (1, largest_n+1): result *= i print(result) else: print('NoProceed') max_factorial()
示例输入输出
示例1
输入:
4
3
3
5
2
输出:
5
120
示例2
输入:
-1
-2
-3
-4
-5
输出:
-1
NoProceed
可能的问题点及修改建议
正整数判断逻辑错误
题目要求“最大数为正整数”才计算阶乘,但原代码判断largest_n >=0,0不是正整数,却会计算其阶乘(输出1),这不符合题目要求,应改为largest_n > 0。输入处理不严谨
题目说输入“数字”,但原代码直接用int(input()),若输入是浮点数(如5.0)或非整数格式的内容,会直接报错,平台可能存在这类测试用例。可以增加输入校验,处理整数型浮点数,非整数输入直接返回NoProceed。输出格式细节
原代码中print (largest_n)带有多余空格,虽然Python允许,但部分平台对输出格式要求严格,可能因此判错,建议去掉空格写成print(largest_n)。
修改后的参考代码
def max_factorial(): numbers = [] for _ in range(5): try: input_str = input().strip() # 处理整数型浮点数(如5.0) if '.' in input_str: num_float = float(input_str) if num_float.is_integer(): numbers.append(int(num_float)) else: print('NoProceed') return else: numbers.append(int(input_str)) except ValueError: print('NoProceed') return largest_n = max(numbers) print(largest_n) if largest_n > 0: result = 1 for i in range(1, largest_n + 1): result *= i print(result) else: print('NoProceed') max_factorial()
内容的提问来源于stack exchange,提问作者messcode
相关产品推荐
相关产品推荐

