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

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

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

输出的字符不能有重复的,大小写不同也不行。

输出的字符必须是二十六个英文字母

当输出的字符小于十个时,不输出并且,输出“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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值