求3位自然数数字重排差平方的Python代码精简方案
精简优化3位自然数重排差值平方计算代码
需求说明
输入一个3位自然数,输出其数字重排后最大数与最小数差值的平方。例如输入352,重排最大数为532,最小数为235,差值平方为(532-235)²=88209。
优化后的代码
num = input("请输入一个3位自然数:") if len(num) == 3 and num.isdigit() and int(num) > 99: digits = sorted(num) min_num = int(''.join(digits)) max_num = int(''.join(reversed(digits))) print((max_num - min_num) ** 2) else: print("输入无效,请重新输入一个3位自然数")
优化要点
- 简化数字拆分逻辑:直接将输入转为字符串,利用字符串的可迭代性获取每一位数字,避免繁琐的取模、整除运算。
- 减少冗余操作:仅创建一次排序后的字符列表,通过反转得到降序排列结果,省去重复复制列表的步骤。
- 强化输入验证:同时检查输入长度、是否为纯数字及数值范围,规避非数字字符的输入错误。
- 提升代码可读性:使用
min_num、max_num这类直观命名替代原代码的Small、Big。 - 简化数值转换:直接拼接排序后的字符为数字字符串再转整数,比逐个计算位值更简洁高效。
内容的提问来源于stack exchange,提问作者məhəmməd cahangirli
相关产品推荐
相关产品推荐

