1. 請用已學過的知識編寫程序,找出給定長字符串中的密碼,密碼的埋藏點符合以下規律:Y5d|MAp
Y5d|MAp
a) 每位密碼為單個小寫字母
b) 每位密碼的左右兩邊均有且只有三個大寫字母
Python
3um7_0 Pzy"pCV#RdwA,21^[t
- str1 = '''
- YnaJfNLqJgcxRjBmRpOYgNpZOpzMOCVIRiiXdIqqFxPJhQqJadKiCesOsZoWGWbbQSVRZUlbNZdzeUTE
- nhdMSCKCPbpWZguZHGkLiWCisjqnaLbJpbRFAHPjGbHOXKZQXoQQZohmVqjTcdWNhXEjPlLKnjpwbMPQ
- ybzDvGgkybXtbDmjQuyOrMrcYGRGGfuuPXzieaetSBidnSRPsLaXKGcxDkXmHbqMWZJXsQkwtojlxOeU
- KSIFdVvNEnOUmIZDdlnwtJcPBlcpRWNTazpzgItwJotSLWZruzrMlSGASMWDwOqTpeYYHaTHCCurPdwB
- AWzUtwblZXNrBYdjUoDacvmRVURqOzUPlnFISsZMFPtthnDHSsFgkYfsMtXFuNPhLTleWVrmelyFaemo
- bVIhEAxNwOUDQCOCDIBHsQlFxCbHErKiBsvQNjuIGnIzZiwoVTdUZnucSaKdHrxJeGQfTawFJefGJFFa
- GHzELfnGBmkZyorbbDDwhvEVeIYIGLPMEuZduqFjbeWbVfzVIRZNXwPLgcYUsevuhEQXfYcJshYnJaWz
- iqvlswEBRKNYEJidlzdWnQJpBtyjHYVpkQGzdYkeREqjhmmnUIbGZVnwwaMKqgXfURSICNxdteUSGhGZ
- UEEFhWRoTKGRwFmPpZPOsalsrNOlkTdXqGKoWlWkqJvYYrtLiTfhdItMbbhdumSYgCcQVUARnYFWkCsC
- jElZxrQHIlbTHFLOnrutlvyxzaSIdkJgeyMUnUmtXfnaIedbAInAuQssOQqBTLbvFRiqKqUSdUEmcRmN
- LvAxlgliymfbjTwDSqNTLcAEIerzpUShNKkuehciEAYeGJOFFcOvurJFUyfZhQqzfaneiBcrPhaphSCB
- StQiJvtoPhHcLUbriDUIfifVFnNtJfGlmcbQJSXsZfVjpbqnkMllUmHzLvEuSarSlNlNHsWvYlfhjMEA
- epYTjoRGZeAAtURFeDfDxTYmOmONuQQBdcdncFGjhHmKlwqmUWoXuIXIxaaXnNThgPGtIlynrUIPLQTG
- xXhattDrfBGbZRveKbgjzxJLdYREQlMeLtcIEUoyJocdAfUbymxuFLVjGkOQniiPParqoyQYfDYAQTkM
- WLicLxpEFkBbwlKrTyYilKTtYkpVGxtOjYmcBDOrwFhFiGutmpTyTarUbVUeSevBTdaPDpjRkaEmLJMg
- WsMhSGfIcBChcqrRKgKpjvGnFipjswgjetRtniMagakbCXAjpzWTtMlgZGCJwGyglpcLebrKWhgwJfWV
- qGifWNEpCtjuejHoyVCdIxzMYGnfoslgTNAJdtVBWDVoGLzHSAVBTnhNIvAOExQNiJOIPPiHkdaRbfaP
- ixDDoCDOOeAqvQJFxLWDICfGmufyxmaMshbvcrtjqqVtffZTnbtCOQfzRMGwOQEKaAmSWjnYdNgvdkmd
- dQmaKZSdqKNrnvJlcyVMKuNWmuoOeyKecgjXbmSqnpjwJEaDYoehEklEgJyiksGxdEKgfYRXQecRZgfe
- qKWGc
- '''
- countA = 0 # 統計前邊的大寫字母
- countB = 0 # 統計小寫字母
- countC = 0 # 統計后邊的大寫字母
- length = len(str1)
- for i in range(length):
- if str1[i] == '\n':
- continue
- """
- |如果str1[i]是大寫字母:
- |-- 如果已經出現小寫字母:
- |-- -- 統計后邊的大寫字母
- |-- 如果未出現小寫字母:
- |-- -- 清空后邊大寫字母的統計
- |-- -- 統計前邊的大寫字母
- """
- if str1[i].isupper():
- if countB:
- countC += 1
- else:
- countC = 0
- countA += 1
- """
- |如果str1[i]是小寫字母:
- |-- 如果小寫字母前邊不是三個大寫字母(不符合條件):
- |-- -- 清空所有記錄,重新統計
- |-- 如果小寫字母前邊是三個大寫字母(符合條件):
- |-- -- 如果已經存在小寫字母:
- |-- -- -- 清空所有記錄,重新統計(出現兩個小寫字母)
- |-- -- 如果該小寫字母是唯一的:
- |-- -- -- countB記錄出現小寫字母,准備開始統計countC
- """
- if str1[i].islower():
- if countA != 3:
- countA = 0
- countB = 0
- countC = 0
- else:
- if countB:
- countA = 0
- countB = 0
- countC = 0
- else:
- countB = 1
- countC = 0
- target = i
- """
- |如果前邊和后邊都是三個大寫字母:
- |-- 如果后邊第四個字母也是大寫字母(不符合條件):
- |-- -- 清空記錄B和C,重新統計
- |-- 如果后邊僅有三個大寫字母(符合所有條件):
- |-- -- 打印結果,並清空所有記錄,進入下一輪統計
- """
- if countA == 3 and countC == 3:
- if i+1 != length and str1[i+1].isupper():
- countB = 0
- countC = 0
- else:
- print(str1[target], end='')
- countA = 3
- countB = 0
- countC = 0
q
