字符串的常考題型

最近在做一些python練習題,所以,趁此機會,把字符串的常考題目,以及常用方法做一個梳理

題目一:統計各個字母,數字,空格,以及其他特殊字符出現的次數  s = "1qe89cty  dgh4ue54 w637  ud   !@#"

題目二:任意給出一串字符串,找出該字符中每一個字符出現的次數  s1 = "aabbbccccddddddd"

題目三:統計每種字符出現的次數,同樣用字典表示出來     s2 = “aaa123444yyy32222222”

題目四:迴文數:從左到右,從右到左都是一樣的,就是迴文數,12321是迴文數,12345不是

先看看最後的輸出結果

 且看下列的代碼分析過程

"""
題目一:統計各個字母,數字,空格,以及其他特殊字符出現的次數
"""
s = "1qe89cty  dgh4ue54 w637  ud   !@#"

# 先初始化,定義變量爲0,從0開始統計
int_count = 0
str_count = 0
space_count = 0
other_count = 0

# 開始對字符串進行遍歷
for i in s:
    if i.isdigit():
        int_count += 1
    elif i.isalpha():
        str_count += 1
    elif i == " ":
        space_count += 1
    else:
        other_count += 1
print("數字有{}個;字母有{}個;空格有{}個;其他特殊字符有{}個".format(int_count, str_count, space_count, other_count))
# 最後打印結果如下    數字有9個;字母有13個;空格有8個;其他特殊字符有3個

"""
題目二:任意給出一串字符串,找出該字符出現的次數
比如:s1 = "aabbbccccddddddd"   ;這道題可以採用count方法更簡單
"""

s1 = "aabbbccccddddddd"
# 定義一個空字典,用來裝結果
dict_s1 = {}
# 開始遍歷
for i in s1:
    dict_s1[i] = s1.count(i)
print(dict_s1)  # 最後打印結果:{'a': 2, 'b': 3, 'c': 4, 'd': 7}

### 其實這道題可以改編一下,把以上兩道題綜合起來,給出任意字符串  s2 = “aaa123444yyy32222222”;統計每種字符出現的次數,同樣用字典表示出來

s2 = "aaa123444yyy3222mn2222"
# 同樣的拿一個空字典來裝
dict_s2 = {}
# 開始遍歷
for j in s2:
    # 從左到右走第一輪,如果是第一次出現,就直接放進去
    if j not in dict_s2:
        dict_s2[j] = 1
    # 如果是第二次出現,就說明開始裝的字典裏面已經有一個和這個重複,那就同樣的繼續加1
    else:
        dict_s2[j] += 1
print(dict_s2)  # 最後打印結果:{'a': 3, '1': 1, '2': 8, '3': 2, '4': 3, 'y': 3, 'm': 1, 'n': 1}

# 其實,第三題的方法同樣適用於第二題,也可以做到

"""
題目四,迴文數
"""


def number(num2):
    # 先把這個數字轉化爲字符串,再轉化爲列表
    li1 = list(str(num2))
    # 轉化爲列表後,再將列表反轉
    li2 = li1[::-1]
    # 再將列表中的元素,當作字符,一個一個拼接起來,再把字符串類型強制轉化成整數類型
    # 定義一個空的字符串,專門用來開始拼接的
    str_1 = ''
    r = int(str_1.join(li2))
    # 將最後轉化的數字與最開始的num2進行比較,如果相等,就是迴文數,如果不相等,就不是
    if r == num2:
        return True
    else:
        return False


# 因爲最後返回的是布爾類型,所以,得打印出來才知道是True還是False
print(number(12321))    # 打印結果爲 True
print(number(12345))    # 打印結果爲 False

  從以上幾個題目中,我們大概捋一下思路;第一題,它只是用來判斷哪些是數字,哪些是字母,哪些是空格,哪些是特殊字符,所以,這裏需要用到的兩個方法,isdigit()和isalpha();其中,isdigit()是用來判斷是否爲數字,isalpha()用來判斷是否爲字母,這個是每一個下標元素本來自帶的方法,要學會合理的運用起來;第二題和第三題,基本上是同一個題,但是,第二題運用的是count()計數方法,第三題用的是if判斷,雖然也是count++,但是感覺第三題的方法適用更廣。第四題,涉及到的知識點就是,數據類型之間的強制轉換,join()拼接方法。以上題目具有代表性,較爲經典,建議多多練手,總結解題的規律。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章