鱼C论坛

 找回密码
 立即注册
查看: 2037|回复: 4

课后作业遇到问题

[复制链接]
发表于 2021-4-18 15:12:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
甄别一段字符串中的密码

1每位密码为单个小写字母
2每位密码的左右两边均有三个大写字母

我打的代码是:

def myfunt(char):
   
    shuchu = []
    for i in char:
        
        x = char.rfind(i)
        
        if i.islower() == True  and char[x-3:x].isupper() == char[x+1:x+4].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']

请问该使用哪个函数能解决? 还是我思路有问题?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-18 18:01:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-18 18:11:27 | 显示全部楼层
def myfun(s):
    n = len(s)
    l = []
    for i in range(2, n-2):
        if s[i].islower():
            if s[i-3:i].isupper() and s[i+1:i+4].isupper():
                l.append(s[i])
        
这不需要那些东西的,最后会得出一个有密码的列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-18 18:19:33 | 显示全部楼层
柿子饼同学 发表于 2021-4-18 18:11
这不需要那些东西的,最后会得出一个有密码的列表
def myfun(s):
    n = len(s)
    l = []
    for i in range(2, n-2):
        if s[i].islower():
            if (s[i-3:i].isupper()and s[1-3:i].isalpha()) and (s[i+1:i+4].isupper()  and s[i+1:i+4].isalpha()):
                l.append(s[i])
    print(l)
对不起对不起,草率了,这个可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-18 18:20:52 | 显示全部楼层
柿子饼同学 发表于 2021-4-18 18:19
对不起对不起,草率了,这个可以的

isalpha()是用来看她这个字符串是否都是字母,这里起到了排除数字的作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 02:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表