找出符合規律的密碼


1. 請用已學過的知識編寫程序,找出給定長字符串中的密碼,密碼的埋藏點符合以下規律:Y5d|MAp
Y5d|MAp
    a) 每位密碼為單個小寫字母

    b) 每位密碼的左右兩邊均有且只有三個大寫字母

 

Python

3um7_0 Pzy"pCV#RdwA,21^[t

  1. str1 = '''
  2. YnaJfNLqJgcxRjBmRpOYgNpZOpzMOCVIRiiXdIqqFxPJhQqJadKiCesOsZoWGWbbQSVRZUlbNZdzeUTE
  3. nhdMSCKCPbpWZguZHGkLiWCisjqnaLbJpbRFAHPjGbHOXKZQXoQQZohmVqjTcdWNhXEjPlLKnjpwbMPQ
  4. ybzDvGgkybXtbDmjQuyOrMrcYGRGGfuuPXzieaetSBidnSRPsLaXKGcxDkXmHbqMWZJXsQkwtojlxOeU
  5. KSIFdVvNEnOUmIZDdlnwtJcPBlcpRWNTazpzgItwJotSLWZruzrMlSGASMWDwOqTpeYYHaTHCCurPdwB
  6. AWzUtwblZXNrBYdjUoDacvmRVURqOzUPlnFISsZMFPtthnDHSsFgkYfsMtXFuNPhLTleWVrmelyFaemo
  7. bVIhEAxNwOUDQCOCDIBHsQlFxCbHErKiBsvQNjuIGnIzZiwoVTdUZnucSaKdHrxJeGQfTawFJefGJFFa
  8. GHzELfnGBmkZyorbbDDwhvEVeIYIGLPMEuZduqFjbeWbVfzVIRZNXwPLgcYUsevuhEQXfYcJshYnJaWz
  9. iqvlswEBRKNYEJidlzdWnQJpBtyjHYVpkQGzdYkeREqjhmmnUIbGZVnwwaMKqgXfURSICNxdteUSGhGZ
  10. UEEFhWRoTKGRwFmPpZPOsalsrNOlkTdXqGKoWlWkqJvYYrtLiTfhdItMbbhdumSYgCcQVUARnYFWkCsC
  11. jElZxrQHIlbTHFLOnrutlvyxzaSIdkJgeyMUnUmtXfnaIedbAInAuQssOQqBTLbvFRiqKqUSdUEmcRmN
  12. LvAxlgliymfbjTwDSqNTLcAEIerzpUShNKkuehciEAYeGJOFFcOvurJFUyfZhQqzfaneiBcrPhaphSCB
  13. StQiJvtoPhHcLUbriDUIfifVFnNtJfGlmcbQJSXsZfVjpbqnkMllUmHzLvEuSarSlNlNHsWvYlfhjMEA
  14. epYTjoRGZeAAtURFeDfDxTYmOmONuQQBdcdncFGjhHmKlwqmUWoXuIXIxaaXnNThgPGtIlynrUIPLQTG
  15. xXhattDrfBGbZRveKbgjzxJLdYREQlMeLtcIEUoyJocdAfUbymxuFLVjGkOQniiPParqoyQYfDYAQTkM
  16. WLicLxpEFkBbwlKrTyYilKTtYkpVGxtOjYmcBDOrwFhFiGutmpTyTarUbVUeSevBTdaPDpjRkaEmLJMg
  17. WsMhSGfIcBChcqrRKgKpjvGnFipjswgjetRtniMagakbCXAjpzWTtMlgZGCJwGyglpcLebrKWhgwJfWV
  18. qGifWNEpCtjuejHoyVCdIxzMYGnfoslgTNAJdtVBWDVoGLzHSAVBTnhNIvAOExQNiJOIPPiHkdaRbfaP
  19. ixDDoCDOOeAqvQJFxLWDICfGmufyxmaMshbvcrtjqqVtffZTnbtCOQfzRMGwOQEKaAmSWjnYdNgvdkmd
  20. dQmaKZSdqKNrnvJlcyVMKuNWmuoOeyKecgjXbmSqnpjwJEaDYoehEklEgJyiksGxdEKgfYRXQecRZgfe
  21. qKWGc
  22. '''
  23. countA = 0  # 統計前邊的大寫字母
  24. countB = 0  # 統計小寫字母
  25. countC = 0  # 統計后邊的大寫字母
  26. length = len(str1)
  27. for i in range(length):
  28.     if str1[i] == '\n':
  29.         continue
  30.     """
  31.     |如果str1[i]是大寫字母:
  32.     |-- 如果已經出現小寫字母:
  33.     |-- -- 統計后邊的大寫字母
  34.     |-- 如果未出現小寫字母:
  35.     |-- -- 清空后邊大寫字母的統計
  36.     |-- -- 統計前邊的大寫字母
  37.     """
  38.     if str1[i].isupper():
  39.         if countB:
  40.             countC += 1
  41.         else:
  42.             countC = 0
  43.             countA += 1
  44.     """
  45.     |如果str1[i]是小寫字母:
  46.     |-- 如果小寫字母前邊不是三個大寫字母(不符合條件):
  47.     |-- -- 清空所有記錄,重新統計
  48.     |-- 如果小寫字母前邊是三個大寫字母(符合條件):
  49.     |-- -- 如果已經存在小寫字母:
  50.     |-- -- -- 清空所有記錄,重新統計(出現兩個小寫字母)
  51.     |-- -- 如果該小寫字母是唯一的:
  52.     |-- -- -- countB記錄出現小寫字母,准備開始統計countC
  53.     """
  54.     if str1[i].islower():
  55.         if countA != 3:
  56.             countA = 0
  57.             countB = 0
  58.             countC = 0
  59.         else:
  60.             if countB:
  61.                 countA = 0
  62.                 countB = 0
  63.                 countC = 0
  64.             else:
  65.                 countB = 1
  66.                 countC = 0
  67.                 target = i
  68.     """
  69.     |如果前邊和后邊都是三個大寫字母:
  70.     |-- 如果后邊第四個字母也是大寫字母(不符合條件):
  71.     |-- -- 清空記錄B和C,重新統計
  72.     |-- 如果后邊僅有三個大寫字母(符合所有條件):
  73.     |-- -- 打印結果,並清空所有記錄,進入下一輪統計
  74.     """
  75.     if countA == 3 and countC == 3:
  76.         if i+1 != length and str1[i+1].isupper():
  77.             countB = 0
  78.             countC = 0
  79.         else:
  80.             print(str1[target], end='')
  81.             countA = 3
  82.             countB = 0
  83.             countC = 0

q


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM