![](/img/trans.png)
[英]Issue with keeping the score with loops in rock paper scissors python game
[英]Score function in rock paper scissors python issue and others
我是編程新手,並試圖為我的班級創建最好的 5 RPS 游戲,但遇到了一些問題......繼續,當我不調用 score 函數時,while 循環會在 3 處停止
def gamerps():
import random
YS= 0
CS= 0
rules = {("R", "S"), ("P", "R"), ("S", "P")}
msgs = {"R": "rock beats scissors", "P": "paper covers rock", "S":" scissors cut paper"}
while YS or CS <= 3:
YM = input("R/P/S?")
CM = random.choice(["R", "P", "S"])
if (YM, CM) in rules:
print ("You won! %s" % (msgs[YM]))
YS= YS+1
print (scorerps(YS, CS))
elif (CM, YM) in rules:
print ("You lost! %s" % (msgs[CM]))
CS= CS+1
print (scorerps(YS, CS))
elif YM == CM:
print ("Tie! Go again!")
else:
print ("ERROR, please choose R, P, or S for [R]ock [P]aper [S]cissors")
gamerps()
得分功能本身可以正常工作,並且在應用時確實會在整個 rps 游戲中添加得分,它只會使游戲不再從一開始就停止到 3....
def scorerps(YS, CS):
if YS==CS:
print("scores are tied at", YS, "-", CS, "!")
elif YS >CS:
if YS==3:
print("You won ", YS, "-", CS,"!")
else:
print("You lead ", YS, "-", CS,"!")
elif CS>YS:
if CS==3:
print("Computer won ", CS, "-", YS,"!")
else:
print("computer leads ", CS, "-", YS,"!")
scorerps(1, 2)
檢查while
循環的條件:
while YS or CS <= 3:
意味着只要YS != 0
或CS <= 3
,循環就會運行,這可能不是您想要的。
您可能希望循環一直運行,直到其中一個變量超過3
因此您必須使用and
無論如何:
while YS <= 3 and CS <= 3:
=> 這樣,當其中一個變量> 3
時,條件變為False
請記住,這也意味着您需要贏得4
輪才能贏得比賽,因為<= 3
在一方贏得第 3 輪后仍然為True
。 所以你可能想檢查< 3
我認為問題可能出在你的 while 循環上:
while YS or CS <= 3:
任何不為零的數字都是真的。 你的循環條件相當於
(YS != 0) or (CS <= 3)
如果計算機達到 3 而不是人類,這將中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.