徐小龙 发表于 2020-5-20 19:37:08

python 20讲课后练习

请用已学过的知识编写程序,找出藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
    a) 每位密码为单个小写字母
    b) 每位密码的左右两边均有且只有三个大写字母

string='''KpjvGnFipjswgjetRtniMagakbCXAjpzWTtMlgZGCJwGyglpcLebrKWhgwJfWV
qGifWNEpCtjuejHoyVCdIxzMYGnfoslgTNAJdtVBWDVoGLzHSAVBTnhNIvAOExQNiJOIPPiHkdaRbfaP
ixDDoCDOOeAqvQJFxLWDICfGmuf'''
length=len(string)
for i in (4,length-5):
    if string.islower() and string.islower() and string.isupper() and string.isupper() and string.islower():
      print(string[i,sep='',end='')


哪有问题,程序没报错,就是运行之后完全没结果
      

Twilight6 发表于 2020-5-20 19:39:33

字符串有问题...没这么短吧?

KevinHu 发表于 2020-5-20 19:41:18

这里:print(string

为什么没有右中括号?

Twilight6 发表于 2020-5-20 19:45:06

你的代码也有问题,是打印不出来的东东的

Twilight6 发表于 2020-5-20 19:50:51

小甲鱼的题意是:
本身是小写字母,
从上一个小写字母到本身有且仅有3个大写字母 和 从本身字母到下一个小写字母之间也有且只有3个大写字母

如果你想用切片的方法可以参考下下面代码:
str1 = """小甲鱼准备的txt文件内容"""
a = []   # 用于统计小写字母的索引值
b = 0    # 初始化b的数值

for i in str1:# 遍历出所有小写字母的下标,添加入 a 列表,用于为下面索引做准备条件
    if i.islower():
      a.append(str1.index(i,b,len(str1)))
    b += 1

c = 1   # 初始化代表第第二个 小写字母的下标
b = 0   # 初始化b 用于当作开始或上一个小写字母的下标

count_left = 0# 用于计算小写字母左边的大写字母数量
count_right = 0 # 用于计算小写字母右边边的大写字母数量

while c+1 < len(a):# 只需要c的索引大于 a 的列表长度即可退出循环

    d = str1]   # 记录小写字母左边的所有字母
    f = str1[(a+1):a]# 记录小写字母右边的所有字母

    for i in d:   # 遍历左边的大写字母出现的次数
      if i.isupper():
            count_left += 1
    for i in f:   # 遍历右边的大写字母出现的次数
      if i.isupper():
            count_right += 1

    if count_left == count_right == 3: # 如果等于 3 即是符合题意 打印字母
      print(str1],end='')

    count_right,count_left = 0,0# 重新初始化记数参数,为下一次循环计数做准备

    b = a # b为赋值为下一个小写字母的索引值

    c += 1 # c为b的下一个小写字母的索引
页: [1]
查看完整版本: python 20讲课后练习