請問我這個程式碼是那邊有問題
為什麼其他牌型都能判斷出來
就只有同花沒辦法判斷
比如說我輸入
10D AD KD QD 8D
她要輸出
5
附上其他牌行圖片為例
def cardPoint(playerCardPoint):
pork=['A','2','3','4','5','6','7','8','9','10','J','Q','K']
points=['14','2','3','4','5','6','7','8','9','10','11','12','13']
index=pork.index(playerCardPoint)
return int(points[index])
def straight(card): #11, 12, 13, 14, 2
card.sort() #排序
if(max(card)==14 and min(card)!=10): #有14沒有10表示會跨連續
for i in range(5):#跨連續小於10均加 13後可連續
if card[i]<10:
card[i]=card[i]+13
card.sort()#排序
for i in range(4):#判斷連續數字
if card[i]!=card[i+1]-1:
return 0
return 1
def getGrade(card, flow):
#紀錄幾張卡花色相同
f = [0, 0, 0, 0, 0, 0]
#紀錄幾張卡點數相同
p = [0, 0, 0, 0, 0, 0]
#檢查幾張卡花色相同
for c in ['S', 'H', 'D', 'C']:
f[flow.count(c)]=f[flow.count(c)]+1
#檢查幾張卡點數相同
for i in range(2, 15):
p[card.count(i)]=p[card.count(i)]+1
if straight(card)==1 and f[5]==1: #同花順
return 8
if p[4]==1:#四條
return 7
if p[3]==1 and p[2]==1: #葫蘆
return 6
if (f[5]==1): #同花
return 5
if straight(card)==1: #順
return 4
if p[3]==1: #三條
return 3
if p[2]==2:#兩對
return 2
if p[2]==1: #一對
return 1
return 0 #散牌
def compute(cards):
p = [cardPoint(c[0]) for c in cards]
f = [c[1] for c in cards]
print(getGrade(p,f))
def test():
print(getGrade([13, 2, 6, 4, 14], ['S','H','S','D','C'])) #0
print(getGrade([ 8, 8, 6, 4, 2], ['S','S','S','D','H'])) #1
print(getGrade([13, 13, 6, 14, 14], ['S','S','S','D','C'])) #2
print(getGrade([13, 13, 6, 14, 13], ['S','S','S','D','C'])) #3
print(getGrade([ 7, 8, 6, 4, 5], ['S','S','S','D','C'])) #4
print(getGrade([14, 8, 6, 4, 5], ['S','S','S','S','S'])) #5
print(getGrade([13, 13, 14, 14, 13], ['D','D','D','D','D'])) #6
print(getGrade([13, 13, 13, 14, 13], ['D','D','D','D','D'])) #7
print(getGrade([12, 2, 13, 3, 14], ['S','S','S','S','S'])) #8
N1,N2,N3,N4,N5=map(str,input().split())
compute([N1,N2,N3,N4,N5])