PAT B 1019 digital black hole

The code was released, we learn together, help each other
Title:
Here Insert Picture Description
Input Sample 1:

6767

Output Sample 1:

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174

Sample Input 2:

2222

Output Sample 2:

2222 - 2222 = 0000

Note:
1. The title is entered (0,10000) number, not necessarily a 4-digit, four-digit, if not, we use 0 filled four
differential 2. subtraction of two numbers may not be 4 number, use 0 padded

Code below (Python):

def main():  # 主函数
    number = input()
    if len(number) != 4:  # 输入不足四位的用0补足四位
        number = number.zfill(4)
    if number[0] == number[1] == number[2] == number[3]:  # 输入的数四位全相同则输出  
        print('{} - {} = 0000'.format(number, number))
    else:
        while True:  # 循环调用make_difference直到number=‘6174’
            number = make_difference(number)  # 差值赋给number
            if number == '6174':
                break
    return 0


def make_difference(num):  # 求差并返回结果
    num = list(num)  # 以字符串每个字符为列表元素转换为列表
    num.sort(reverse=True)  # 降序排列
    num = ''.join(num)  # 列表元素拼接为字符串
    num_reverse = num[::-1]  # 字符串倒置
    difference = str(int(num) - int(num_reverse)).zfill(4)  # 差用0补齐4位
    print('{} - {} = {}'.format(num, num_reverse, difference))  # 格式化输出
    return difference


main()
Published 65 original articles · won praise 25 · views 1016

Guess you like

Origin blog.csdn.net/chongchujianghu3/article/details/105026090