鱼C论坛

 找回密码
 立即注册
查看: 1883|回复: 2

[已解决]20讲中动动手第1题

[复制链接]
发表于 2020-11-19 16:54:38 | 显示全部楼层 |阅读模式

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

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

x
以下是我的代码:
h = '''需要筛选的字符串'''
a = 0
b = []
if h[0:3].isupper() and h[3].islower() and h[4:7].isupper() and not(h[7].isupper):
    b.append(h[3])
while a+8 < len(h):
    if not(h[a].isupper()):
        if h[a+1].isupper():
            if h[a+2].isupper():
                if h[a+3].isupper():
                    if h[a+4].islower():
                        if h[a+5].isupper():
                            if h[a+6].isupper():
                                if h[a+7].isupper():
                                    if not(h[a+8].isupper()):
                                        b.append(h[a+4])
    a += 1
print(b)
我自己分析了一下和小甲鱼答案的思路,发现:
优点是在 for i in range(length)中每个字符仅参与寻找一遍,我的答案相当于除了前后几个字符,大部分字符都需要参与8遍运算,比较耗费资源。另外我的遇到\n时会判断为非大写字母,如果字符串为:
'''UTGgUY\nY'''
那g是不会被找出的,但是答案里的g就会,因为答案里认为\n两边的字符算连着的。

请大神帮忙分析一下我的答案与小甲鱼答案的其它利弊,多谢。
最佳答案
2020-11-19 17:11:43
本帖最后由 jackz007 于 2020-11-19 17:16 编辑
h = '''需要筛选的字符串'''
s = 'a' + '' . join(h . split('\n')) + 'a'   # 消灭 h 中的换行符 '\n',并在字符串首尾添加字符 'a' 以便判断规则同时适用于字符串内部和首尾
p = ''
for k in range(4 , len(s) - 4):
    if s[k - 4] . islower() and s[k - 3 : k] . isupper() and s[k] . islower() and s[k + 1 : k + 4] . isupper() and s[k + 4] . islower():
        p += s[k]
print(p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-19 17:11:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-11-19 17:16 编辑
h = '''需要筛选的字符串'''
s = 'a' + '' . join(h . split('\n')) + 'a'   # 消灭 h 中的换行符 '\n',并在字符串首尾添加字符 'a' 以便判断规则同时适用于字符串内部和首尾
p = ''
for k in range(4 , len(s) - 4):
    if s[k - 4] . islower() and s[k - 3 : k] . isupper() and s[k] . islower() and s[k + 1 : k + 4] . isupper() and s[k + 4] . islower():
        p += s[k]
print(p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-20 12:15:23 | 显示全部楼层

单纯冲代码上来说,你的代码太多 if 了,而程序员其实蛮忌讳的就是一堆 if 语句嵌套

这种代码就是很‘丑’的代码,甲鱼哥的更为整洁些

如果想排除 \n 换行符的影响,你只需要将字符串使用 replace() 将 '\n' 替换为 '' 空字符串即可

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 21:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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