今天在做一个函数的作业,题目如下:

        编写一个函数实现大写转小写,小写变大写,并且转换为镜像字符串,并且将字符串变为镜像字符串。 例如:’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)

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!