python calculations are being weird
<p>Am having some problems with my code. I need to limit an input by multiples of 5 under a changing maximum.</p>

<p>With what I have now it should work but it isn't. What have i missed?</p>

<pre><code>while True:
        print("Place your bet. Must be a multiple of 5")
        posBets = range(5, (balance + 1), 5)
        bet = str(input())
        if bet == posBets:
            print("You have bet $" + str(bet))
            loop = 0
        elif bet != posBets:
                print("Please bet an amount that is a multiple of 5, or an amount that is within your balance")
                print("Press enter to continue")
                input()
                loop = 1
        if not(loop == 1):break #Exit loop
</code></pre>

<p>there is also a problem with a loop. When im trying to get my new value it needs to subtract from the original value and send it back to the main function however it always adds it then doenst change the value that it sends to the main</p>

<pre><code>win = 1
lose = 2
tie = 3
r = win or lose or tie
print("Battle shall now commence")
print("Choose an attack")
print("The attacks you can use are as follows")
print("(1)Fury Punch")
print("(2)Punishment kick")
print("(3)Sword of justice")
print("(4)Shuriken of Vengence")
print("(5)Numchucks of Anger")
print("(6)Knife of Freedom")
attack = int(input())
while attack &lt; 1 or attack &gt; 6:
    print("please input either: 1, 2, 3, 4, 5 or 6")
    attack = int(input())
winLose(attack, win, lose, tie,)
if r == win:
    newBalance = int(balance) + int(bet)
elif r == lose:
    newBalance = int(balance) - int(bet)
else:
    if r == tie:
        balance = newBalance 
print("Your Balance is $" + str(newBalance))
return(bet, newBalance)
</code></pre>

<p>here is the full code
thank you for any help</p>

<pre><code>def attack1(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have lost")
    r = lose
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have lost")
    r = lose
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have won. Good job")
    r = win
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have won. Good job")
    r = win
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have lost")
    r = lose
return(r)

def attack2(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have won. Good job")
    r = win
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have lost")
    r = lose
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have lost")
    r = lose
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have won. Good job")
    r = win
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have lost")
    r = lose
return(r)

def attack3(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have won. Good job")
    r = win
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have won. Good job")
    r = win
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have lost")
    r = lose
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have lost")
    r = lose
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have won. Good job")
    r = win
return(r)

def attack4(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have lost")
    r = lose
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have won. Good job")
    r = win
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have won. Good job")
    r = win
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have lost")
    r = lose
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have won. Good job")
    r = win
return(r)

def attack5(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have lost")
    r = lose
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have lost")
    r = lose
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have won. Good job")
    r = win
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have won. Good job")
    r = win
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("it is a tie there is no winner")
    r = tie
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have lost")
    r = lose
return(r)

def attack6(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have won. Good job")
    r = win
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have won. Good job")
    r = win
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have lost")
    r = lose
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have lost")
    r = lose
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have won. Good job")
    r = win
else:
    print("Your opponent has choosen Knife of Freedom")
    print("it is a tie there is no winner")
    r = tie
return(r)

def winLose(attack, win, tie, lose):
import random
pcMove = random.randint(1, 6);
while pcMove == 0:
    pcMove = random.randint(1, 6);
if attack == 1:
    print("You have choosen to use Fury Punch. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack1(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 2:
    print("You have choosen to use Punishment Kick. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack2(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 3:
    print("You have choosen to use Sword of Justice. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack3(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 4:
    print("You have choosen to use Shuriken of Vengence. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack4(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 5:
    print("You have choosen to use Numchucks of Anger. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack5(pcMove, win, tie, lose)
    r = win or lose or tie
else: 
    print("You have choosen to use Knife of Freedom. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack6(pcMove, win, tie, lose)
    r = win or lose or tie
return(r)

def instructions(name):
print("Welcome to Ultimate Ninja Combat!!!" + name)
print("You will be playing against the computer, and the winner gets bragging rights. Before each match you will have to place a bet which must be an amount which must be a multiple of 5. if you win you get that amount back from the computer. if you lose you lose the money. if your amount drops to zero you will be removed from the game")
print("you will start with 100 dollars use it wisely")
print("Each turn you will be asked to pick one of the following attacks")
print("(1)Fury Punch")
print("(2)Punishment kick")
print("(3)Sword of justice")
print("(4)Shuriken of Vengence")
print("(5)Numchucks of Anger")
print("(6)Knife of Freedom")
print("choose wisely")
print("  ")
print("  ")
print("  ")

def gameplay(balance):
while True:
    print("Place your bet. Must be a multiple of 5")
    posBets = range(5, (balance + 1), 5)
    bet = str(input())
    if bet == posBets:
        print("You have bet $" + str(bet))
        loop = 0
    elif bet != posBets:
            print("Please bet an amount that is a multiple of 5, or an amount that is within your balance")
            print("Press enter to continue")
            input()
            loop = 1
    if not(loop == 1):break #Exit loop
    return(bet)
win = 1
lose = 2
tie = 3
r = win or lose or tie
print("Battle shall now commence")
print("Choose an attack")
print("The attacks you can use are as follows")
print("(1)Fury Punch")
print("(2)Punishment kick")
print("(3)Sword of justice")
print("(4)Shuriken of Vengence")
print("(5)Numchucks of Anger")
print("(6)Knife of Freedom")
attack = int(input())
while attack &lt; 1 or attack &gt; 6:
    print("please input either: 1, 2, 3, 4, 5 or 6")
    attack = int(input())
winLose(attack, win, lose, tie,)
if r == win:
    newBalance = int(balance) + int(bet)
elif r == lose:
    newBalance = int(balance) - int(bet)
else:
    if r == tie:
        balance = newBalance 
print("Your Balance is $" + str(newBalance))
return(bet, newBalance)

def menu(name):
    balance = 100
    while True:
        newBalance = balance
        print("Your current balance is $" + str(balance))
        print("Choose an option " + name)
        print("(I)nstructions")
        print("(P)lay game")
        print("(Q)uit game")
        print("Please Input I,P or Q")
        menuChoice = input()            
        if menuChoice == "i" or menuChoice == "I":
            instructions(name)
            loop = 1
        elif menuChoice == "p" or menuChoice == "P":
            gameplay(balance)

            loop = 1
            print("Press enter to contiue")
            enter = input()
        elif menuChoice == "q" or menuChoice == "Q":
            loop = 0
        else:                   
            print("I did not understand the response. Please Input I, P or Q")
            print("Press enter to continue")
            enter = input()
            loop = 1
        if not(loop == 1): break    #Exit loop
    return(menuChoice)

def main():
print("Welcome to Ultimate Ninja Combat!!! What is your name?")
name = input()
print ("Welcome " + name)
menu(name)
</code></pre>

<p>main() </p>

<p>Your <code>bet = str(input())</code> converts the number into a string, which is why it can never equal the range. </p>

<p>Even if it was an int, a number cannot equal a range.</p>

<p>What you want is </p>

<pre><code>    bet = int(input())
    if bet in posBets:
</code></pre>

<p>the rest of the code seems full of errors to me: </p>

<ul>
<li><p>functions need to be indented when <code>def</code>ined</p></li>
<li><p>saying stuff like <code>r = win or lose or tie</code> after saying <code>win=1</code> <code>lose=2</code> <code>tie=3</code> is basically asking <code>r=1 or 2 or 3</code> which is always <code>1</code> because <code>1</code> evaluates as <code>True</code> and <code>or</code> stops as soon as it gets a <code>True</code> (just like <code>and</code> stops if it gets a <code>False</code>)</p></li>
</ul>

python python-3.x