from tkinter import Tk, Entry
root = Tk()
entry = Entry(root)
entry.get() 必為str type
如何判斷該str內容是否為數字?
isinstance( eval( entry.get() ), (float, int) )
使用 eval(entry) 并不是一个好的选择,因为它会尝试将输入的字符串作为 Python 代码进行求值,可能会存在潜在的安全隐患。此外,对于不合法的输入(比如字母),eval(entry) 将会引发 SyntaxError 异常,而使用 float() 函数则可以更好地处理这种情况。因此,推荐使用 float(entry.get()) 来将用户输入的字符串转换为浮点数。
isinstance:
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230512152430_3.png)
isinstance( eval( entry.get() ), (float, int) )
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230512155346_35.png)
str.isdigit():
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230512152441_78.png)
isdigit() 是判断字符串是否全是数字字符,不包括小數點和負號,因此在这个场景下不是特别适用。如果要使用 isdigit(),需要先把 - 和 . 剔除,然后再判断是否全是数字字符。但是使用 float() 函数转换浮点数更加直观。如果转换失败,说明输入的不是数字,可以通过捕获 ValueError 异常来判断。
isdigit() 是 Python 字符串方法之一,只能用于判断字符串中是否全部为 0~9 的数字字符,不能判断是否为浮点数或负数。这是因为在 Python 中,浮点数和负数都包含了小数点和负号这些特殊字符,因此它们不是纯粹的数字字符,而 isdigit() 只能判断字符是否都是数字字符,不能判断是否包含这些特殊字符。要判断字符串是否为浮点数或负数,可以使用其他方法,例如使用 Python 的内置函数 float() 和 int() 进行转换,如果转换成功则说明是合法的浮点数或整数。或者使用正则表达式进行匹配,判断字符串是否符合特定的模式。
try~ except~
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230512153654_94.png)
matplotlib的xmin, xmax,
ymin, ymax, fontsize可以為數字
也可以為None (預設, 自動)
以上兩個函式可以合併成一個
def get_entry_value(entry):
try:
value = float( entry.get() )
return value
except ValueError:
return None
float("None") 會觸發ValueError:
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230513175439_55.png)
正則表示法
pattern = r’^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$’
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230513183125_36.png)
結果:
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230513183148_75.png)
False:
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230513191935_79.png)
该函数使用了正则表达式
‘^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$’
来匹配数字,
该正则表达式的含义如下:
^ 匹配字符串的开头
[-+]? 匹配一个可选的正负号
[0-9]* 匹配零个或多个数字
\.? 匹配一个可选的小数点
[0-9]+ 匹配一个或多个数字
([eE][-+]?[0-9]+)? 匹配一个可选的指数表示,
其中 ([eE] 表示匹配 e 或 E ,
[-+]? 匹配一个可选的正负号,
[0-9]+ 匹配一个或多个数字
$ 匹配字符串的结尾
在正則表示法中,
* 表示重複零次或多次(0次以上),
+表示一次或多次(1次以上)
而 ? 表示重複零次或一次(0或1次)。
re.match():
![Python: 如何判斷字符串內容是否為數字(整數或浮點數)? isinstance( eval( entry.get() ), (float, int) ) ; str.isdigit() #不包括小數點和負號 ; try~ except ValueError~ ; 正則表示法 regular expression ; pattern = '^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$' - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/05/20230513190605_30.png)
推薦hahow線上學習python: https://igrape.net/30afN


![Python: list.index() 只能找到第一個元素的index,若元素有重複,如何找出所有index? indexes = [index for index, value in enumerate(my_list) if value == target] Python: list.index() 只能找到第一個元素的index,若元素有重複,如何找出所有index? indexes = [index for index, value in enumerate(my_list) if value == target]](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2024/10/20241010101216_0_12b6c0.png?quality=90&zoom=2&ssl=1&resize=350%2C233)

![使用 Python 檢驗字符串格式:掌握正則表達式(Regular Expression)的起始^與終止$符號, pattern = r’^GATR[0-9]{4}$’ 使用 Python 檢驗字符串格式:掌握正則表達式(Regular Expression)的起始^與終止$符號, pattern = r’^GATR[0-9]{4}$’](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2024/07/20240712093637_0.png?quality=90&zoom=2&ssl=1&resize=350%2C233)





近期留言