2015-04-28 48 views
2

我正在学习python,并遇到一些麻烦。python如何反转一个负整数或非整数

我想编写脚本来反转负整数“-1234到4321-”和非整数“1.234到432.1”。请帮帮我。 P.S.不能使用“STR()”函数

我只能写剧本扭转正整数1234至4321

def reverse_int(n): 

    x = 0 
    while n > 0: 
     x *= 10 
     x += n % 10 
     n /= 10 
    return x 
print reverse_int(1234) 
+2

'4321-'不是一个有效的数字!你想将它转换为字符串吗? – Kasramvd

+3

4321-不是有效整数。你打算如何将其表示为除字符串之外的任何其他内容? – ballsatballsdotballs

+4

他只是说他不能使用函数'str()',而不是他不能使用字符串。因此,'def reverse_int(n):return'{}'.format(n)[:: - 1]'应该可以工作。 – Hyperboreus

回答

1

如何使用您的代码,但只是连接-n是负面的?

rev_int.py:

def reverse_int(m): 
    x = 0 
    n = m 
    if m < 0 : 
     n *= -1 
    while n > 0 : 
     x *= 10 
     x += n % 10 
     n /= 10 
    if m < 0: 
     #concatenate a - sign at the end 
     return `x` + "-" 
    return x 

print reverse_int(1234) 
print reverse_int(-1234) 

这将产生:

$ python rev_int.py 
4321 
4321- 
+0

好像是个好主意! – GregMaddux

+0

如何在'return \'x \'+“ - ”'处连接一个带整数的字符串? – TigerhawkT3

+0

我无法让这段代码在Skulpt或我的Python 3中正常工作(将'print'改为函数,'/ ='改成'// =')。 – TigerhawkT3

0

以此为指导,使其浮点值以及工作:

import math 

def reverse_int(n): 
    if abs(n) < 10: 
     v = chr(abs(n) + ord('0')) 
     if n < 0: v += '-' 
     return v 
    else: 
     x = abs(n) % 10 
     if n < 0: return chr(x + ord('0')) + reverse_int(math.ceil(n/10)) 
     else: return chr(x + ord('0')) + reverse_int(math.floor(n/10)) 

print reverse_int(1234) 
+0

输出是40无论是1234或-1234 @@ – GregMaddux

+0

@GregMaddux好吧现在试试吧 – smac89

-3

为什么不只是做以下?:

def reverse(num): 
    revNum = '' 
    for i in `num`: 
     revNum = i + revNum 
    return revNum 

print reverse(1.12345) 
print reverse(-12345) 

这些将打印54321.1和54321-。

大声笑,我不明白倒票..我想这太简单了,并不需要通过复杂的过程来获得相同的结果?这是否无法解决手头的问题,无论使用的是多少?

+0

如果你想要简单,你可以精确地复制我的'return \'m [' - - 1]'注释,而不是添加一个循环。当然,我不认为'repr()'(Python 2中的'''''''repr()'会做的更好,因为它在2和3中工作)比' STR()'。 – TigerhawkT3

+0

正如你写的,你的脚本为1.12345生成1000000000054321.1。 –