1029_旧键盘 Python实现
下面是题目信息
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
输入格式:
输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。
输出格式:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。
输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI
解题思路
由于该题给出的信息是让我们查找缺失的按键,那么我们只需要找出两个字符串当中,没有同时出现的字符即可:
- 因为题目限制了输出必须为大写,所以会用到upper()函数;
- 用字符串1的字符去遍历是否存在于字符串2;
- 由于字符串中存在多个重复字符,所以还需要一个计数器或者判断语句;
提交结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a5041a9d1f641bfbfa4029428c0abc0.png)
下面是具体的代码
str1 = input()
str2 = input()
list1 = []
# print(str1, str2)
for i in str1:
if i in str2:
continue
else:
if i.upper() not in list1:
list1.append(i.upper())
print(i.upper(), end='')
# print(list1)
下面给出我所遇到的一些问题
1.upper()函数
这是一个较为低级的错误,警醒我自己。在最初我使用upper()函数时,我没有用str.upper()[这里的str表示字符串],而是用了upper(str),导致了我的程序出现了第一个语法错误。
2.如何去除重复字符
如果没有去重的话,那么最后的输出结果会出现两个I或者两个T的情况。我在代码中所给出的方法是,在对该字符进行操作之前,先判断是否已经有相同字符(在判断前统一为大写),这里我用了list列表来保存已经判断出的字符。如果该字符在列表中没有,则说明是第一次判断出来,进行输出并且保存至列表占位。
关于输出方法的问题
我的输出方法是即时输出,即在判断成功地时候就对当前字符进行一个输出,因为该输出在循环体之内,默认的结尾是换行符。所以为了避免一个字符一行的情况,这里指定end=‘’,结尾为空。
另外一种输出的方法则是通过打印列表来实现,但是如果直接打印的话,每个字符都会被引号包括,并通过逗号隔开。需要使用print(“”.join(list))方法,这里的list为你保存的数据