首页 > 解决方案 > 如何将1000变成1e3?

问题描述

我想用 0 将给定的数字转换为 'e' ex 的格式: 1000000 >> 1e6 到目前为止我使用这个

def test(number: int):
  number, zeros = str(number), 0
  for i in number:
    if i == '0': zeros += 1
  return number[0] + 'e' + str(zeros)

标签: python

解决方案


您只是在复制第一个非零数字。可以有更多。

此外,您不应计算不属于尾随零系列的零,因此请从末尾开始循环并跳出循环。

改变:

for i in number:
    if i == '0': zeros += 1
return number[0] + 'e' + str(zeros)

到:

for i in reversed(number):
    if i == '0': 
        zeros += 1
    else:
        break
if zeros:
    return number[:-zeros] + 'e' + str(zeros)
return number

如果您可以使用正则表达式,那么您可以像这样替换循环:

import re

def test(number: int):
    number = str(number)
    zeros = len(number) - re.search(r"0*$", number).start()
    if zeros:
        return number[:-zeros] + 'e' + str(zeros)
    return number

推荐阅读