6.7
pythontest3
def kaprekar_operation(n):
"""
对四位数n执行卡普耶卡操作:
1. 将n的各个数字重新排列成最大的数和最小的数。
2. 用最大的数减去最小的数。
3. 返回结果。
"""
digits = sorted([int(digit) for digit in str(n)])
max_number = int(''.join(map(str, digits[::-1])))
min_number = int(''.join(map(str, digits)))
result = max_number - min_number
return result
def kaprekar_sequence(start_number):
"""
从start_number开始,生成并打印卡普耶卡序列,
直到得到6174或迭代达到7次。
"""
sequence = [start_number]
current_number = start_number
steps = 0
while current_number != 6174 and steps < 7:
current_number = kaprekar_operation(current_number)
sequence.append(current_number)
steps += 1
# 如果在7步之内没有达到6174,则继续执行直到到达6174为止
if steps == 7 and current_number != 6174:
sequence.append(current_number)
return sequence
# 验证任意一个四位数是否满足卡普耶卡猜想
input_number = int(input("请输入一个任意各位数字不相同的4位数:"))
kaprekar_seq = kaprekar_sequence(input_number)
print("卡普耶卡序列:", ' -> '.join(map(str, kaprekar_seq)))
# 确保输入的数是四位数且各位数字不同
if len(set(str(input_number))) == 4 and 1000 <= input_number <= 9999:
if kaprekar_seq[-1] == 6174:
print("验证成功!卡普耶卡猜想成立,最终得到的结果是6174。")
else:
print(f"在7步内未达到6174,但序列最后的结果是{kaprekar_seq[-1]}。")
else:
print("请注意,所输入的数应当是一个四位数且各位数字均不相同。")