原題:
輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
(本題暫時不支持中文字符及漢字)
我的代碼:
#!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- # 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。 a = input("please input string:\n") space_ = 0 number_ = [] EnglishLetter = [] otherString = [] for i in a: if i == " ": #空格比較特殊,先判斷空格 space_ = space_ +1 elif ("0" <= i <= "9"): number_.append(i) elif ("a" <= i <= "z") or ("A" <= i <= "Z"): EnglishLetter.append(i) else : otherString.append(i) # "1" 和 "a" 也是可以比較的;";" 和 "a" 也是可以比較的; print(space_,number_,EnglishLetter,otherString) print(space_,len(number_),len(EnglishLetter),len(otherString))
輸出結果:

可識別“\t”
因為我用的是python自帶的IDLE,不支持輸入的字符串中帶有回車,但是如果字符中直接包含\n 或\t的,都會當做兩個字符看待; 如果手動輸入“ ” \t ,則能識別出;
原題使用的是string 庫,如下:


其實,我想了下,這題還有另外一種解法,對着ASCII表進行比對,
或直接將所有字符轉換為ASCII編碼對應的數值
或先建立一個 數字列表、字符串列表、空格列表和其他字符列表;
如果要考慮轉義字符,可以判斷字符是否為"\",如果是,則查看下一個字符在是什么;這個時候得知道Python的所有轉義字符;
總之,這題還是應該關注轉義字符的,並熟悉String庫的使用;
關於中文漢字的識別,后續再考慮吧;
————————(我是分割線)————————
參考:
1. RUNOOB.COM:https://www.runoob.com/python/python-exercise-example17.html
備注:
初次編輯時間:2019年9月30日16:24:16
環境:Windows 7 / Python 3.7.2
原題給出的解答方式:
