|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
a) 每位密码为单个小写字母
b) 每位密码的左右两边均有且只有三个大写字母
- def find_keyword(str1):
- list1=[]
- end=len(str1)-4
- for i in range(4,end):
- if (str1[i]+str1[i-4]+str1[i+4]).islower():
- if (str1[i-3:i]+str1[i+1:i+4]).isupper():
- print(i)
- list1.append(str1[i])
- return list1
- str1='''..........................................'''
- str1='' . join(str1 . split('\n'))
- print(find_keyword(str1))
复制代码
这个是我之前写的代码,想用filter方法改进的思路是:符合条件的密码为‘’aAAAaAAAa‘’格式,filter方法过滤的规则是小写字母,然后如果过滤出来的小写字母的位置是【0】,【4】,【8】那么中间的‘’a‘’就是其中一个密码字符
实现难点:
1.filter()返回的是可迭代对象的值(不是所在位置)
2.islower()这个不能直接拿来作为函数用?要先def一个判断小写字母的函数出来?
以上问题请各位大神解答~~
可以这样:
- >>> list1 = [1, 2, 3, 4, 5]
- >>> list2 = list(zip(range(len(list1)), list1))
- >>> list3 = list(filter(lambda x: x[1] % 2 == 0, list2))
- >>> list3
- [(1, 2), (3, 4)]
- >>> # 第一个元素是在原列表的位置,第二个是值
复制代码
|
|