PTA Python语言程序设计(7)7-2 输出10个不重复的英文字母 (15分)

随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。 如没有10个英文字母,显示信息“not found”在这里插入图片描述

题意很清楚,我们先提取题中条件

  1. 输出的字符不能有重复的,大小写不同也不行。
  2. 输出的字符必须是二十六个英文字母
  3. 当输出的字符小于十个时,不输出并且,输出“not found”
    题意明确我们来逐步分析

解法一:

此解法不推荐小白,对思维有一定要求:

a=input()
s=set()
Str=""
for i in a:
	if(i.isalpha() and (i.lower()not in s)):
		s.add(i.lower())
		Str+=i

if(len(Str)>=10):
	print(Str[0:10])
else:
	print("not found")

首我们输入一个字符串,先用集合set去掉重复的元素,在设置一个空的字符串(后面会用到),我们对输入的字符串a进行遍历,注意这里**i.isalpha()**这个函数时用来判断这个字符串是否是由字母组成,若是则返回Ture那么if的第一个条件成立。
第二个条件我们判断i的小写是否存在于字符串中。为什么这样呢?
我们假设前面已经有一个大写的T那么第一遍进入循环会将大写T转化为t并存入到s中,第二次如果是小写t的话,显然已经无法进入到这个循环。而且之前的大写T已经用过 Str+=i 进入到Str中。
遍历完a后,Str就相当于是已经排除过相同字母和数字,空格的一个a的子集,接下来我们只需要判断他的长度是否大于十,若是大于,则输出切片 [0:10] ,若不符合,则输出not found

解法二:

解法二比较适合思维简单一点的,其实差不多吧

a_str =  input("")
b_set=set()
l=[]
for i in a_str:
    if i not in b_set:
        if  i >='a' and i<='z':
            b_set.add(i)
            b_set.add(i.upper())
            l.append(i)
        elif i >= 'A' and i <= 'Z':
            b_set.add(i)
            b_set.add(i.lower())
            l.append(i)
if len(l)>=10:
    for i in range(10):
        print(l[i], end="")
else:
    print("not found")

这个代码是从网上截下来的,纯粹是因为我懒得打,所以要是原博主看到了清见谅,我声明一下,代码不是我原创。
跟一类似,我们先通过集合去除相同的元素,之后我们遍历a_str
b_set刚开始是空的,那么一定会进入if如果i是小写字母,则把它和它的大写加入集合,防止后面有一样的字母进入你需要的列表l
后面的同理,如果是大写,把它的小写和本身填入集合,这样只要有不符合的就可以加入你需要的列表l,最后我们判断l的长度是否大于十,分情况输出就行,在前面的if判断中已经把除二十六个字母的大小写外的的字符排除,所以不必担心其骚扰。

over bye

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值