私はPythonのN桁の数字からn番目の数字を取得したいです。例えば:
number = 9876543210
i = 4
number[i] # should return 6
どうすればPythonでそのようなことができますか?最初に文字列に変更してから、計算のためにintに変更する必要がありますか?
最初に数字を文字列のように扱います
number = 9876543210
number = str(number)
次に、最初の数字を取得するには:
number[0]
4桁目:
number[3]
編集:
これは数字を数字ではなく文字として返します。それを元に戻すには:
int(number[0])
整数除算と剰余法でそれを行うことができます
def get_digit(number, n):
return number // 10**n % 10
get_digit(987654321, 0)
# 1
get_digit(987654321, 5)
# 6
//
は10の累乗で整数除算を行い、桁を1の位置に移動します。その後、%
は10で除算した後の剰余を取得します。番号の右側から始まります。
数値の大きさのブールチェックを追加することをお勧めします。高いミリ秒値を日時に変換しています。 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
を使用する必要があります。
まず、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'