我是编程新手并且有Python问题! 我想做的是:
让用户输入一个数字(对于前4512)
从最大数字(5421)
对相同的数字进行排序,但从最小的数字(1245)开始
减去两个数字(5421-1245)
打印出结果
以下是我的尝试:
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'
答案 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