2

base9には「0」の数字がないことに注意して、base9で数値を同等の数値に変換するにはどうすればよいですか。

例:
Base10 = 0, 1, 2, 3, .. 9, 10, 12 ... 28, 29, 30, ... 62, 63, 64, etc
Base9 = N/A, 1, 2, 3 , .. 9, 11, 12 ... 31, 32, 33, ... 68, 69, 71, など

通常の 10 進数 (例: 10) を取り、0 の位 (例: 11) を無視して base9 で返すことができるようにしたいと考えています。

私は数学に関する限り知識が不足していることは言うまでもなく、Pythonとプログラミング全般に不慣れであるため、最初の試みはかなりずさんです。それはより小さな数でのみ機能し、これを行うためのはるかに簡単な方法があると感じています.

def base9(x):
    count = 0
    a = xrange(10,100,9)
    while count != x:
        if x < a[count]:
            return x + count
        count += 1


print base9(10)
4

4 に答える 4

0

たとえば、0 は 0 です。10 は 1*9 + 0*1 = 9 です。ただし、9 を使用することはできません。各桁は、合計する 9 の累乗の何ロットかを示します。
途中で負の数を取得するかどうかを確認する必要があります。
入力ごとに、9 で割って余りを確認し続けます。

def base9(x):
    sign = 1
    if x < 0:
    sign = -1
    x *= -1
    result = 0
    index = 0
    while x > 0:
        result += (x%9) * 10**index
        x /= 9
        index += 1
    return result*sign
于 2013-09-02T12:11:41.090 に答える