web-dev-qa-db-ja.com

pythonの数値のn桁目を取得する方法

私はPythonのN桁の数字からn番目の数字を取得したいです。例えば:

number = 9876543210
i = 4
number[i] # should return 6

どうすればPythonでそのようなことができますか?最初に文字列に変更してから、計算のためにintに変更する必要がありますか?

21
zakaria musa

最初に数字を文字列のように扱います

number = 9876543210
number = str(number)

次に、最初の数字を取得するには:

number[0]

4桁目:

number[3]

編集:

これは数字を数字ではなく文字として返します。それを元に戻すには:

int(number[0])
20
Patrick Haugh

整数除算と剰余法でそれを行うことができます

def get_digit(number, n):
    return number // 10**n % 10

get_digit(987654321, 0)
# 1

get_digit(987654321, 5)
# 6

//は10の累乗で整数除算を行い、桁を1の位置に移動します。その後、%は10で除算した後の剰余を取得します。番号の右側から始まります。

42
Chris Mueller

数値の大きさのブールチェックを追加することをお勧めします。高いミリ秒値を日時に変換しています。 2〜200,000,200の数字があるので、0は有効な出力です。 @Chris Muellerの関数は、数値が10 ** nより小さい場合でも0を返します。

def get_digit(number, n):
    return number // 10**n % 10

get_digit(4231, 5)
# 0

def get_digit(number, n):
    if number - 10**n < 0:
        return False
    return number // 10**n % 10

get_digit(4321, 5)
# False

この戻り値のブール状態をチェックするときは注意する必要があります。有効な戻り値として0を許可するには、if get_digit:だけを使用することはできません。 if get_digit is False:が偽の値として動作しないようにするには、0を使用する必要があります。

1
Nathan Pyle

まず、pythonのstr()関数を使用して、 'number'を文字列に変換します

number = 9876543210 #declaring and assigning
number = str(number) #converting

次に、インデックスを取得します。インデックス表記で0 = 1、4 = 3、int()を使用して数値に戻します

print(int(number[3])) #printing the int format of the string "number"'s index of 3 or '6'

短い形式で気に入ったら

print(int(str(9876543210)[3])) #condensed code lol, also no more variable 'number'
0
GeekOverdose