有一个编程题想不出来求解求解,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: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) 谢谢兄弟们了我自己做好了爱你们
页:
[1]