鱼C论坛

 找回密码
 立即注册
查看: 872|回复: 3

第20讲作业第2题,感觉自己写的代码有点问题,但是不知道问题在哪里

[复制链接]
发表于 2019-4-19 14:57:32 | 显示全部楼层 |阅读模式

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

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

x
运行时是正确的,能输出正确密码,但总觉得少了点什么或者哪里有点问题还能改进,请大家指导一下

  1. filename = 'D:\python\string2.txt'
  2. string = open(filename).read()
  3. lenth = len(string)
  4. counta = 0        # 前面大写字母个数
  5. countb = 0        # 小写字母是否出现,0为未出现,1为出现
  6. countc = 0        # 后面大写字母个数
  7. for i in range(lenth):
  8.         if string[i] == '\n':
  9.                 continue
  10.         if string[i].isupper():
  11.                 if countb:        # 判断小写字母是否出现,0(False)为不出现,1(True)为出现
  12.                         countc += 1        #小写字母如果出现,统计后面大写字母个数
  13.                 else:
  14.                         counta += 1        #小写字母如果没出现,统计前面大写字母个数(统计小写字母出现前所有大写字母个数)
  15.         if string[i].islower():
  16.                 countb += 1        # 小写字母出现
  17.                 if counta == 3:        # 前面大写字母个数是3,则继续向下判断
  18.                         if countb == 1:        # 小写字母个数只为1
  19.                                 index = i        # 保留下标
  20.                         else:        # 小写字母大于1,所有统计清零
  21.                                 counta = 0
  22.                                 countb = 0
  23.                                 countc = 0
  24.                 else:        # 前面大写字母个数不是3,所有统计清零
  25.                         counta = 0
  26.                         countb = 0
  27.                         countc = 0
  28.         # 前面大写字母个数只可能是3,但后面大写字母个数可能会大于3
  29.         # 由后面大写字母的第四位的大小写判断
  30.         if counta == 3 and countc == 3:
  31.                 if string[index + 4].islower():       
  32.                         print(index, string[index])
  33.                 else:
  34.                         counta = 0
  35.                         countb = 0
  36.                         countc = 0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-19 15:54:57 | 显示全部楼层
看着逻辑是没什么问题,用统计小写字母前后大写字母的个数来判断,中规中矩及格答案,不过还有个更简洁的实现方案:
提示一下,你31行的位置都想到用index + 4的方法来确定下标后面第4个字母是不是大小写,那为什么不把这个方法用到i上呢?这样不是更简单么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-19 16:04:01 | 显示全部楼层
cwhsmile 发表于 2019-4-19 15:54
看着逻辑是没什么问题,用统计小写字母前后大写字母的个数来判断,中规中矩及格答案,不过还有个更简洁的实 ...

因为我没有想到后面大写字母用在i上的简单代码,我怎么想都会比下标加4更复杂,所以来请教了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-19 16:44:54 | 显示全部楼层
thepoy 发表于 2019-4-19 16:04
因为我没有想到后面大写字母用在i上的简单代码,我怎么想都会比下标加4更复杂,所以来请教了啊

课后作业楼层太高,我找不到我的代码了没办法给你展示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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