python實(shí)現(xiàn)字符串中字符分類(lèi)及個(gè)數(shù)統(tǒng)計(jì)
輸入一個(gè)字符串,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù),本文給出解決方法
編寫(xiě)思路:
1、字符串的遍歷,和列表類(lèi)似,可以把字符串當(dāng)做元素都是一個(gè)字符的一個(gè)字符列表,它可以和列表有公共的語(yǔ)法
2、分不同的類(lèi)別,若有符合條件的字符直接在類(lèi)別數(shù)上加1就可以
初始代碼:
# -*- coding:utf-8 -*- letter=0 number=0 space=0 symbol=0 print "請(qǐng)輸入字符串:" s=raw_input() for char in s: if char>'a' and char<'z' or char>'A' and char<'Z': letter+=1 elif 0<=char<=9: number+=1 elif char==[' ',' ']: space+=1 else: symbol+=1 print "字母數(shù)量,數(shù)字?jǐn)?shù)量,空格數(shù)量,其他字符數(shù)量分別為:" print letter,number,space,symbol
錯(cuò)誤之處:
1、if char>='a' and char=<'z' or char>='A' and char=<'Z':可以寫(xiě)成if 'a'<=char<='z' or 'A'<=char<='Z':更加簡(jiǎn)潔;
2、elif 0<=char<=9:也應(yīng)該是'0'<=char<='9',字符(字符串)必須加引號(hào)‘ 'or ” “,但舉例如下:
print '0'<='2ab'<='9'1
運(yùn)行結(jié)果輸出的是True
- - -在Python中沒(méi)有“字符”的概念,哪怕是char都是一個(gè)字符串,Python對(duì)于字符串不會(huì)敏感分析是不是只有一個(gè)字符,而是都可以進(jìn)行判斷。
- - -上述例子的‘2ab'并不是一個(gè)數(shù)字,而是一個(gè)字符串,在本題中雖然沒(méi)有問(wèn)題,因?yàn)橐呀?jīng)取出單個(gè)字符串了。但是很多情況對(duì)字符串的判斷需求非常嚴(yán)格,所以要嚴(yán)格判斷它確實(shí)是一個(gè)字符串,使用isdigit
- - -isdigit()方法,可以判斷一個(gè)字符串是不是數(shù)字,即如果一個(gè)字符串里的所有字符都是數(shù)字,它才是True,否則是False
3、elif char==[' ',' ']:應(yīng)該是elif char in [' ',' ']:
[ ]是列表,所以應(yīng)用in。in不僅可以用在列表,元組,字典都能用;用在元組跟列表是一樣的意思;用在字典里,意思是有沒(méi)有這個(gè)鍵
4、elif雖然與else if用法相同,但是不能直接寫(xiě)成else if,因?yàn)閜ython語(yǔ)法規(guī)定,else后面必須要有冒號(hào)(復(fù)合語(yǔ)句),直接寫(xiě)個(gè)if就會(huì)報(bào)錯(cuò)了,可寫(xiě)為:
else: if char.isdigit(): number+=1123
5、輸出換成print letter+' '+number+' '+space+' '+symbol
會(huì)報(bào)錯(cuò)TypeError: unsupported operand type(s) for +: 'int' and 'str'
一個(gè)是整形,一個(gè)是字符串,不能直接加,需要格式化輸出,格式為:print “%X”%變量
修改后代碼:
# -*- coding:utf-8 -*- letter=0 number=0 space=0 symbol=0 print "請(qǐng)輸入字符串:" s=raw_input() for char in s: if 'a'<=char<='z' or 'A'<=char<='Z': letter+=1 elif char.isdigit(): number+=1 elif char in [' ',' ']: space+=1 else: symbol+=1 print "字母數(shù)量,數(shù)字?jǐn)?shù)量,空格數(shù)量,其他字符數(shù)量分別為:" print letter,number,space,symbol
格式化輸出的修改代碼如下:
# -*- coding:utf-8 -*- letter=0 number=0 space=0 symbol=0 print "請(qǐng)輸入字符串:" s=raw_input() for char in s: if 'a'<=char<='z' or 'A'<=char<='Z': letter+=1 elif char.isdigit(): number+=1 elif char in [' ',' ']: space+=1 else: symbol+=1 tempTuple=(letter,number,space,symbol) print "字母數(shù)量,數(shù)字?jǐn)?shù)量,空格數(shù)量,其他字符數(shù)量分別為:%d,%d,%d,%d"%tempTuple
格式為print “數(shù)字?jǐn)?shù)量為:%d”%number
其中:%d是格式,表示想輸出一個(gè)整型變量,number是對(duì)應(yīng)替換這個(gè)格式的變量,意思是對(duì)應(yīng)%d的輸出。若有多個(gè)格式,記住變量是按順序逐個(gè)匹配的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
OpenAI的Whisper模型進(jìn)行語(yǔ)音識(shí)別使用詳解
這篇文章主要介紹了OpenAI的Whisper模型進(jìn)行語(yǔ)音識(shí)別使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02簡(jiǎn)單學(xué)習(xí)Python time模塊
這篇文章主要和大家一起簡(jiǎn)單學(xué)習(xí)一下Python time模塊,Python time模塊提供了一些用于管理時(shí)間和日期的C庫(kù)函數(shù),對(duì)time模塊感興趣的小伙伴們可以參考一下2016-04-04Python實(shí)現(xiàn)自動(dòng)生成請(qǐng)假條
這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)用Python來(lái)批量生成請(qǐng)假條,這回既學(xué)了東西又做了事情,兩不誤!感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12python通過(guò)ssh-powershell監(jiān)控windows的方法
這篇文章主要介紹了python通過(guò)ssh-powershell監(jiān)控windows的方法,涉及Python操作ssh-powershell的相關(guān)技巧,需要的朋友可以參考下2015-06-06python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例
今天小編就為大家分享一篇python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02python數(shù)據(jù)分析近年比特幣價(jià)格漲幅趨勢(shì)分布
這篇文章主要為大家介紹了python分析近年來(lái)比特幣價(jià)格漲幅趨勢(shì)的數(shù)據(jù)分布,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11python實(shí)現(xiàn)的正則表達(dá)式功能入門(mén)教程【經(jīng)典】
這篇文章主要介紹了python實(shí)現(xiàn)的正則表達(dá)式功能,詳細(xì)分析了Python正則表達(dá)式中常用的各種符號(hào)、函數(shù)等的使用方法與注意事項(xiàng),需要的朋友可以參考下2017-06-06Python numpy實(shí)現(xiàn)二維數(shù)組和一維數(shù)組拼接的方法
今天小編就為大家分享一篇Python numpy實(shí)現(xiàn)二維數(shù)組和一維數(shù)組拼接的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06