天天看點

#Python在學習7# 單字元函數(ord與chr)

1、ord和chr函數的應用

在python中,涉及到單字元的ASCII或者Unicode編碼轉換。例如子母A的ASCII碼為65,子母X的ASCII碼為88。同樣的,知道十進制的數字碼,通過chr函數就可以将數字碼轉換為對應的子母。

print(ord('A')) 運作結果為65

print(ord('X')) 運作的結果為88

print(chr(88)) 運作的結果為X

print(chr(122)) 運作的結果為z

#Python在學習7# 單字元函數(ord與chr)

2、簡單判斷子母類型并應用ord與chr函數

①判斷首字母是為元音子母(即字元串首字母是否為“aeiou”)及非元音子母

英文字母表中共有5個元音子母(aeiou),其他均為非元音子母(輔音子母),是以在邏輯上隻要判斷首子母是否在5個元音子母之内就可以完成判定

s='elephant'
if s[0] in 'aeiou':
    print('first char. is a vowel.')           

這行代碼運作的結果即為first char. is a vowel.

但是很多時候首字母并非一定是小寫字母,是以有兩種方式來解決這個問題。

第一種方式:将in後面的字元串範圍擴大至“aeiou和AEIOU”,直接覆寫全部的大小寫元音字母,代碼如下:

s='elephant'
if s[0] in 'aeiouAEIOU':
    print('first char. is a vowel')           

這行代碼的運作結果也為first char. is a vowel.

第二種方式:将單詞中的每個子母全部大寫或者小寫,在in後面的字元串中編寫對應的大小寫元音子母,也可以進行判斷。代碼如下:

s='Helephant'
if s[0].upper() in "AEIOU":
    print('first char. is a vowel')           

這行代碼的運作結果也為first char. is a vowel.

當判斷的首個子母為非元音子母的時候,可以提示為輔音子母,需要添加一個else語句。代碼如下:

s='Helephant'
if s[0].upper() in "AEIOU":
    print('first char. is a vowel')
else:
    print('first char. is not a vowel, it is a consonaut.')           

首先将字元串中全部子母調整為大寫字母,然後判斷大寫的首字母是否在元音字元串中,根據判斷結果,如果在字元串中,則顯示首字母為元音子母;如果不在字元串中,則顯示首字母為輔音字母;

②周遊字元串,并通過ord轉換

代碼如下:

s='elephant'
for ch in s:
    print(ch,', type:',type(ch))
    print(ord(ch),end='')           

首先列印字元串中的每一個字元,判斷每一個字元的類型;然後通過ord,将其轉換為對應的ASCII碼。

#Python在學習7# 單字元函數(ord與chr)

3、通過ord和chr函數建立所有字元串

通過一個簡單的循環函數就可以建立所有字元串,代碼如下:

n=ord("A")
s=''
for i in range (n,n+26):
    s+=chr(i)
print(s)           

首先将A轉換為ASCII碼,通過循環,每次在ASCII碼中+1,就可以列印出完整的字母表。當然也可以嘗試将26這個參數設定為其他的數字,會有意外的驚喜。例如當我将參數設定為55的時候,列印的結果為:

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw

這裡面仿佛可以發現一些ASCII碼的編寫規律

#Python在學習7# 單字元函數(ord與chr)

4、通過join函數在清單中添加字元串

當明确知道準備添加的字元串長度的時候,可以通過+=的方式直接添加。但是當準備添加的字元串長度不明确的時候,可以建立新清單,通過在清單中添加元素的方式,來添加字元串。

代碼如下:

n=ord("A")
a_list=[]
for i in range (n,n+55):
    a_list.append(chr(i))
    s=''.join(a_list)
print(s)           

運作的結果也為:

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw

#加油!

#一點一滴的努力,未來都會有回報。

#歲月靜好,不去羨慕旁人,隻做好自己,花朵總會綻放。

#以上學習感悟來自于《高階Python代碼精進之路》([美]Brain Overland, John Bennett著,李輝,韓慧昌譯,中國工信出版集團電子工業出版社2022年4月出版)