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
相关产品推荐
相关产品推荐

