Python 如何将1000转为1e3?

Python 如何将1000转为1e3?,python,Python,我想将一个0的给定数字转换为e格式,例如:1000000>>1e6。到目前为止,我使用这个 def测试(编号:int): 数字,零=str(数字),0 就我而言,数字如下: 如果i='0':0+=1 返回编号[0]+'e'+str(零) 您只复制第一个非零数字。可能会有更多 此外,您不应该计算不属于尾随零序列的零,因此从末尾开始循环并中断循环 更改: for i in number: if i == '0': zeros += 1 return number[0] + 'e' + str

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

def测试(编号:int): 数字,零=str(数字),0 就我而言,数字如下: 如果i='0':0+=1 返回编号[0]+'e'+str(零)
您只复制第一个非零数字。可能会有更多

此外,您不应该计算不属于尾随零序列的零,因此从末尾开始循环并中断循环

更改:

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

如果您同意使用正则表达式,则可以如下所示替换循环:

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

您可以通过迭代字符串化的数字来实现这一点。下面的代码从字符串化数字的结尾到开头进行迭代,并计算零的数量。
然后它将其转换为您想要的形式。它也适用于234000这样的数字

def测试(编号:int): 零=0 对于str中的i(number)[:-1]: 印刷品(一) 如果i=='0': 零+=1 其他: 打破 返回str(number)[:-(零)]+'e'+str(零)
您面临的问题是什么?对我来说很好
返回f{i:e}”
呃有点矛盾,因为1e3等于1000,作为一个数值,有same@AdityaSinghRathore根据此逻辑,对于给定问题
返回“1e6”
就足够了。当1000000被转换时,它返回10000e1假设您的字符串表示形式是
S
。你要做的是从你的数字的字符串表示的左边开始,找到第一个非零数字,称它为
a
。调用字符串
S[1://code>
b
,查找其长度。呼叫是
n
。从
b
中删除所有尾随的零,称之为
c
。您的最终答案将是
(a.c)e(n)
。如果
c
的长度为零,那么它将是
(a)e(n)
@Yas-i-ru,您是否在我的答案的最后一个版本中运行了代码?@adityasinghratore,这确实是小数点前一位的科学符号。我倾向于把尾数保持为整数。在这种情况下,OP不清楚他们需要什么。当没有尾随零时,这会很奇怪。
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