2 回答

TA貢獻1828條經驗 獲得超3個贊
在我看來,最好的方法是使用try/except子句嘗試將字符串轉換為float:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3 " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false
讓我們用上面的字符串生成一個列表:
l = ["0", " 0.1 ", "abc", "1 a", "2e10", " -90e3 ", " 1e", "e3",
" 6e-1", " 99e2.5 ", "53.5e93", " --6 ", "-+3", "95a54e53"]
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
list(map(is_number, l))
# [True, True, False, False, True, True, False, False, True, False,
# True, False, False, False]

TA貢獻1856條經驗 獲得超17個贊
好吧,首先,如果您不打算更改,則無需轉換s為,而您可能不會這樣做。切片在字符串上的工作方式與在列表上的工作方式幾乎相同。如果你真的想檢查是否是一個有效的 python 號碼,你可以使用str(s)ss
inp = input('input character: ')
def is_valid_num(s):
try:
float(inp)
return True
except ValueError:
return False
添加回答
舉報