python學習之路之int()奇怪的報錯

來源:互聯網
上載者:User

標籤:with   模組   x64   ack   作用   字串類   使用者   call   char   

今天閑來無事看了下python基礎知識,當學到資料類型轉換的int()方法時候。發現了這麼一個有意思的事情,算是IDE或是解譯器的一個小BUG。(具體原因暫不明,留待以後尋找問題)

先講下環境

  • 作業系統:    windows10
  • python版本:3.6.5
  • IDE環境:     pycharm edu 2018.1 x64
  • 解譯器:       CPython

然後 int()方法的作用

函數 說明
int(x[,base]) j將x轉換為一個整數

 

閑話少說上代碼:

情況1:

# -*- coding:utf-8 -*->>>age=input()>>>print(int(age))15

輸出正常

 

情況2:

# -*- coding:utf-8 -*->>>print(int(15.6))15                  #使用int()轉換的時候,會強制省略小數點後面的數字

輸出正常

 

情況3:

# -*- coding:utf-8 -*-age = input("請輸入年齡:")if int(age)>=18:    print("恭喜你已經成年了")else:    print("你還需要在成長")

如果使用者輸入的是正常的不帶小數點的整數字串,那麼轉換輸出沒有問題。

當使用者輸入浮點型字串後,開始資料類型轉換時,出現了這麼奇怪的報錯:

# -*- coding:utf-8 -*-age = input("請輸入年齡:")if int(age)>=18:      #這裡的age是字串類型,但是在條件運算式中是作為數字對待的    print("恭喜你已經成年了")else:    print("你還需要在成長")#執行以上參數後,輸入值15.6,出現以下報錯(不光是輸入帶小數點的數字字串,只要是非整數以外的字元,均會報錯)Traceback (most recent call last):  File "C:/pythonstudy/startpython/day1.py", line 6, in <module>    if int(age)>=18:ValueError: invalid literal for int() with base 10: ‘15.6‘     #值錯誤:int()以10為底的無效文字:‘15.6‘

可是情況1輸入小數點的數字轉換的時候是沒有問題的。問題出在哪呢?

 

通過百度找到瞭解決方法

# # -*- coding:utf-8 -*-import re #引入正則模組age = input("請輸入年齡:")totalCount = re.sub("\D", "", age)         #使用正則的sub方法過濾掉輸入的字串中age帶的非數字字元和空的值。if int(totalCount)>=18:    print("恭喜你已經成年了")else:    print("你還需要在成長")

當輸入帶有小數點的字串的時候,不會再出現值錯誤的報錯。(但是亂輸入非數字記號還是會報錯)。但是列印totalConunt,你會發現這種方式不光去掉了字串age中帶的非數字字元和空值,連小數點就去掉了。

 

但是通過如下代碼:

# -*- coding:utf-8 -*-age = int(float(input("請輸入年齡:")))if int(age)>=18:    print("恭喜你已經成年了")else:    print("你還需要在成長")

你會發現輸入小數點又可以了。又不會報錯了。

初步推測,int()函數能轉換純整數數位字串,不帶小數點的(帶小數點就會報錯。int(方法應該是認為小數點不屬於純整數範疇))。float()能轉換純整數數字字串或帶小數點的純浮點數字串。

 

python學習之路之int()奇怪的報錯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.