python-如何反转负整数或非整数
python-How to reverse an negative integer or non-integer
我正在学习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)
以此为指导,使其也适用于浮点值:
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)
使用您的代码如何,但当 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-
为什么不只执行以下操作?:
def reverse(num):
revNum = ''
for i in `num`:
revNum = i + revNum
return revNum
print reverse(1.12345)
print reverse(-12345)
这些将打印 54321.1 和 54321-。
大声笑,我不明白否决票。我想这太简单了,不需要过于复杂的过程来获得相同的结果?是不是不管用多少都解决不了眼前的问题?
使用 SLICING 轻松搞定
def uuu(num):
if num >= 0:
return int(str(num)[::-1])
else:
return int('-{val}'.format(val = str(num)[1:][::-1]))
def reve(x):
x=str(x)
if x[0]=='-':
a=x[::-1]
return f"{x[0]}{a[:-1]}"
else:
return x[::-1]
print(reve("abc"))
print(reve(123))
print(reve(-123))
#输出
CBA
321
-321
下面的代码在 Python-3 上运行良好,并处理正整数和负整数的情况。下面的代码采用 STDIN 并在 STDOUT.
上打印输出
Note: below code handles only the integer case and doesn't handles the
non-integer case.
def reverseNumber(number):
x = 0
#Taking absolute of number for reversion logic
n = abs(number)
rev = 0
#Below logic is to reverse the integer
while(n > 0):
a = n % 10
rev = rev * 10 + a
n = n // 10
#Below case handles negative integer case
if(number < 0):
return (str(rev) + "-")
return (rev)
#Takes STDIN input from the user
number=int(input())
#Calls the reverseNumber function and prints the output to STDOUT
print(reverseNumber(number))
使用 str 转换方法。
num = 123
print(str(num)[::-1])
我正在学习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)
以此为指导,使其也适用于浮点值:
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)
使用您的代码如何,但当 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-
为什么不只执行以下操作?:
def reverse(num):
revNum = ''
for i in `num`:
revNum = i + revNum
return revNum
print reverse(1.12345)
print reverse(-12345)
这些将打印 54321.1 和 54321-。
大声笑,我不明白否决票。我想这太简单了,不需要过于复杂的过程来获得相同的结果?是不是不管用多少都解决不了眼前的问题?
使用 SLICING 轻松搞定
def uuu(num):
if num >= 0:
return int(str(num)[::-1])
else:
return int('-{val}'.format(val = str(num)[1:][::-1]))
def reve(x):
x=str(x)
if x[0]=='-':
a=x[::-1]
return f"{x[0]}{a[:-1]}"
else:
return x[::-1]
print(reve("abc"))
print(reve(123))
print(reve(-123))
#输出 CBA 321 -321
下面的代码在 Python-3 上运行良好,并处理正整数和负整数的情况。下面的代码采用 STDIN 并在 STDOUT.
上打印输出Note: below code handles only the integer case and doesn't handles the non-integer case.
def reverseNumber(number):
x = 0
#Taking absolute of number for reversion logic
n = abs(number)
rev = 0
#Below logic is to reverse the integer
while(n > 0):
a = n % 10
rev = rev * 10 + a
n = n // 10
#Below case handles negative integer case
if(number < 0):
return (str(rev) + "-")
return (rev)
#Takes STDIN input from the user
number=int(input())
#Calls the reverseNumber function and prints the output to STDOUT
print(reverseNumber(number))
使用 str 转换方法。
num = 123
print(str(num)[::-1])