友情提示:380元/半年,儿童学编程,就上码丁实验室。
求最大数
【任务描述】输入一个三位数,将该三位数各位上的数字重新排列得到新的三位数,求这些三位数中最大的三位数和最小的三位数。如输入123,输出最大数321,最小数123。
【解决思路】
将三位数的各位上的数字取出,然后求出这3个数字中的最大值,中间值和最小值,然后确定新的三位数的百位数,十位数,个位数,最后计算出最大的三位数和最小的三位数。下面的代码中假设变量baiwei,shiwei,gewei存放的数量依次递减,那么最大数就可以用公式计算maxnum=100*baiwei+10*shiwei+gewei。在实际编程中,经常会用到这样的方法。(常规思路)
【代码】
【方法1】
num=int(input(“请输入一个三位数“))
gewei=num % 10
shiwei=num // 10 % 10
baiwei=num // 100
if baiwei<shiwei:
baiwei,shiwei=shiwei,baiwei
if baiwei<gewei:
baiwei,gewei=gewei,baiwei
if shiwei<gewei:
shiwei,gewei=gewei,shiwei
maxnum=100*baiwei+10*shiwei+gewei
minnum=100*gewei+10*shiwei+baiwei
print(“最大的三位数:“,maxnum)
print(“最小的三位数:“,minnum)
【方法2】,利用Python内置对象list的sort方法,可以对各位上的数字排序,然后可以求出最大值和最小值。
s=input(“请输入一个三位数“)
num=[item for item in s] #列表生成式,将各位上的数字存入列表num
num.sort() #对列表升序排序
minnum=int(num[0])*100+int(num[1])*10+int(num[2])
maxnum=int(num[2])*100+int(num[1])*10+int(num[0])
print(“最大的三位数:“,maxnum)
print(“最小的三位数:“,minnum)
【扩展】如果输入的整数位数不确定的话,就不能用上述程序实现。即输入一个正整数n,输出该数各位上的数字重新组合后的最大数和最小数。
【思路】逐位取出各位上的数字,并存入list(类似vb中的数组),然后同样利用sort方法快速对各位上的数字排序,利用各位上权值生成最大数和最小数。
s=int(input(“请输入一个正整数“))
num=[]
while(s>0): #取出各位上的数字存入列表num
num.append(s%10)
s=s // 10
num.sort() #对num升序排序
maxnum=minnum=0
for item in num: #生成最小数
minnum=minnum*10+int(item)
for item in num[::-1]: #生成最大数
maxnum=maxnum*10+int(item)
print(“最大的三位数:“,maxnum)
print(“最小的三位数:“,minnum)
说明:num[::-1]实现对列表num逆序
【运行结果】
请输入一个三位数123
最大的三位数: 321
最小的三位数: 123