最近在寫乙個程式設計客棧專案的時候發現了個很神奇的問題
temp_list=['9','10','10','9','10']
print(max(temp_list)) # 9
print(min(temp_list)) # 10
最大值變成了9,而最小值變成了10。導致我在乙個ex程式設計客棧cel表中的資料老是判斷錯誤
分析之後原因如下:
如果比較字串的大小,則比較的是字元的ascii編碼的大小。
在比較時,設定乙個計數器,從零開始,一直迴圈到最短的那個字元結束,一位一位進行比較,
1.如果 字串1的第n位的ascii碼值 等於 字串2的第n位的ascii碼值
則 繼續比較下一位
2.如果 字串1的第n位的ascii碼值 大於 字串2的第n位的ascii碼值
則 輸出結果:1,表示字串1 &程式設計客棧gt; 字串2;
3.如果 字串1的第n位的ascii碼值 小於 字串2的第n位的ascii碼值
則 輸出結果:-1 表示字串1 < 字串2;
4.如果 每一位的ascii碼值都相等,而且長度相同,
則 輸出結果:0 表示字串1 == 字串2;
5.如果 字串1是字串2的前m位,例如 abcd 與abcdef 比較,
則 字串1字串2.
原因是,到第5位時,字串1的ascii值是0,而字串2的ascii值為'e',即十進位制的101mwsonyllr,當然是字串2大了.
這邊的話,相當於是9跟1作比較,固然最後得出來的字串『9』大於『10』
比較好的辦法就是寫個函式,把字串轉換成int型
def stringtoint(temp_list):
tt_list=
for i in temp_list:
tt_list.append(float(i))
return tt_list
字串的問題雖然簡單,但是很容易出錯,另外,python中做判斷的時候一定要注意資料型別
python String操作總結
def split self,sep none maxsplit none 按照指定字元切割字串,返回乙個列表,可以指定切割次數 defstrip self,chars none 去空格,去掉字串兩邊的空格 defupper self 轉換為大寫 deflower self 轉換為小寫 defrep...
Python String型別詳解
在python中,string是代表unicode字元的位元組陣列。但是在python中沒有單個的字元資料型別,a 這種只是長度為1的string 1.建立string 在python中建立字串可以用單引號,雙引號甚至是三引號。a ada b dsfsg c dasfdf a ada b dsfsg...
Python string常用函式
2017 07 03 23 26 08 1 replace self,old,new,count 1 replace 函式將舊字串替換為新字串,最後乙個引數count為可選項,表示替換最多count次 小於count 注意這種替換返回替換後的字串,源字串是不改變的。s abcdef out s.re...