【PTA-python】第3章-22 输出大写英文字母 (15 分)

第3章-22 输出大写英文字母

分析

初步想法:使用set函数,过滤掉重复元素,但是set函数会破坏字符串输出顺序。
之后想法:创建一个空字符串,使用isupper()这个判断函数,如果是大写,而且未被添加到空字符串中过,就添加进去
看到封心大佬的的博客,填补了自己对set函数的理解,另外借助于列表的sort函数,借助于列表中的索引顺序,可以保留原顺序的同时实现排序。

string="abcdab"
string_new=list(set(string))#那么这里的string_new就实现了去重,但顺序有误
string_new.sort(key=list(string).index)#按string中的索引顺序,对sting_new排序

题目

本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。

解法:

s=input()
ss=""
for i in range(len(s)):
    if s[i].isupper()==True and s[i] not in ss:
        ss+=s[i]
if ss!="":
    print(ss)
else:
    print("Not Found")

要注意result里面含有重复元素,但次序是正确的。ss经过去重,次序不正确。所以要对ss进行sort(),其依据是result的index。

注意print(ss.sort())结果是空值。
这个和reverse()与reversed()的区别一样。reverse()的返回值是none。reversed()使用需要借助于list或next

s=input()
result=[]
for i in range(len(s)):
    if s[i].isupper()==True:
        result.append(s[i])
ss=list(set(result))
if len(ss)!=0:
    ss.sort(key=list(result).index)
    print(''.join(ss))
else:
    print("Not Found")
posted @ 2021-04-17 09:43  flybird2008  阅读(11)  评论(0)    收藏  举报  来源