课后作业遇到问题
甄别一段字符串中的密码1每位密码为单个小写字母
2每位密码的左右两边均有三个大写字母
我打的代码是:
def myfunt(char):
shuchu = []
for i in char:
x = char.rfind(i)
if i.islower() == Trueand char.isupper() == char.isupper() == True:
shuchu.append(i)
print(shuchu)
char = input("请输入需要甄别的字符串:")
myfunt(char)
打代码的时候我就发现一个问题
rfind()是返回最高索引值,如果密码中有两个相同的小写字母的话这段代码应该不行
但是当我F5运行后却发现完全没问题
比如输入ASDmLOK51454131MVFyKILkjhk65465jjYASxMKIdfa 得到密码 m y x
输入 ASDmLOK51454131MVFyKILkjhk65465jjYASxMKIdfaKKKyLLLs6546 得到密码 m y x y
请问这是怎么回事?
紧接着我又发现一个问题
isupper() 不是应该是全部是大写字母才返回True 么?
怎么如果有个数字在其中也返回True?
比如 y = '6PP'
y.isupper()
返回True
这样如果输入ASDmLOK51454131MVFyKILkjhk65465jjYASxMKIdfaKKKyLLLs6LLLxPPP
密码就会是['m', 'y', 'x', 'y', 's', 'x']
请问该使用哪个函数能解决? 还是我思路有问题?
{:9_241:} 柿子饼同学 发表于 2021-4-18 18:01
def myfun(s):
n = len(s)
l = []
for i in range(2, n-2):
if s.islower():
if s.isupper() and s.isupper():
l.append(s)
这不需要那些东西的,最后会得出一个有密码的列表 柿子饼同学 发表于 2021-4-18 18:11
这不需要那些东西的,最后会得出一个有密码的列表
def myfun(s):
n = len(s)
l = []
for i in range(2, n-2):
if s.islower():
if (s.isupper()and s.isalpha()) and (s.isupper()and s.isalpha()):
l.append(s)
print(l)
对不起对不起,草率了,这个可以的 柿子饼同学 发表于 2021-4-18 18:19
对不起对不起,草率了,这个可以的
isalpha()是用来看她这个字符串是否都是字母,这里起到了排除数字的作用{:9_229:}
页:
[1]