|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
python课后练习题第20讲中有一道从字符串中提取密码的题目:
密码需要满足以下两个要求:
a.每位密码为单个小写字母:
b.每位密码的左右两边有且只有三个大写字母:
我的代码如下:
ength = len(a)
for i in range(length):
if i <= 7:
if a[i].islower() and a[i -3 : i].isupper() and a[i+ 1 : i +4].isupper():
print(a[i],end='')
else:
if a[i].islower() and a[i -3 : i].isupper() and a[i+ 1 : i +4].isupper() and a[i -4].islower() and a[i + 4].islower():
print(a[i],end='')
运行的结果为:
luilovefisdhc
正确结果应该是:
ilovefishc
还请各位大神分析一下我这代码错在哪里,为什么比正确答案多了几个字母:
a[i+ 1 : i +4].isupper()的写法有问题,.isupper()判断单个字符没问题,但字符串就会有歧义。看看小甲鱼的帖子的说明,如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
也就是说,'ABC'.isupper()为True, '#B2'.isupper()也为True.
|
|