求最大值公开课.doc
任务:输入一个三位数,将该三位数各位上的数字重新排列得到新的三位数,求这些三位数中最大的三位数和最小的三位数。解决思路:将三位数的各位上的数字取出,然后求出这3个数字中的最大值,中间值和最小值,然后确定新的三位数的百位数,十位数,个位数,最后计算出最大的三位数和最小的三位数。下面的代码中假设变量baiwei,shiwei,gewei存放的数量依次递减,那么最大数就可以用公式计算maxnum=100*baiwei+10*shiwei+gewei。在实际编程中,经常会用到这样的方法。(常规思路)num=int(input("请输入一个三位数")gewei=num % 10shiwei=num / 10 % 10baiwei=num / 100if baiwei<shiwei: baiwei,shiwei=shiwei,baiweiif baiwei<gewei: baiwei,gewei=gewei,baiweiif shiwei<gewei: shiwei,gewei=gewei,shiweimaxnum=100*baiwei+10*shiwei+geweiminnum=100*gewei+10*shiwei+baiweiprint("最大的三位数:",maxnum)print("最小的三位数:",minnum)方法2,利用python内置对象list的sort方法,可以对各位上的数字排序,然后可以求出最大值和最小值。s=input("请输入一个三位数")num=item for item in snum.sort()minnum=int(num0)*100+int(num1)*10+int(num2)maxnum=int(num2)*100+int(num1)*10+int(num0)print("最大的三位数:",maxnum)print("最小的三位数:",minnum)【扩展】如果输入的数字是不确定位数的话,就不能用上述程序实现。即输入一个正整数n,输出该数各位上的数字重新组合后的最大数和最小数。思路:逐位取出各位上的数字,并存入list(类似vb中的数组),然后同样利用sort方法快速对各位上的数字排序,利用各位上权值生成最大数和最小数。s=int(input("请输入一个正整数")num=while(s>0): #取出各位上的数字存入列表num num.append(s%10) s=s / 10num.sort() #对num升序maxnum=minnum=0for 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逆序