簡體   English   中英

石頭剪刀布python問題等中的評分函數

[英]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 != 0CS <= 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM