Why won't Racing game break when I reach 0 in python

Viewed 30

Not sure the issue. I have the game run a constant random num for 2 runners, but it doesn't break when my runner reaches 0. I've tried flipping around the if Cheetah and Rabbit == 0 print" ? Wins, but it's not working. The numbers just go into the negative

import time
import random

Cheetah = 222
Rabbit = 222

for i in range(222):
    a = random.randint(4, 10)
    if Cheetah == 0:
        print("Cheetah Wins!")
        break
    if a == 4:
        Cheetah = Cheetah - 4
        print(Cheetah, "Cheetah")
    elif a == 5:
        Cheetah = Cheetah - 5
        print(Cheetah, "Cheetah")
    elif a == 6:
        Cheetah = Cheetah - 6
        print(Cheetah, "Cheetah")
    elif a == 7:
        Cheetah = Cheetah - 7
        print(Cheetah, "Cheetah")
    elif a == 8:
        Cheetah = Cheetah - 8
        print(Cheetah, "Cheetah")
    elif a == 9:
        Cheetah = Cheetah - 9
        print(Cheetah, "Cheetah")
    elif a == 10:
        Cheetah = Cheetah - 10
        print(Cheetah, "Cheetah")


    b = random.randint(3, 10)
    if Rabbit == 0:
        print("Rabbit Wins")
        break
    if b == 3:
        Rabbit = Rabbit - 3
        print(Rabbit, "Rabbit")
    elif b == 4:
        Rabbit = Rabbit - 4
        print(Rabbit, "Rabbit")
    elif b == 5:
        Rabbit = Rabbit - 5
        print(Rabbit, "Rabbit")
    elif b == 6:
        Rabbit = Rabbit - 6
        print(Rabbit, "Rabbit")
    elif b == 7:
        Rabbit = Rabbit - 7
        print(Rabbit, "Rabbit")
    elif b == 8:
        Rabbit = Rabbit - 8
        print(Rabbit, "Rabbit")
    elif b == 9:
        Rabbit = Rabbit - 9
        print(Rabbit, "Rabbit")
    elif b == 10:
        Rabbit = Rabbit - 10
        print(Rabbit, "Rabbit")
2 Answers

This is a very specific condition:

if Cheetah == 0:

What happens if Cheetah equals 1 and a equals 4?:

Cheetah = Cheetah - 4

Now Cheetah equals -3. And since you only ever subtract from it, it will never equal 0.

Instead of checking whether the value is exactly zero, check if it's anything less than one:

if Cheetah < 1:

That way it will be satisfied if it's 0 or anything negative.

You have to compare it with <=. Also those if-Statements are obsolete. You can shorten the code massively by doing this:

import time
import random

Cheetah = 222
Rabbit = 222

for i in range(222):
    a = random.randint(4, 10)
    Cheetah = Cheetah - a
    print(Cheetah, "Cheetah")

    b = random.randint(3, 10)
    Rabbit = Rabbit - b
    print(Rabbit, "Rabbit")
    
    if Cheetah <= 0:
        print("Cheetah Wins!")
        break
    
    if Rabbit <= 0:
        print("Rabbit Wins")
        break
Related