#43742: 請問以下 Python 解法3中,用.isdigit()來判斷input 值為-5 時,為何仍可判斷為int ? (依照定義,應該對負數 及浮點數 呈現 false)


johnnytsai713@gmail.com (Tsai Johnny)

學校 : 不指定學校
編號 : 288516
來源 : [101.0.232.114]
最後登入時間 :
2024-10-07 08:37:27
. Unfinished! | From: [101.0.232.114] | 發表日期 : 2024-10-27 14:27

程式目的:判斷輸入值為整數 或 浮點數 或 字串

自己寫了3種解法,但是第3種解法中,使用chatGBT 檢查,一直提醒 "-5"代入 會是判斷為float的錯誤,但是我自己執行後,結果一直判斷為int 正確

(環境 IDE Spyder+ Python 3.12.4)

請各位指教 

#Johnny解法1
def johnny(value):
    try:
        x=float(value)
        if x.is_integer():
            return "int"
        else:
            return "float"
    except ValueError:
        return "str"

value=input("Please input :")
print(johnny(value))


#Johnny解法2
def johnnysuper(value):
    try:
        int(value)
        return "int"
    except ValueError:
        pass
    try:
        float(value)
        return "float"
    except ValueError:
        return "str"
    
value=input("Please input :")
print(johnnysuper(value))

#Johnny解法3
def johnnysuper(value):
    try:
        value.isdigit()==True
        return "int"
    except ValueError:
        pass
    try:
        float(value)
        return "float"
    except ValueError:
        return "str"
    
value=input("Please input :")
print(johnnysuper(value))

 
ZeroJudge Forum