2

假设我有一些值:.008、.08、.8、8、80、800。我需要一个函数,我可以在其中输入这些值并返回 .001、.01、.1、1、10、100 等。 ..

例子:

def func(v):
    a = do something using v.....
    return a

func(.009) = .001
func(.06)  = .01 
func(1234) = 1000
4

3 回答 3

5
from math import log, floor
def func(v):
   a = floor(log(v, 10))
   return 10**a
于 2013-04-04T03:06:18.163 回答
2
>>> import math
>>> 10**math.floor(math.log10(.009))
0.001
>>> 10**math.floor(math.log10(.06)) 
0.01
>>> 10**math.floor(math.log10(1234))
1000.0
>>> 
于 2013-04-04T03:06:49.860 回答
0

我不会为您编写函数,因为这可能是您应该自己做的事情,但是就伪代码而言,请执行以下操作:

def func(v):
    new str;
    length = len(v) - 1
    if v[0] == '.':
        str = '.'
        for x in range (0, length):
            if x == length - 1:
                str = str + '1'
            else:
                str = str + '0'
    else:
        str = '1';
        for x in range (0, length):
            str = str + '0'
    return str.toInteger()

基本上你找到数字的长度并将其减一。这样做的原因是因为您知道结果的第一个字符是什么。它要么是小数,要么是 1。我们检查字符串的第一个元素(如果它是数字,则将其转换为字符串)。如果第一个元素是小数,则结果将是小数,然后您使用数字的长度 - 1(即不带小数的数字长度)来计算要连接到字符串的 0 和 1 的数量。如果输入不是十进制数,那么你只有 str = '1'。然后根据它的长度添加 0 - 1(也就是减去 0)。

现在我不确定这种情况是否会出现,但如果你的数字是 20.25,那么它是一样的,除非你的第一个字符是数字而不是小数,你需要检查其余的字符串是小数。

您会注意到我在回复中说了很多字符串,因为如果它是字符串则更容易。如果它是一个数字,请将其转换为字符串,因为它更易于操作。

于 2013-04-04T03:17:45.603 回答