123456543212345 发表于 2020-2-2 22:05:31

零基础学Python课后题

第二十课的最后一题;找出隐藏的密码
1.每位密码为单个小写字母
2.密码前后有且只有三位大写字母

为什么我这个程序看起来和答案一模一样,但输入这个字符串的时候,本来输出应该是dg,结果却什么都不显示?


str1='''SSSdFLL FKFgRRR'''
length = len(str1)
count1=0
count2=0
count3=0
target=0
for i in range(length):
    if str1 == ' ':
      continue
    if str1.isupper():
      if count2 == 1:
            count3 +=1
            count1=0
      else:
            count1 +=1
      continue
    if count1 == 3 and str1.islower():
      target = i
      count1 = 0
      count2 = 1
      continue
    ifstr1.islower() and count3 == 3:
      print('密码为%s'%str1)
    count1=0
    count2=0
    count3=0

zltzlt 发表于 2020-2-2 22:07:00

没看懂你的逻辑。

123456543212345 发表于 2020-2-3 09:32:57

就是设三个值count123来统计

1.当没出现小写字母时,count2=0,此时检测出大写字母count1加1
2.每在三个大写字母后出现一个小写字母时,将count2置1
3.出现三个大写加一个小写字母后,每出现一个大写字母,count3加1

当count3 等于3时,就证明这个小写字母为密码中的一个字符串,记录位置为target

傻眼貓咪 发表于 2021-9-7 22:13:19

str1 = "ABSaDKSbRIHcRHGcdDIF"
arr = ''.join( for i in range(3, len(str1)-3) if all() in range(65, 91)) for j in range(i-3, i+4) if i != j])])
print(arr)abc
页: [1]
查看完整版本: 零基础学Python课后题