在Python中反转负数
在Python中使用slice方法,我们能够轻松地反转字符串和数字。然而,当数字为负数时,怎么能这样做呢在Python中反转负数,python,slice,Python,Slice,在Python中使用slice方法,我们能够轻松地反转字符串和数字。然而,当数字为负数时,怎么能这样做呢 def reverse(x): string = str(x) return int(string[::-1]) print(reverse(-123)) 返回321时给出一个错误- 编辑: 现在让我们再做两个假设: 如果反向编号不在[−2^31, 2^31 − 1] 它 应该返回0 对于像120这样的数字,它应该返回21作为其反面 现在,我们如何将-120反转为-21
def reverse(x):
string = str(x)
return int(string[::-1])
print(reverse(-123))
返回321时给出一个错误-
编辑:
现在让我们再做两个假设:
如果反向编号不在[−2^31, 2^31 − 1] 它
应该返回0
对于像120这样的数字,它应该返回21作为其反面
现在,我们如何将-120反转为-21?
你可以检查,如果你的数字是负数,那么在输出后面加上。您将获得预期的输出。
因此,您的代码如下所示:
def reverse(x):
y = ""
if int(x) <= -1:y="-";x = int(x)*-1
output = int(y+str(x)[::-1])
if output >= -2**31 and output <= 2**31 - 1:return output
else: return 0
print(reverse(-123))
它也非常简单易懂。
你可以检查,如果你的数字是负数,那么在输出后面加上。您将获得预期的输出。
因此,您的代码如下所示:
def reverse(x):
y = ""
if int(x) <= -1:y="-";x = int(x)*-1
output = int(y+str(x)[::-1])
if output >= -2**31 and output <= 2**31 - 1:return output
else: return 0
print(reverse(-123))
它也非常简单易懂。如果您想保留该标志,请尝试以下操作:
def reverse(x):
ans = int(str(x)[::-1]) if x >= 0 else -int(str(-x)[::-1])
return ans if -2**31 <= ans <= 2**31 - 1 else 0
假设要保留该标志,请尝试以下操作:
def reverse(x):
ans = int(str(x)[::-1]) if x >= 0 else -int(str(-x)[::-1])
return ans if -2**31 <= ans <= 2**31 - 1 else 0
我发布了未包装的简化代码,以便更容易理解答案:
def int_reverser(test):
if test >= 0:
answer = int(str(test)[::-1])
else:
answer = -int(str(-test)[::-1])
if -2**31 <= answer <= 2**31 - 1:
return answer
else:
return 0
为了便于理解,我发布了简化的代码:
def int_reverser(test):
if test >= 0:
answer = int(str(test)[::-1])
else:
answer = -int(str(-test)[::-1])
if -2**31 <= answer <= 2**31 - 1:
return answer
else:
return 0
那么反-12应该返回21还是-21呢?@Aran Fey应该是-21,因为它是-12的反方向。反-12应该返回21还是-21呢?@Aran Fey应该是-21,因为它是-12的反方向。现在这适用于负数,而不适用于正数。@ÓscarLópez现在检查一下。现在它正在删除符号,我认为这不是正确的行为。请检查我的答案。@ÓscarLópez我想他期望321,即移除标志。我没有。请原谅我,我忘了把预期的输出弄清楚。现在这对负数有效,对正数无效。@ÓscarLópez现在检查一下。现在它正在删除符号,我认为这不是正确的行为。请检查我的答案。@ÓscarLópez我想他期望321,即移除标志。我没有。请原谅,我忘了清楚说明预期的输出。如果x>0,则可以选择-1,而不是1,否则-1,也可以选择x>0或-1,但这只是品味的问题。@palivek我喜欢你的答案较短,但我会坚持我的方法。你的观点有点老套,滥用了“真”可以解释为1的事实:。你怎么能说他期望-321?这是我的假设似乎是最符合逻辑的,我在一开始就澄清了这一点。你的假设确实是正确的。如果我们有-120呢?如果x>0,则应将其反转为-21,而不是1,否则-1您也可以选择x>0或-1,但这只是口味的问题。@palivek我喜欢您的答案较短,但我会坚持我的方法。你的观点有点老套,滥用了“真”可以解释为1的事实:。你怎么能说他期望-321?这是我的假设似乎是最符合逻辑的,我在一开始就澄清了这一点。你的假设确实是正确的。如果我们有-120呢?应将其反转为-21