[Python] 数値と数字の変換

数字→数値

組み込み関数intを使います。

https://docs.python.org/ja/3/library/functions.html#int

組み込み関数intを使わないで書いてみます。

def str_to_int(str_num):

    # 正と負で変換の開始位置が異なる。
    if str_num[0] == '-':
        start_index = 1
        is_negative = True
    else:
        start_index = 0
        is_negative = False

    int_num = 0
    for i in range(start_index, len(str_num)):
        # 桁数
        place = 10 ** (len(str_num) - (i+1))
        # ASCIIコードを用いてその桁の数字->数値へ変換
        digit = ord(str_num[i]) - ord('0')
        int_num += place * digit
    
    # 負の場合は-1を掛ける
    if is_negative:
        return -1 * int_num
    return int_num

数値→数字

組み込み関数strを使います。

https://docs.python.org/ja/3/library/functions.html#func-str

組み込み関数strを使わないで書いてみます。

def int_to_str(int_num):
    # 負の時は正の値にして扱いやすくしておく。
    if int_num < 0:
        is_negative = True
        int_num *= -1
    else:
        is_negative = False
    
    str_num = []
    while int_num > 0:
        # ASCIIコードを用いてある桁の数値を数字に変換
        str_num.append(chr(ord('0') + int_num % 10))
        # 桁を繰り上げる
        int_num //= 10
    # 小さい桁からに並んでいるので逆にする
    str_num = str_num[::-1]
    # リスト内の文字を結合する。
    str_num = ''.join(str_num)
    
    # 負の時は-をつける。
    if is_negative:
        return '-' + str_num
    return str_num