3-6行:
先導入一string模塊,並且定義兩個字串符,以便往後判斷
8-12行:
讓使用者輸入信息,且讓長度2以上的字符串才能通過檢驗
13-14行:
如果第一字串符不是字母或是下滑線,那麼在輸出結果,並且退出
15-16行:
循環的檢查剩下的字符串
17-21行:
假使剩下的字符串不是字母、下滑線、數字組成的,那麼就輸出結果,且退出,
否則就是輸出是的結果
核心的提示:性能
在有些程式碼中,重複操作作為參數放進循環是很低效的,舉例來說
while i< len(myString):
print ‘character %d is:’,myString[i]
length=len(myString)
while i<length:
print ‘character %d is:’,myString[i]
兩者效率會有差別,後者更為高效
因此,把此邏輯借鑒到第17行,可以更改為
alphnums=alpha +nums
for otherChar in myInput[1:]:
if otherChar not in alphnums:
連接符(+)
重複操作符(*)
6.4只適用於字符串的操作符
有許多字串格式化符號,種類繁多,因此做幾個重點介紹
%c:轉換成字符(ASCII碼值,或長度唯一的字符)
%s:優先用str()函數進行字符串轉換
%d:轉成有符號十進制數
%#x:以16進位輸出
%#o:以8進位輸出
%.2f:以浮點數輸出
接著討論,用字典化顯示操作符
>>> 'There are %(howmany)d %(noun)s ' %{'howmany':3,'noun':'idiots'}
'There are 3 idiots '
6.5內建函數
著名的是min,max,enumerates,zip
>>> a='apple'
>>> for i,t in enumerate(a):
print (i,t)
0 a
1 p
2 p
3 l
4 e
接下來是,chr(),ord(),unichr(),
chr()與unichr()都是類似的,輸入數字,然後輸出字串
但ord()則是,輸入字串,輸出數字
6.6字符串內建函數
string.capitalize():把字符串的第一個字符大寫
string.center(width):把一字符串居中,並使用空格填充到長度width的新字符
string.count(str,beg=0,end=len(string)):在指定的string長度中,搜尋str出現的次數
string.isdigit():至少包含數字就返回True
string.islower():在字符中的字母,得全部都要是小寫才會返回True
string.isalpha():所有字符都是字母就返回True
string.isdecimal():全部的數字中都是十進位制就反回True
6.8Unicode
我查了wiki的定義:Unicode(中文:萬國碼、國際碼、統一碼、單一碼)是電腦科學領域裡的一項業界標準。
它对世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。
在python中,unicode與ASCII字符串沒啥兩樣,前者通常會在字符串前加入’u’已表示,而後者通常就是默認形式
在此,有一實際流程應用,
就是,
unicode字符串—>UTF-8編碼—>寫入一文件
更詳細來說,就是一開始會先decode字符串成unicode型式,
再把這個unicode型式的編碼,encode成其他的編碼,然後寫入一文件
此段程式碼會創建unicode.txt,內容是Hello world!
另外,在使用unicode時,要很小心一些原則,以下
1.程序中出現字符串一定要加個前綴u
2.不要用到str()函數,而是用unicode()代替
3.不到必要時,不要在你的程序編碼中,編解Unicode字符,只要在寫入文件時,再加入encode()就好
最後,是在使用unicode的一些教訓
1.在開發產品時,如果要做其他語言的應用話,那麼一開始就要注意unicode的使用,否則到後頭會很麻煩
2.在原碼中,到處使用str()與chr()函數,但最後還是得換成unicod()函數
3.不能確定所有輔助系統都支持Unicode,得在一開始就做確認
网友评论