You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python入门求助:编写函数将输入参数的数字组成最大及最小数

数字位组合生成最大/最小数值实现指导

你当前编写的large函数仅支持4位以内整数的位提取,扩展性较差。更通用的实现方案无需逐位手动取数,可适配任意长度的非负整数。

实现逻辑

  • 最大数生成:将数字的所有数位按降序排列,高位放更大的数字即可得到最大组合值
  • 最小数生成:将数字的所有数位按升序排列,若排序后首位为0,需将第一个非0数字和首位交换,避免出现前导0的无效数值

通用可运行代码

n = int(input("Enter a number: "))

# 生成最大数值函数
def large(n):
    # 将数字转为字符列表后降序排序,拼接后转回整数
    digit_list = list(str(n))
    digit_list.sort(reverse=True)
    return int(''.join(digit_list))

# 生成最小数值函数
def small(n):
    digit_list = list(str(n))
    digit_list.sort()
    # 处理前导0问题
    if digit_list[0] == '0':
        # 找到第一个非0位和首位交换
        for i in range(len(digit_list)):
            if digit_list[i] != '0':
                digit_list[0], digit_list[i] = digit_list[i], digit_list[0]
                break
    return int(''.join(digit_list))

# 测试输出
print("组合最大数:", large(n))
print("组合最小数:", small(n))

适配4位整数的逐位写法(基于你现有代码修改)

如果你仅需要处理4位整数,可直接在你现有代码基础上补充排序逻辑即可:

def large_4digits(n):
    a = n % 10
    b = (n // 10) % 10 
    c = (n // 100) % 10
    d  = (n // 1000) % 10 
    # 4个数字降序排序后拼接为整数
    digits = sorted([a,b,c,d], reverse=True)
    return digits[0]*1000 + digits[1]*100 + digits[2]*10 + digits[3]

内容的提问来源于stack exchange,提问作者lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:36:05