Python:如何以两种方式对数字进行排序,然后减去数字

时间:2016-02-14 12:27:58

标签: python python-3.x

我是编程新手并且有Python问题! 我想做的是:

  1. 让用户输入一个数字(对于前4512)

  2. 从最大数字(5421)

  3. 开始对此数字进行排序
  4. 对相同的数字进行排序,但从最小的数字(1245)开始

  5. 减去两个数字(5421-1245)

  6. 打印出结果

  7. 以下是我的尝试:

    print("type in a number")
    number = (input())
    
    start_small = "".join(sorted(number))
    
    start_big = "".join(sorted(number, reverse=True))
    
    subtraction = ((start_big)-(start_small))
    print(subtraction)
    

    我收到了错误

    TypeError: unsupported operand type(s) for -: 'str' and 'str'
    

4 个答案:

答案 0 :(得分:5)

在使用它们进行算术运算之前,您忘记将数字转换为整数。将您进行减法的行更改为

subtraction = int(start_big) - int(start_small)

答案 1 :(得分:3)

试试这个

number = input('Please enter a number')

number = sorted(number, reverse=True)

number = ''.join(number)

print(int(number) - int(number[::-1]))

number[::-1]反转字符串,这是python的一个叫做切片的功能,一般来说切片的语法是 [start:stop:step]所以将前两个参数留空并填充-1作为最后一个,告诉我们按负1从最后一个元素开始到第二个到最后一个索引为{{的元素的列表。 1}}直到它到达字符串的末尾

迭代也可以被切片,因此这种技术可以用于元组和列表

这个问题有几个答案可以解释有关切片Explain Python's slice notation

的更多信息

答案 2 :(得分:2)

尝试:

print("type in a number")
number = input()

start_small = "".join(sorted(str(number)))

start_big = "".join(sorted(str(number), reverse=True))

subtraction = int(start_big)-int(start_small)
print(subtraction)

使用python 2.7。您必须使用str()int()

答案 3 :(得分:0)

如果我们不确定哪个是大值,我们可以使用 abs

num = ''.join(sorted(input()))

res = abs(int(num) - int(num[::-1]))

print(res)

给予

32
9