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 引きます。これは、結果の最初の文字が何であるかを知っているためです。10 進数または 1 のいずれかです。文字列の最初の要素をチェックします (数値の場合は、文字列に変換します)。最初の要素が 10 進数の場合、結果は 10 進数になり、数値の長さ - 1 (別名、10 進数を除いた数値の長さ) を使用して、文字列に連結する 0 と 1 の数を計算します。入力が 10 進数でない場合は、str = '1' になります。次に、その長さに応じて 0 を追加します - 1 (つまり、0 を減算します)。

状況があなたに当てはまるかどうかはわかりませんが、あなたの数字が20.25のような場合、最初の文字が数字であり小数ではない場合を除いて同じです。残りの文字列は 10 進数です。

文字列の方が簡単なので、応答で文字列とよく言っていることに気付くでしょう。数値の場合は、操作が簡単なため文字列に変換します。

于 2013-04-04T03:17:45.603 に答える