【问题标题】:Better way to remove trailing zeros from an integer从整数中删除尾随零的更好方法
【发布时间】:2019-03-25 06:27:44
【问题描述】:

我是一个没有经验的程序员。对于我在 python 中设置的项目,我正在尝试从整数(整数)中删除尾随零。

我已经做到了,但肯定有比我炮制的怪物更好的方法!

def removeZeros(number):
    return int(str(int(str(number)[::-1]))[::-1])

本质上,我将整数转换为字符串,反转字符串,将其转换回整数 --- 这会删除现在的前导零,将其转换回字符串并反转它;最后将其转回整数返回。

任何帮助将不胜感激。

【问题讨论】:

  • 您可能想了解浮点数和整数之间的区别,这可能会帮助您找到正确的方向。
  • int(str(number).strip("0")) 呢?
  • 您确定要从integer 中删除尾随零吗?不浮动?
  • @guidot 就是这样,谢谢。

标签: python int


【解决方案1】:

只需使用str.rstrip():

def remove_zeros(number):
    return int(str(number).rstrip('0'))

您也可以不将数字转换为字符串,这应该会稍微快一些:

def remove_zeros(number):
    while number % 10 == 0:
        number //= 10
    return number

【讨论】:

  • 你能解释一下你的第二个例子中发生了什么吗?
  • @sylph 虽然数字的最后一位数字是 0(使用 % 运算符检查),但我们通过将数字除以 10 来丢弃它。
  • 谢谢,我刚刚解决了。我一直忘记你可以使用x //= 10 而不是x = x / 10。需要多学习!顺便说一句,非常优雅的解决方案,非常适合我的需要,谢谢。
  • 只是一个关于@EugeneYarmash 评论的简短说明:运营商% 不会检查数字的最后一位数字是什么。它只是计算除法的余数,即。 13 % 10 给你3 因为13 / 10 = 1 remainder 3。只是以 10 为底,如果一个数字可以被 10 整除,那么它以 0 结尾。
猜你喜欢
  • 2012-07-01
  • 2012-07-02
  • 1970-01-01
  • 2011-05-30
  • 2020-08-09
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
相关资源
最近更新 更多