python習題庫12-15/1-7

習題12:統計首字母是“a”的單詞的個數

編程思想:
1、生成字符串s
2、初始一個count=0,用於統計s字符串中的a的個數
3、將字符串s切割遍歷,判斷如果s字符串某個位置的元素等於a,那麼count加1
4、輸出count
知識點:
python split()方法
Python split() 通過指定分隔符對字符串進行切片,如果參數 num 有指定值,則分隔 num+1 個子字符串
語法:str.split(str="", num=string.count(str)).
str – 分隔符,默認爲所有的空字符,包括空格、換行(\n)、製表符(\t)等。
num – 分割次數。默認爲 -1, 即分隔所有。
返回分割後的字符串列表。
代碼:

s="akk alklk bkk aaddd"
count=0
for v in s.split():
    if v[0]=="a":
	    count+=1
print(count)

在這裏插入圖片描述

習題13:單詞順序翻轉

編程思想:
1、生成字符串s
2、通過切割,字符串位置的反轉,拼接成一個新的字符串打印輸出
代碼:

s="I am a man"
print(" ".join(s.split()[::-1]))

在這裏插入圖片描述

習題14:單詞順序翻轉且單詞本身翻轉

編程思想:
1、生成一個字符串
2、切割遍歷反轉這個字符串,打印出的的時候再次反轉每一個元素
代碼:

s="I am a good man"
print("  ".join([word[::-1] for word in s.split()[::-1]]))

在這裏插入圖片描述

s="I am a good man"
print(s[::-1])

在這裏插入圖片描述

習題15:判斷一下這句話,有幾個數字和幾個空白,和幾個字母其他字符有幾個"I am a 12 years old boy! hi,me!"

編程思想
1、生成一個字符串s
2、生成d_num用於存放數字個數,letter_num用於存放字母的個數,space_num用於存放空白的個數,other_num用於存放其他的個數
3、遍歷字符串,判斷是否屬於字母、數字、空白,如果是分別給對應的統計數據加1
4、分別打印輸出統計數據
知識點:
1、python isalpha()方法
Python isalpha() 方法檢測字符串是否只由字母組成。
語法:str.isalpha()
如果字符串至少有一個字符並且所有字符都是字母則返回 True,否則返回 False。
2、python isdigit()方法
Python isdigit() 方法檢測字符串是否只由數字組成。
語法:str.isdigit()
如果字符串只包含數字則返回 True 否則返回 False。
3、Python isspace()方法
Python isspace() 方法檢測字符串是否只由空格組成。
語法:str.isspace()
如果字符串中只包含空格,則返回 True,否則返回 False.
代碼:

s="I am a 12 years old boy,hello,me!"

d_num=0
letter_num=0
space_num=0
other_num=0

for v in s:
    if  v.isalpha(): 
        letter_num+=1
    elif v.isdigit():
        d_num+=1
    elif v.isspace():
        space_num+=1
    else:
        other_num+=1
        
print(d_num)
print(letter_num)
print(space_num)
print(other_num)

在這裏插入圖片描述

1、將一個正整數分解質因數

編程思想:
正整數分解質因數n從2開始除:
如果能被2整除,繼續從2開始除;
如果不能被2整除,除數依次加1,繼續判斷能否整除,如果能整除再從2開始除
能整除就加入結果列表,更新n的值,且重置除數爲2
1、寫一個函數存一個正整數變量prime_num;
2、生成result空列表,用於存放能被整除的整數,初始除數 divisor=2;
3、不確定整數的個數用while循環判斷整數不等於1的時候執行循環
如果整數除以2等於0,則將這個整數加入result列表,並且更新整數等於整數除以除數,重置餘數等於2
4、否則除數加1
5、返回result列表
代碼:

def prime_num(n):
    result=[]
    divisor=2
    while n !=1:
        if n%divisor==0:
            result.append(divisor)
            n=n//divisor
            divisor = 2
        else:
            divisor +=1
    return result
print(prime_num(8))
print(prime_num(9))

在這裏插入圖片描述

2、一個字符串中,分別輸出奇數座標字符或偶數座標字符,奇數座標的一行,偶數座標的一行

編程思想:
1、生成空的偶數列表odd_list,空的奇數列表even_list;
2、寫出字符串s
3、通過遍歷這個字符串的長度,判斷如果位數可以被2整除,
加入奇數列表,否則加入偶數列表。
3、打印輸出奇數和偶數列表
代碼:

odd_list=[]#偶數
even_list=[]#奇數
s="abcdefghijk"
for i in range(len(s)):
    if i%2==0:
        even_list.append(s[i])
    else:
        odd_list.append(s[i])
print("偶數字符串:","".join(odd_list))
print("奇數字符串:","".join(even_list))

在這裏插入圖片描述

3、統計字符串中的字母、數字、其他字符個數

編程思想:
1、生成一個初始的字符串s,初始字符串字母數量letter_num爲0,
初始字符串數字數量digit_num爲0,其他數量other_num爲0;
2、遍歷字符串,判斷是否屬於字母,如果屬於字母,letter_num數量加1;
如果屬於數字,則digit_num數量加1,否則其他數量加1.
3、分別打印出字母、數字、其他的數量
知識點:
Python isalpha() 方法檢測字符串是否只由字母組成。
Python isdigit() 方法檢測字符串是否只由數字組成。
代碼:

digit_num=0
other_num=0
for i in s:
    if  i.isalpha():
        letter_num+=1
    elif  i.isdigit():
        digit_num+=1
    else:
        other_num+=1
print("字母:",letter_num)
print("數字:",digit_num)
print("其他字符:",other_num)

在這裏插入圖片描述

4、有一個已經排好序的列表。現輸入一個數,要求按原來的規律將它插入列表中

編程思想:
1、生成一個初始的列表num_list
2、從鍵盤輸入一個數字
3、按照列表的長度進行遍歷,判斷是否大於列表的某個位置的元素,並且小於或者等於某個位置的
元素的後一位,如果符合條件,則將輸入的數字插入到num_list列表的元素i+位置上,
4、打印輸出插入後的列表
知識點:
python list inser()方法
insert() 函數用於將指定對象插入列表的指定位置。
代碼:

num_list=list(range(10))
num=int(input("從鍵盤輸入數字>>"))
for i in range(len(num_list)):
    if num>num_list[i] and  num<=num_list[i+1]:
        num_list.insert(i+1,num)
print("插入後:",num_list)

在這裏插入圖片描述

5、統計名字列表中,各名字的首字母在名字列表中出現的次數

方法1:
編程思想:
1、初始一個name_list列表,一個name_first_letter用於存放列表中的第一個字母;
2、遍歷name_list列表,然後將這個列表的第0個位置的字母加入到name_first_letter列表中
3、初始一個name_first_dict字典,用於存放第一個字母和出現的次數
4、遍歷name_first_letter列表,將這個列表裏面的字母進行數量統計
5、打印輸出name_first_dict
代碼:

name_list=["sunsun","whw","dxd","sdfz"]
name_first_letter=[]
for name in name_list:
    name_first_letter.append(name[0])
name_first_dict={}
for i in name_first_letter:
    name_first_dict[i]=name_first_letter.count(i)
print(name_first_dict)

在這裏插入圖片描述
方法2:
編程思想:
1、初始一個name_list列表,一個name_first_letter用於存放列表中的第一個字母;
2、遍歷name_list列表,然後將這個列表的第0個位置的字母加入到name_first_letter列表中
3、初始一個name_first_dict字典,用於存放第一個字母和出現的次數
4、遍歷name_first_letter列表,用get進行判斷是不是在name_first_dict字典中,
如果在name_first_dict元素等於1,否則加1
5、打印輸出name_first_dict
知識點:
Python 字典(Dictionary) get()方法
Python 字典(Dictionary) get() 函數返回指定鍵的值,如果值不在字典中返回默認值。
代碼:

name_list=["sunsun","whw","dxd","sdfz"]
name_first_letter=[]
for name in name_list:
    name_first_letter.append(name[0])
name_first_dict={}
for i in name_first_letter:
    if name_first_dict.get(i) is None:
        name_first_dict[i]=1
    else:
        name_first_dict[i]+=1
print(name_first_dict)

在這裏插入圖片描述

6、字符替換

1)讀入一個字符串
2)去掉字符串的前後空格
3)如果字符串包含數字則1替換成a,2替換成b,3替換成c,以此類推
4)將字符串使用空格進行切分,存到一個列表,然後使用*號連接,並輸出
5)把這些功能封裝到一個函數裏面,把執行結果作爲返回值
編程思想:
1)寫一個函數parse_str(),引入string包,input從鍵盤讀入一個字符串,使用strip()移除字符串
首位的空格
2)遍歷字符串,如果元素i分別等於1,2,3,用replace替換爲a,b,c
3) 再次遍歷字符串,替換爲空格
4)切割字符串,返回切割後的字符串
5)打印出字符串parse_str()
知識點:
1、python strip()方法
Python strip() 方法用於移除字符串頭尾指定的字符(默認爲空格或換行符)或字符序列。
注意:該方法只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。
返回移除字符串頭尾指定的字符生成的新字符串。
2、python replace()方法
Python replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數max,則替換不超過 max 次。
str.replace(old, new[, max])
old – 將被替換的子字符串。
new – 新字符串,用於替換old子字符串。
max – 可選字符串, 替換不超過 max 次
返回字符串中的 old(舊字符串) 替換成 new(新字符串)後生成的新字符串,如果指定第三個參數max,則替換不超過 max 次。
3、python split()方法
Python split() 通過指定分隔符對字符串進行切片,如果參數 num 有指定值,則分隔 num+1 個子字符串
str.split(str="", num=string.count(str)).
str – 分隔符,默認爲所有的空字符,包括空格、換行(\n)、製表符(\t)等。
num – 分割次數。默認爲 -1, 即分隔所有
返回分割後的字符串列表。
代碼:

def parse_str():
    import string
    s=input("請輸入一個字符串:")
    s=s.strip()
    for i in s:
        if i=="1":
            s=s.replace(i,"a")
        if i=="2":
            s=s.replace(i,"b")
        if i == "3": 
            s = s.replace(i,"c")
    for i in s:
        if i in string.punctuation:
            s = s.replace(i," ")
    s_list = s.split()
    return  "*".join(s_list)
print(parse_str())

在這裏插入圖片描述

7、找出字符串中出現次數最多的字符,並輸出其出現的位置

str_dict={}
result=[]
s="aabbccddeee"
letter=""
for v  in s:
        str_dict[v] = s.count(v)
for k,v  in str_dict.items():
    if str_dict[k] == max(str_dict.values()):
        letter = k
for i in range(len(s)):
    if s[i] == letter:
        result.append(i)
print("出現次數最多的字符串:%s,出現位置:%s"%(letter,result))

在這裏插入圖片描述

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