鱼C论坛

 找回密码
 立即注册
查看: 1409|回复: 9

python 20课,关于找密码的练习中的问题

[复制链接]
发表于 2018-1-23 12:03:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 checkily 于 2018-1-23 14:54 编辑
  1. str1 = '''ABSaDKSbRIHcRHGcdDIF'''

  2. countA = 0  # 统计前边的大写字母
  3. countB = 0  # 统计小写字母
  4. countC = 0  # 统计后边的大写字母
  5. length = len(str1)

  6. for i in range(length):
  7.     if str1[i] == '\n':
  8.         continue
  9.     if str1[i].isupper():
  10.         if countB:
  11.             countC += 1
  12.         else:
  13.             countC = 0
  14.             countA += 1
复制代码


后面的省略,语句中:
if str1=='\n':
        continue
有什么作用呢?


还有后面的统计大小字母是怎样运作的?想不明白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-23 12:21:48 | 显示全部楼层
‘\n' 是回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 14:34:18 | 显示全部楼层

我知道是回车,换行,但这个语句有什么用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 14:42:31 | 显示全部楼层
checkily 发表于 2018-1-23 14:34
我知道是回车,换行,但这个语句有什么用?

如果这个字符数回车键,那么不是所需,直接进入下一轮循环判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 14:53:01 | 显示全部楼层
本帖最后由 graceasyi 于 2018-1-23 14:54 编辑

我是一个初学者,还没有学这一课,看了下你的代码,是有问题的,缺少了countB的统计。str1 == '\n'的意思应该是不统计字符串中的回车。
遍历每一个字符,如果是回车不统计,进入下一个字符,如果是大写字母,判断这个大写字母前面有没有过小写字母(countB不为0说明已经统计过小写字母了,反之亦然),如果有,则countC+=1,也就是统计小写字母之后的大写字母数;如果没有,则countA+=1,统计小写字母前的大写字母数

  1. str1 = "ABSaDKSbRIHcRHGcdDIF"

  2. countA = 0  # 统计前边的大写字母
  3. countB = 0  # 统计小写字母
  4. countC = 0  # 统计后边的大写字母
  5. length = len(str1)

  6. for i in range(length):
  7.     if str1[i] == '\n':
  8.         continue
  9.     if str1[i].isupper():
  10.         if countB:
  11.             countC += 1
  12.         else:
  13.             countC = 0
  14.             countA += 1
  15.     else:
  16.         countB += 1
复制代码


这样我觉得有些麻烦,直接遍历字符,不用索引更简单

  1. str1 = "ABSaDKSbRIHcRHGcdDIF"

  2. countA = 0  # 统计前边的大写字母
  3. countB = 0  # 统计小写字母
  4. countC = 0  # 统计后边的大写字母

  5. for i in str1:
  6.     if i == ' ':                # 不统计字符串中的空格
  7.         continue
  8.     elif i.isupper():
  9.         if countB:
  10.             countC += 1
  11.         else:
  12.             countA += 1
  13.     else:
  14.         countB += 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 15:07:16 | 显示全部楼层
BngThea 发表于 2018-1-23 14:42
如果这个字符数回车键,那么不是所需,直接进入下一轮循环判断

这句明白了。
后面的呢?
if str1.isupper():
    if countB:    #这个判断是什么意思?
        countC+=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 15:24:57 | 显示全部楼层
if countB:
这里的countB是用来表示小写字母的个数
根据题意设计,此时如果有小写字母的话,countC就自增
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 16:10:30 | 显示全部楼层
BngThea 发表于 2018-1-23 15:24
if countB:
这里的countB是用来表示小写字母的个数
根据题意设计,此时如果有小写字母的话,countC就自增

不好意思,我是新手,有很多问题
if countB:  这句等价于 if countB>0:    对吗?如果是的话,我就明白了。  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 17:28:37 | 显示全部楼层
checkily 发表于 2018-1-23 16:10
不好意思,我是新手,有很多问题
if countB:  这句等价于 if countB>0:    对吗?如果是的话,我就明白 ...

等价于 if countB != 0:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 17:40:41 | 显示全部楼层
BngThea 发表于 2018-1-23 17:28
等价于 if countB != 0:

哦,原来是不等于0。我以为是大于0。非常谢谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 23:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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