python操作字符串內容並重新輸出


今天在做一個函數的作業,題目如下:

        編寫一個函數實現大寫轉小寫,小寫變大寫,並且轉換為鏡像字符串,並且將字符串變為鏡像字符串。 例如:’A’變為’Z’,’b’變為’y 示范字符串: ”sdSdsfdAdsdsdfsfdsdASDSDFDSFa”字符串大寫變小寫 小寫變大寫。

總結起來就是輸入一個字符串,將其中每個元素做大小寫變換和轉換,然后按照順序重新輸出。

 

        一開始我的思路是分別建一個26字母大寫、小寫的字符串,通過輪詢你輸入的字符串,如果元素是大寫:則變成小寫,並依據我創建的字母字符串索引做鏡像轉換。小寫思路參照大寫。

        問題在於輸出到新的字符串當中,我也想到了是定義一個空字符串,然后拼接的方式來完成輸入的整個字符串轉換,但是最后卡在了怎么獲取處理后的元素。

        最后參照了老師的代碼才發現原因還是自己對於for循環理解不夠深入,for循環中用變量去輪詢字符串,忘記了變量也可以重新賦值。

 

最后完善了自己的代碼如下:

 

 
        
 1 l_upper=[chr(i) for i in range(65,91)]
 2 l_lower=[chr(i) for i in range(97,123)]
 3 
 4 def mirror_image(l):        #定義函數
 5     print(l)                #輸出輸入字符串
 6     l1=''                   #定義空字符串,用於轉換后存儲
 7     for i in l:             #輪詢字符串,i本身也是變量!!!!
 8         if i in l_lower:
 9             i=i.upper()     #小寫轉大寫
10             index_i=l_upper.index(i)        #獲取索引
11             i=l_upper[25-index_i]           #鏡像轉換
12             l1+=i
13         else:
14             i=i.lower()         #大寫轉小寫
15             index_i = l_lower.index(i)
16             i = l_lower[25 - index_i]
17             l1+=i
18     print(l1)
19 
20 
21 
22 mirror_image('aBxdeF')

 

          

 

 

再附上老師的兩套代碼:

 

 1 #方法一:根據Ascii編碼解題  
 2 def change_string(s):
 3     new_s=''
 4     for item in s:
 5         if item.islower():
 6             num=ord(item)-32#轉變為大寫
 7             num=155-num#大寫字母互為鏡像文字的數值之和為155
 8             new_s+=chr(num)
 9         else:
10             num=ord(item)+32#轉為小寫
11             num=219-num#大寫字母互為鏡像文字的數值之和為219
12             new_s+=chr(num)
13     return new_s
14 
15 #方法二:利用字符串的內置方法來解決
16 def change_str_2(s):
17     s=s.swapcase()#互換大小寫
18 
19     in_tab='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
20     out_tab='ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba'
21     reflect=str.maketrans(in_tab,out_tab)#建立翻譯表
22 
23     s=s.translate(reflect)#根據翻譯表進行翻譯
24     return s
25 
26 
27 if __name__ == '__main__':
28     s='sdSdsfdAdsdsdfsfdsdASDSDFDSFa'
29     new_s=change_string(s)
30     # new_s=change_str_2(s)
31     print("轉換之前的字符串:",s)
32     print("轉換之后的字符串:",new_s)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM