|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是找字符串中的密码
a) 每位密码为单个小写字母
b) 每位密码的左右两边均有且只有三个大写字母
以下是我写的代码,注释是思路,不知道错在哪里,运行后没有输出
- str1 = '''ABSaDKSbRIHcRHGcdDIF'''
- a = len(str1)
- c1 = 0
- c2 = 0
- temp = []
- for i in range(a):
- #找开始的3个大写字母
- if str1[i].isupper() == 1:
- #找到第一个大写字母时,进入while循环计数
- while str1[i].isupper == 1:
- c1 +=1
- i += 1
- else:
- break
-
- #如果大写字母刚好有3个,就判断下一个字符是不是小写字母
- if c1 == 3:
- i = i+1
-
- #如果是小写字母,就将小写字母写入一个列表temp
- if str1[i].islower() == 1:
- while str1[i].islower() == 1:
- temp.append(str1[i])
- i +=1
- #当不是小写字母时,跳出循环
- else:
- break
- #当temp不为空时,判断下一个字符是不是大写字母
- if len(temp) > 0:
- i = i+1
- #下一个字符是大写字母时,判断是不是刚好3个大写字母
- if str1[i].isupper() == 1:
- while str1[i].isupper == 1:
- c2 +=1
- i +=1
- #如果刚好是三个大写字母,就输出temp;否则就清空temp
- if c2 == 3:
- print(str(temp))
- else:
- temp =[]
-
复制代码
帮你大致改了下代码,很多多余的地方去掉了,比如 if 判断条件和 while 循环条件相同的,都说多余的
但是问题还是很多,至少不会报错了,建议你还是看看课后答案的思路,然后再重新写一遍你原本的思路比较好:
- str1 = '''ABSaDKSbRIHcRHGcdDIF'''
- a = len(str1)
- c1 = 0
- c2 = 0
- temp = ''
- for i in range(a):
- # 找到第一个大写字母时,进入while循环计数
- while str1[i].isupper() == 1 :
- c1 += 1
- i += 1
- if i == a:
- i -= 1
- break
- # 如果大写字母刚好有3个,就判断下一个字符是不是小写字母
- if c1 == 3:
- # 如果是小写字母,就将小写字母写入一个列表temp
- if str1[i].islower() == 1:
- temp += str1[i]
- i += 1
- # 当temp不为空时,判断下一个字符是不是大写字母
- if len(temp) > 0:
- # 下一个字符是大写字母时,判断是不是刚好3个大写字母
- if i < a and str1[i].isupper() == 1:
- while i < a and str1[i].isupper() == 1:
- c2 += 1
- i += 1
- # 如果刚好是三个大写字母,就输出temp;否则就清空temp
- if c2 == 3:
- print(temp,end=' ')
- temp = ''
- c1 = 0
- c2 = 0
复制代码
你代码最后 c1 和 c2 也忘记初始化了,还有我把你的列表换成字符串了,进行拼接,看上去舒服点
|
|