鱼C论坛

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

[已解决]20讲动动手第二题

[复制链接]
发表于 2021-12-11 23:01:07 | 显示全部楼层 |阅读模式

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

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

x
list1 = []

count1 = 0#统计小写字母前三个大写字母个数
count2 = 0#统计小写字母前小写字母个数


with open('string2.txt') as f:
    str1 = f.read()
    
    length = len(str1)

    for i in range(length):
        if str1[i].isupper():#大写
            if count2:
                count1 += 1
                count2 = 0
            else:
                count1 += 1
            if count1 >= 3:
                count1 = 3
        elif str1[i] == '\n':
            continue
        else:#a是小写
            if count1 == 3:
                if count2:
                    count1 = 0
                    count2 = 0
                else:
                    if i < length - 4:
                        if str1[i+1].isupper() and str1[i+2].isupper() and str1[i+3].isupper() and str1[i+4].islower():
                        #判断后面的四个字母是否为大写(三个大写一个小写)
                            list1.append(str1[i])
                            count1 = 0
                            count2 = 1
                        else:
                            count1 = 0
                            count2 = 1
                    else:
                        break 
            else:
                count1 = 0
                count2 = 1
print(*list1)

#此方法无法保证小写字母前三个字母是连续的大写字母

我这个方法能实现么,怎么判断小写字母前的大写字母是连续的呢,求教。
最佳答案
2021-12-11 23:42:16
with open('string2.txt') as f:
    str1 . read()
s , p = 'a' + '' . join(str1 . split('\n')) + 'a' , ''
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)
屏幕截图 2021-12-11 225803.png
屏幕截图 2021-12-11 225925.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 23:42:16 | 显示全部楼层    本楼为最佳答案   
with open('string2.txt') as f:
    str1 . read()
s , p = 'a' + '' . join(str1 . split('\n')) + 'a' , ''
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
回复 支持 反对

使用道具 举报

发表于 2021-12-11 23:42:58 From FishC Mobile | 显示全部楼层
f = lambda s: s[:3].isupper() and s[3:-3].islower() and s[-3:].isupper()
print(f("ABCabcdfABC"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-12 16:54:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-12 16:56:00 | 显示全部楼层

lambda表达式返回值是True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 17:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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