2 回答

TA貢獻1821條經驗 獲得超6個贊
您的 if 語句非常有利于 p1 獲勝。我希望 'p2' 獲勝的示例代碼,因為 p2 具有優越的顏色:
colour1 = 'b'
colour2 = 'r'
num1 = 2
num2 = 1
if(colour1 == "r")and(colour2 == "b"):
print("p1")
elif(colour1 == "b")and(colour2 == "y"):
print("p1")
elif(colour1 == "y")and(colour2 == "r"):
print("p1")
elif num1 > num2:
print("p1")
else:
print("p2")
>>> p1
玩家 1 在這里獲勝,因為沒有檢查玩家 2 是否具有更好的顏色。要正確檢查正確的獲勝者,您可以將 if 語句修改為以下邏輯:
colour1 = 'b'
colour2 = 'r'
num1 = 2
num2 = 1
if (colour1 == "r" and colour2 == "b") or (colour1 == "b" and colour2 == "y") or (colour1 == "y" and colour2 == "r"):
print("p1")
elif (colour2 == "r" and colour1 == "b") or (colour2 == "b" and colour1 == "y") or (colour2 == "y" and colour1 == "r"):
print("p2")
elif num1 > num2:
print("p1")
else:
print("p2")
>>> p2
您可以在其中將最后一個 elif 和 else 重構為以下代碼行:
colour1 = 'b'
colour2 = 'r'
num1 = 2
num2 = 1
if (colour1 == "r" and colour2 == "b") or (colour1 == "b" and colour2 == "y") or (colour1 == "y" and colour2 == "r"):
print("p1")
elif (colour2 == "r" and colour1 == "b") or (colour2 == "b" and colour1 == "y") or (colour2 == "y" and colour1 == "r"):
print("p2")
else:
print("p1" if num1 > num2 else "p2")
>>> p2

TA貢獻1887條經驗 獲得超5個贊
首先,玩你的游戲很有趣。其次,正如我所懷疑的,錯誤總是出在多個 if 語句中,這特別棘手,因為您認為自己是徹底的,并且在 ned 中它會咬你!
為了清楚起見,讓我們舉個例子:
p1Card = y8 ,p2Card = b1
讓我們運行它:
if(colour1 == "r")and(colour2 == "b") # False
winner = ("p1")
elif(colour1 == "b")and(colour2 == "y")# False
winner = ("p1")
elif(colour1 == "y")and(colour2 == "r")# False
winner = ("p1")
elif num1 > num2: # True
winner = ("p1")
else:
winner = ("p2")
因此,贏家 P1 而它應該是 P2。有多種方法可以避免這種情況,但這應該留給您自己解決:)
添加回答
舉報