Untitled

 avatar
unknown
python
2 years ago
2.1 kB
8
Indexable
class Card: # 定義Class
    def __init__(self,suit, rank):
        self.suit=suit
        self.rank=rank


Suit=input().split(',') # 輸入花色
Rank=input().split(',') # 輸入點數

cards=[0]*5
for i in range(5):
    cards[i]=Card(Suit[i],Rank[i]) # 把花色與點數包成Crad放入cards

ans=0
# rule A
for i in range(5):
    if cards[i].rank=='A': # 打出一張A得5分
        ans+=5

# rule B
for i in range(5):
    for j in range(i+1, 5):
        if cards[i].rank == cards[j].rank: # 打出一對得10分
            ans+=10

# rule C
same_suit = True
for i in range(1,5):
    if cards[i-1].suit!=cards[i].suit: # 判斷有沒有同花色
        same_suit = False
if same_suit: # 打出同花得30分
    ans+=30

# rule D
sorted_rank=[0]*5 
for i in range(5):
    if cards[i].rank == 'A': 
        sorted_rank[i]= 1
    elif cards[i].rank == 'J':
        sorted_rank[i]= 11
    elif cards[i].rank == 'Q':
        sorted_rank[i]= 12
    elif cards[i].rank == 'K':
        sorted_rank[i]= 13
    else:
        sorted_rank[i]=int(cards[i].rank)

sorted_rank.sort() # 把所有點數排序
not_consecutive = 0
for i in range(1,5):
    if sorted_rank[i-1]+1 != sorted_rank[i]: # 判斷有沒有連續
        not_consecutive+=1

# 如果都連續或者有兩張不連續但第一張是1且最後一張是K
if not_consecutive==0 or (not_consecutive==1 and sorted_rank[0]==1 and sorted_rank[4]==13):
    ans+=50 # 打出順子得50分

# rule E
if (sorted_rank[0]==sorted_rank[2] and sorted_rank[3]==sorted_rank[4] and sorted_rank[0]!=sorted_rank[4]) or \
   (sorted_rank[0]==sorted_rank[1] and sorted_rank[2]==sorted_rank[4] and sorted_rank[0]!=sorted_rank[4]):
    ans+=80 # 打出葫蘆得80分

# rule F
if sorted_rank[0]==sorted_rank[4]: # 如果5張的點數都一樣
    ans+=100*5 # C5取4
elif sorted_rank[0]==sorted_rank[3] or sorted_rank[1]==sorted_rank[4]:
    ans+=100 # 打四條得100分

# rule G
if same_suit: # 如果桐花
    if not_consecutive==0 or (not_consecutive==1 and sorted_rank[0]==1 and sorted_rank[4]==13): # 且是順子
        ans+=300 # 打出同花順得300分

print(ans) # 印出總分
Editor is loading...