1003 我要通过! (20 分) python版答案(全部代码都有注释)
生活随笔
收集整理的這篇文章主要介紹了
1003 我要通过! (20 分) python版答案(全部代码都有注释)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
寫這個代碼我真的費了好大功夫,代碼注釋寫的很詳細,功能其實也很完整,具體咋理解題我就不寫了,兄弟們自己看看吧。一定要把題讀明白!!!!!!!!!
a = eval(input())#a拿來輸入字符串個數(shù) c=[]#建一個空列表存字符串 for i in range(a):dd=input()c.append(dd)#把字符串都存進去 for i in range(a):b =c[i]stop=False#寫一個flag用于如果字符串有除了P A T 以外字符,直接輸出停止for j in range(len(b)):if b[j] !="P" and b[j] !="A" and b[j] !="T":print("NO")stop=True#這個其實很關(guān)鍵哈,因為要跳出兩層循環(huán)而并非只是對字符串每一個字符的遍歷break#break先終止對字符串的變量if stop==True:continue#再用continue跳出對這個字符串的判斷,因為已經(jīng)要輸出no了,直接開始循環(huán)下一個,用continueb=list(b)#把單個字符串轉(zhuǎn)成列表才能執(zhí)行下邊的函數(shù)if 'P' not in b or 'A' not in b or 'T' not in b:print("NO")continue#這點很關(guān)鍵哈,如果字符串里沒有p a t 中的某個,就不能執(zhí)行下標的三條命令,從而就會報錯,嗚嗚嗚本來都寫好過了好久才發(fā)現(xiàn)P=[i for i, x in enumerate(b) if x == 'P']#這仨是把字符串中p a t 的下標集合找出來A = [i for i, x in enumerate(b) if x == 'A']T = [i for i, x in enumerate(b) if x == 'T']A1 = b.index('P')A2 = b.index('T')A3 = b.index('A')#找出下標,其實有點多余哈這三句d1=0#d1是p之前a的個數(shù)d2=0#d2是p t之間a的個數(shù)d3=0#d3是t之后a的個數(shù)if len(P)>1 or len(T)>1 or A1>A2 :#P T 個數(shù)超過1,直接結(jié)束print('NO')continuefor i in range(len(A)):###########這個for循環(huán)直接把' P T '這樣的字符串三個位置的A的個數(shù)找到if A[i]<A1:d1=d1+1elif A[i]>A1 and A[i]<A2:d2=d2+1elif A[i]>A2:d3=d3+1if (d1==d3 and d2==1) or (d1*d2==d3):#判斷條件(d1==d3 and d2==1)是第二個要求,(d1*d2==d3)是第三個要求,這個建議自己理解,理解不透徹解題解不明白的print('YES')else:print('NO')總結(jié)
以上是生活随笔為你收集整理的1003 我要通过! (20 分) python版答案(全部代码都有注释)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python进制转化大全
- 下一篇: 密码学赛后技术总结 小片段啦