2017-01-15 7 views
1

私のコードでは、整数の最後の2桁を取得したいと思います。しかし、xを正の数にすると、最初のx桁が、負の数なら最初のx桁が削除されます。最後の2桁の整数ですか? Python 3

コード:数(低効率)の最後の2桁を抽出する

number_of_numbers = 1 
num = 9 
while number_of_numbers <= 100: 
    done = False 
    num = num*10 
    num = num+1 
    while done == False: 
    num_last = int(repr(num)[x]) 
    if num_last%14 == 0: 
     number_of_numbers = number_of_numbers + 1 
     done = True 
    else: 
     num = num + 1 
print(num) 
+1

ジャスト 'ABS(数値)%100'を行います。 –

答えて

3

簡単な方法は、strに番号を変換し、番号の下2桁をスライスすることです。たとえば:

# sample function 
def get_last_digits(num, last_digits_count=2): 
    return int(str(num)[-last_digits_count:]) 
    #  ^convert the number back to `int` 

をOR、あなたは(、もっと知ってHow does % work in Python?をチェックしてください)剰余%オペレータ(より効率的な)を、使用を経由して、それを達成することができるよう:

def get_last_digits(num, last_digits_count=2): 
    return abs(num) % (10**last_digits_count) 
    #  ^perform `%` on absolute value to cover `-`ive numbers 

サンプル実行:

>>> get_last_digits(95432) 
32 
>>> get_last_digits(2) 
2 
>>> get_last_digits(34644, last_digits_count=4) 
4644 
+1

変換操作が高価です。もっと簡単な方法があれば、なぜこれをしたいのですか? –

+0

@ Shiva:私は、変換があまり効率的ではないことを明示しました。 Converisonは*実装するのが簡単です*(少なくとも私のように*) –

11

なぜ数値モジュラス100の絶対値を抽出しないのですか?つまり、最後の2桁を抽出するには

abs(num) % 100 

を使用してください。

パフォーマンスと明快さの面では、この方法は苦労します。

0

私は1行の簡単なハック使用するnumの最後の2桁を取得するには:これは、文字列を与えるだろう

str(num)[-2:] 

を。 ちょうどint型でラップし、int型を取得するには:

int(str(num)[-2:]) 
関連する問題