如何在python中转换数字?
我有什么问题?我想要一个倒数——例如:123==>321如何在python中转换数字?,python,Python,我有什么问题?我想要一个倒数——例如:123==>321 def loop(a): i=0 while(a>=1) print(a%10) s=s/10 i=i+1 正确缩进很重要。(不要将制表符和空格混在一起。) 在while条件之后,您还缺少一个冒号。正确缩进很重要。(不要将制表符和空格混在一起。) 在while条件之后,您还缺少一个冒号。除了缩进和缺少冒号之外,您的解决方案还有一些问题 首先,您使用的是print,它会自动添加换行
def loop(a):
i=0
while(a>=1)
print(a%10)
s=s/10
i=i+1
正确缩进很重要。(不要将制表符和空格混在一起。)
在
while
条件之后,您还缺少一个冒号。正确缩进很重要。(不要将制表符和空格混在一起。)
在
while
条件之后,您还缺少一个冒号。除了缩进和缺少冒号之外,您的解决方案还有一些问题
首先,您使用的是print
,它会自动添加换行符,因此这可能不是您想要的结果。您可以将结果存储在一个字符串中,将最新字符附加到该字符串中,然后在末尾打印一次
此外,您正在使用一个以前从未使用过的变量s
。在这种情况下,它应该是a
,因为您想用整数除以10去掉最后一个数字。请注意,在这种情况下,这只会像Python 2中那样工作,因为Python 3将在那里使用浮点除法(例如15/10==1.5
)。您可以通过在此处显式使用整数除法(这也将使您的意图更加明确):s=s//10
(注意两个斜线)
最后,您将递增变量i
,而不使用它,因此您可以将其去掉
最后,它可能是这样的:
def reverse (a):
rev = ''
while a > 1:
rev += str(a % 10)
a = a // 10
一个较短的解决方案,利用您可以反转字符串的事实:
>>> num = 123
>>> rev = int(str(num)[::-1])
>>> rev
321
如果省略int()
,您甚至可以保留尾随/前导零,并获得一个字符串:
>>> num = 3210
>>> str(num)[::-1]
'0123'
除了缩进和缺少冒号之外,您的解决方案还有一些问题 首先,您使用的是
print
,它会自动添加换行符,因此这可能不是您想要的结果。您可以将结果存储在一个字符串中,将最新字符附加到该字符串中,然后在末尾打印一次
此外,您正在使用一个以前从未使用过的变量s
。在这种情况下,它应该是a
,因为您想用整数除以10去掉最后一个数字。请注意,在这种情况下,这只会像Python 2中那样工作,因为Python 3将在那里使用浮点除法(例如15/10==1.5
)。您可以通过在此处显式使用整数除法(这也将使您的意图更加明确):s=s//10
(注意两个斜线)
最后,您将递增变量i
,而不使用它,因此您可以将其去掉
最后,它可能是这样的:
def reverse (a):
rev = ''
while a > 1:
rev += str(a % 10)
a = a // 10
一个较短的解决方案,利用您可以反转字符串的事实:
>>> num = 123
>>> rev = int(str(num)[::-1])
>>> rev
321
如果省略int()
,您甚至可以保留尾随/前导零,并获得一个字符串:
>>> num = 3210
>>> str(num)[::-1]
'0123'
几个问题:
- 您的缩进不匹配。建议使用4个空格进行缩进
- 当(a>=1)
- 虽然这不是问题,但您不需要while循环中的括号,它可以是
,而a>=1
可能不会返回您期望的结果。例如,s=s/10
(除非您在这里处理浮点数)12/10==1
这一切都可以通过切片简化:
>>> print int(str(123)[::-1])
321
几个问题:
- 您的缩进不匹配。建议使用4个空格进行缩进
- 当(a>=1)
- 虽然这不是问题,但您不需要while循环中的括号,它可以是
,而a>=1
可能不会返回您期望的结果。例如,s=s/10
(除非您在这里处理浮点数)12/10==1
这一切都可以通过切片简化:
>>> print int(str(123)[::-1])
321
实际上s/10
(Python 2中的整数除法;或者Python 3中的s//10
)将是OP想要的,除了它应该是a
,而不是s
。实际上s/10
(Python 2中的整数除法;或者Python 3中的s//10
)将是OP想要的,除了它应该是a
,不是s
。