Python 5位金字塔数字判定实现及数位提取逻辑优化咨询
数位提取逻辑优化说明
你当前使用的整除+取余的数位提取逻辑本身在输入为合法5位正整数的前提下是完全准确的,不会影响金字塔数字的判定结果,只是写法冗余度较高,且没有覆盖输入合法性校验的场景,整体可以做如下优化进一步提升健壮性和可读性:
优化方向1:用字符串处理简化数位提取
不需要写多句重复的整除、取余逻辑,直接将输入转为字符串处理即可快速得到每一位的数值,代码更简洁不易出错:
# 直接读取输入为字符串 num_str = input("Enter number: ").strip() # 输入合法性校验:必须是5位纯数字 if not num_str.isdigit() or len(num_str) != 5: print("请输入合法的5位正整数") else: # 快速转成每一位的整数列表 digits = [int(c) for c in num_str] if digits[0] < digits[1] < digits[2] > digits[3] > digits[4]: print(f"{num_str} : Pyramid") else: print(f"{num_str} : Not pyramid")
优化方向2:补充输入合法性校验
你原有代码没有对输入做校验,如果用户输入非5位数字、非数字内容时,会直接报错或者得到错误的判定结果,补充校验逻辑后整体判定的准确性会大幅提升。
如果你坚持要使用数值运算的方式提取数位,原有逻辑本身没有错误,只要提前加一步输入范围校验(判断输入的数字在10000~99999区间内),就能保证判定结果准确。
内容的提问来源于stack exchange,提问作者Aky
相关产品推荐
相关产品推荐

