简体   繁体   中英

multiple if is not checking conditions

I want to check multiple conditions in my program, but for some reasons it's not working. Here is my code:

def removingStrawsComputer():
    removedNumber=random.randint(1,3)
    global strawsNumber
    if strawsNumber==3:
       removedNumber=random.randint(1,2)
       if strawsNumber==2:
          removedNumber==1
    strawsNumber-=removedNumber 
    return strawsNumber

When executing my code, even when strawsNumber = 3, random.randint sometimes select 3.. Any ideas what I am doing wrong? Any help would be very appreciated.. :)

Edit: this my entire code, it is a NIM game. With multiple if's I am trying to avoid that if remaining straws are 3, computer selects 3 and lose right away..

player1=raw_input("Iveskite savo varda: ")
player2="Kompiuteris"
howMany=0
gameover=False
strawsNumber=random.randint(10,20)


def removingStrawsComputer():
    removedNumber=random.randint(1,3)
    global strawsNumber
    if strawsNumber==3:
       removedNumber=random.randint(1,2)
    if strawsNumber==2:
       removedNumber==1
    strawsNumber-=removedNumber 
    return strawsNumber

def removingStrawsHuman():
    global strawsNumber
    strawsNumber-=howMany
    return strawsNumber

def humanLegalMove():
    global howMany
    legalMove=False
    while not legalMove:
        print("Ejima atlieka ",player1)
        howMany=int(input("Kiek objektu nori paimti?(nuo 1 iki 3) ")) 
        if  howMany>3 or howMany<1:
            print("Iveskite skaiciu nuo 1 iki 3")
        else:
            legalMove=True
    while howMany>strawsNumber:
        print("Ivestas skaicius didesnis nei liko objektu")
        howMany=int(input("Kiek objektu nori paimti?(nuo 1 iki 3) "))
    return howMany

def checkWinner(player):
    if strawsNumber==0:
        print(player," laimejo.")
        global gameover
        gameover=True
        return gameover

def resetGameover():
    global gameover
    gameover=False
    return gameover

def game():
    global strawsNumber
    strawsNumber=random.randint(10,20)
    print("Objektu skaicius ",strawsNumber)
    while gameover==False:
        print("Ejima atlieka ",player2,". Objektu liko: ",removingStrawsComputer())
        checkWinner(player1)
        if gameover==True:
            break
        humanLegalMove()        
        print("Objektu liko: ",removingStrawsHuman())
        checkWinner(player2)

def playAgain():
    answer=raw_input("Ar norite zaisti dar karta?(y/n)")
    resetGameover()
    while answer=="y":
        game()
        answer=raw_input("Ar norite zaisti dar karta?(y/n)")
    else:
        print("Aciu uz zaidima!")

game()
playAgain()

I think this is what you're looking for:

def removingStrawsComputer():
    removedNumber=random.randint(1,3)
    global strawsNumber
    if strawsNumber==1 and random.randint(0,1)==1:
         return 0
    strawsNumber-=removedNumber
    if strawsNumber<1:
         strawsNumber=1
    return strawsNumber

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM