游戲Undercut是一個紙牌游戲,兩位選手各有編號1-5的5張牌。每一輪中每個玩家選擇一張牌,然后依次出示各自的牌。如果兩張牌數相同,則沒有比分。另有兩種情況:兩張牌的數字只相差1(這就是所謂的Undercut游戲),或者兩張牌數字相差值超過1。在后一種情況下,出示較大數字牌的人獲得自己的點數。在Undercut情況下,出示較小數字牌的人獲得兩張牌的點數之和。當兩張牌分別是1和2時例外,出示較小數字牌的人獲得6點(而不是只有3點)。每一輪之后,把牌退給選手,讓他們玩另一輪比賽。
例如:
現在有5輪比賽,A的點數(以此順序)是 5,3,1,3,5;B的點數是3,3,3,3,4.每輪比賽的分數將是A得5點、0點、0點、0點、0點;B得0點、0點、3點、0點、9點。總比分A得5點,B得12點。題目給出玩家雙方的牌,編程計算玩家的最終得分輸入(輸入文件A1_input.txt):
將有多個輸入實例,每個實例是一場比賽。每場比賽第一行是一個整數n(當n為0時表示輸入結
束)。接下來有兩行,每行分別包含n個1-5之間的整數,分別代表玩家n輪中的每張牌。第一張是A的牌,第二行是B的牌。輸出:對每個輸入實例輸出一行,輸出格式為:
A has a points. B has b points.其中,a為A得的點數,b為B得的點數。
輸入示例:
5
5,3,1,3,5
3,3,3,3,4
4
2,3,1,1
1,5,5,5
0
輸出示例:
A has 5 points. B has 12 points.
A has 0 points. B has 21 points.
def judge(a_cards,b_cards):num=len(a_cards) #獲取卡牌count 執行循環ascore=0bscore=0for i in range(0,num):anum=int(a_cards[i])bnum=int(b_cards[i])if(anum == 2 and bnum == 1):bscore += 6elif(anum==1 and bnum==2):ascore += 6elif(anum!=bnum):if(anum>bnum):ascore += anumelse:bscore += bnumreturn ascore,bscore
with open('E:\文件\A1_input.txt','r') as f:fout=open('E:\文件\output.txt','w')while True:cn=eval(f.readline())if cn==0:breaka_cards=f.readline()b_cards=f.readline()ScoreA,ScoreB=judge(list(a_cards.split(',')),list(b_cards.split(',')))fout.write(f'A has {ScoreA} points. B has {ScoreB} points.\n')fout.close()