1. 程式人生 > >python3-實現atoi()函式

python3-實現atoi()函式

0.摘要

本文介紹c語言中的atoi函式功能,並使用python3實現。

 

1.atoi()函式

atoi (表示 ascii to integer)是把字串轉換成整型數的一個函式。

函式定義形式:int atoi(const char *nptr);

函式會掃描引數 nptr字串,跳過前面的空白字元(例如空格,tab縮排),直到遇上數字或正負符號才開始做轉換;

在遇到非數字或字串結束符('\0')結束轉換,並將結果返回;

如果 nptr不能轉換成 int 或者 nptr為空字串,那麼將返回 0 

 

2.python3程式碼

程式碼要解決三個主要問題:

  1. 字串前有空白字元;
  2. ‘+’,‘-’ 處理問題;
  3. 浮點數問題;

首先,python的中的int()函式和float()函式功能可以說是非常強大,已經考慮了空白字元、正負號等問題

s0 = "123.456"
s1 = "+123.456    "
s2 = "    -123.456"
s3 = "    -123    "

print(float(s0))
print(float(s1))
print(int(float(s2)))
print(int(s3))

def my_atoi(num_string):
    if num_string == '':
        return 0
    else:
        try:
            f = float(num_string)
            i = int(f)
        except:
            return 0
        else:
            return i

if __name__ == '__main__':
    s0 = "123"
    s1 = "   -123.456    "
    s2 = "   +123.       "
    s3 = '  -123..456   '
    s4 = '  ++123.456   '
    s5 = '   0x123.45   '
    s6 = '    '

    print(my_atoi(s0))
    print(my_atoi(s1))
    print(my_atoi(s2))
    print(my_atoi(s3))
    print(my_atoi(s4))
    print(my_atoi(s5))
    print(my_atoi(s6))