鱼C论坛

 找回密码
 立即注册
查看: 2170|回复: 2

[已解决]有一个编程题想不出来求解求解,python的

[复制链接]
发表于 2020-10-21 10:30:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入一个不全相等的四位数,将它分解为四个数,组成最大数和最小数,用最大数减去最小数,得到一个结果,此结果继续分解成四个数,再组成最大数和最小数,用最大数减去最小数,得到一个结果,一直下去,直到减出来的结果为6174为止,求最后结果得到6174的步长。
   例如:输入1234,排列后最大数为4321,最小数1234,4321-1234=3087;得到的结果3087再排列最大数为8730,最小数0378,8730-0378=8352;继续:8532-2358=6174,此时输出的步长为3。
要求程序的输出结果如下:
运行程序后:

请输入一个四位数:1234
步长=3

第二次运行程序后:

请输入一个四位数:2222
不能四位相同,请重新输入一个四位数:34
不是四位数:请重新输入一个四位数:1234
步长=3

注意:
1. 若输入别的数据,输出的步长应该在1~7之间。
2. 程序一样的,或者思路相同,两者无效,将被判零分。
3. 不能使用网络上的程序,必须按照要求的输出结果输出。
4. 尽自己的能力做多少,算多少,必须是自己独立完成的。
5. 不能使用后面的函数和列表。

最佳答案
2020-10-21 14:27:05
本帖最后由 sunrise085 于 2020-10-21 14:48 编辑
  1. prom="请输入一个四位数:"
  2. while True:
  3.     num=input(prom)
  4.     if num.isdigit():
  5.         if int(num) in range(1000,10000):
  6.             if len(set(num))==1:
  7.                 prom="不能四位相同,请重新输入一个四位数:"
  8.                 continue
  9.             break
  10.         else:
  11.             prom="不是四位数:请重新输入一个四位数:"
  12.     else:
  13.         prom="请输入一个四位数:"
  14. step=0
  15. while True:
  16.     maxnum=''.join(sorted(num,reverse=True))
  17.     minnum=''.join(sorted(num))
  18.     num=int(maxnum)-int(minnum)
  19.     step+=1
  20.     if num==6174:
  21.         break
  22.     num=str(num)
  23.     if len(num)<4:
  24.         num+='0'*(4-len(num))
  25. print("步长=",step)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-21 14:27:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-10-21 14:48 编辑
  1. prom="请输入一个四位数:"
  2. while True:
  3.     num=input(prom)
  4.     if num.isdigit():
  5.         if int(num) in range(1000,10000):
  6.             if len(set(num))==1:
  7.                 prom="不能四位相同,请重新输入一个四位数:"
  8.                 continue
  9.             break
  10.         else:
  11.             prom="不是四位数:请重新输入一个四位数:"
  12.     else:
  13.         prom="请输入一个四位数:"
  14. step=0
  15. while True:
  16.     maxnum=''.join(sorted(num,reverse=True))
  17.     minnum=''.join(sorted(num))
  18.     num=int(maxnum)-int(minnum)
  19.     step+=1
  20.     if num==6174:
  21.         break
  22.     num=str(num)
  23.     if len(num)<4:
  24.         num+='0'*(4-len(num))
  25. print("步长=",step)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 02:32:04 | 显示全部楼层
谢谢兄弟们了我自己做好了爱你们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表