|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第二十课的课后习题(在字符串中找密码,密码为小写,每位密码左右均有且只有3位大写字母),使用论坛的代码,自己弄了一个字符串,输出(zoa)和预期(zhaocaiy)不一致,帮忙看下是什么问题?
- str1 = '''SSSzEWQhDDGaRGHoPGPcNDKaSDDiSOFyPLK'''
- countA = 0 #前面三个大写的计数
- countB = 0 #前面有三个大写,后面一个是小写,就置countB = 1,实际上应该用一个布尔量更清楚
- countC = 0 #前面两个条件都满足,又找到大写的计数,如果 countC == 3 说明找到一个密码字母
- length = len(str1)
- for i in range(length):
- if str1[i] == '\n': #防止换行对判断的干扰
- continue
- if str1[i].isupper(): #如果找到的是大写
- if countB == 1: #并且前面两个条件已经满足
- countC += 1 #计数第三个条件
- countA = 0
- else:
- countA += 1 #前面两个条件不满足后又找到大写,计数第一个条件
- continue
- if str1[i].islower() and countA == 3: #找到小写且第一个条件满足,即满足前两个条件
- countB = 1
- countA = 0
- target = i #可能是密码字母,暂存下
- continue
- if str1[i].islower() and countC == 3: #如果找到小写,并且前面三个条件都满足,说明暂存的就是密码字母
- print(str1[target], end='')
- countA = 0
- countB = 0
- countC = 0
复制代码
- str1 = '''SSSzEWQhDDGaRGHoPGPcNDKaSDDiSOFyPLK'''
- length = len(str1)
- for i in range(length-7):
- str2 = str1[i:i+7]
- count = 0
- for j in range(7):
- if str2[j].isupper():
- count += 1
- elif str2[j].islower():
- count -= 1
- if count == 5 and str2[3].islower():
- print(str2[3],end = "")
复制代码
调整还不如自己写。上面是我写的,希望能给你提供思路。
|
|