dengjiaxi 发表于 2020-10-21 10:30:43

有一个编程题想不出来求解求解,python的

输入一个不全相等的四位数,将它分解为四个数,组成最大数和最小数,用最大数减去最小数,得到一个结果,此结果继续分解成四个数,再组成最大数和最小数,用最大数减去最小数,得到一个结果,一直下去,直到减出来的结果为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. 不能使用后面的函数和列表。

sunrise085 发表于 2020-10-21 14:27:05

本帖最后由 sunrise085 于 2020-10-21 14:48 编辑

prom="请输入一个四位数:"
while True:
    num=input(prom)
    if num.isdigit():
      if int(num) in range(1000,10000):
            if len(set(num))==1:
                prom="不能四位相同,请重新输入一个四位数:"
                continue
            break
      else:
            prom="不是四位数:请重新输入一个四位数:"
    else:
      prom="请输入一个四位数:"
step=0
while True:
    maxnum=''.join(sorted(num,reverse=True))
    minnum=''.join(sorted(num))
    num=int(maxnum)-int(minnum)
    step+=1
    if num==6174:
      break
    num=str(num)
    if len(num)<4:
      num+='0'*(4-len(num))
print("步长=",step)

dengjiaxi 发表于 2020-10-22 02:32:04

谢谢兄弟们了我自己做好了爱你们
页: [1]
查看完整版本: 有一个编程题想不出来求解求解,python的