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