Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中反转负数_Python_Slice - Fatal编程技术网

在Python中反转负数

在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

在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):
    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