PAT乙级 1019 数字黑洞

把当时的代码放出来,大家共同学习,互相帮助
题目:
在这里插入图片描述
输入样例1:

6767

输出样例1:

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

输入样例2:

2222

输出样例2:

2222 - 2222 = 0000

注意:
1.题目中输入的是(0,10000)的数,不一定是4位数,如果不是4位数,我们要用0补齐4位
2.两数相减之差可能不是4位数,要用0补齐

代码如下(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()
发布了65 篇原创文章 · 获赞 25 · 访问量 1016

猜你喜欢

转载自blog.csdn.net/chongchujianghu3/article/details/105026090