Creating a slot machine for school
<p>I'm programming a slot machine for school and cannot get the machine to re-run once it is finished. I am relatively new and would like some honest feedback. How can I get my program to re-run? This is the code I'm trying to do this with. I've just modified my code to look like this.</p>

<pre><code>import random 
import sys


print "Hi there user, welcome to the amazing poker machine simulator."
print "Your opening account has in it $1000."
print "To win a jackpot, three leprachauns must be in a row."
print "Enter yes or no when prompted to finish or continue the program."

balance = 1000
balance == int(balance)
winnings = 0
winnings == int(winnings)

Symbols = ["Leprachaun", "Goldbar", "Pyramid", "Blackcat"]

# Subroutines:  Checking the Bet input and amount
def betcheck(betamount):
    if betamount.isdigit() == True:
        betamount == int(betamount)
        rightbet = True
    else: 
        rightbet = False
        print "Please enter a whole number, no decimals and a bet on or below the balance."
    return rightbet

# Limiting the bet
def betlimit(betamount):
    if betamount &gt; balance == False:
        goodlimit = False
        print "That bet is too high!"
    else:
        goodlimit = True
    return goodlimit

# Checking the 'Ask' input to play the machine.
def askinputcheck(answerinput):
    if answerinput == "Yes" or answerinput == "yes" or answerinput == "y" or answerinput == "No" or answerinput == "no" or answerinput == "n":
        rightanswerinput = True
    else:
        rightanswerinput = False
        print "This is an incorrect input, please type an appropriate answer in."
    return rightanswerinput

# Printing and sorting symbols.
def spinning(reels):
    global balance
    if reelone == "Leprachaun" and reeltwo == "Leprachaun" and reelthree == "Leprachaun":
        winnings = int(betamount) + int(balance) * 1000
        print "You won the jackpot! Congragulations! This is how much your account contains $", winnings
    elif reelone == "Goldbar" and reeltwo == "Goldbar" and reelthree == "Goldbar":
        winnings = int(betamount) + int(balance) * 500
        print "You won a considerable return! Awesome! Your balance and wins are $", winnings
    elif reelone == "Pyramid" and reeltwo == "Pyramid" and reelthree == "Pyramid":
        winnings = int(betamount) + int(balance) * 250
        print "You won a good return! Its a conspiracy! This is all of your money total $", winnings
    elif reelone == "Blackcat" and reeltwo == "Blackcat" and reelthree == "Blackcat":
        winnings = int(balance) - int(betamount)
        print "Unfortunately you didn't win anything, bad luck! You rewards are $", winnings
    else:
        winnings = int(balance) - int(betamount)
        print "Bad luck! Maybe next time you'll win! Your remaining cash is $", winnings
        print winnings
    return reels

# If you have no money
def rebalance(balance):        
    while balance == 0 == True and startagain == True:
        unbalance = True
        balance = 1000
        print "You ran out of money, here is $1000"
    else:
        unbalance = False
        print "You still have money."
        return unbalance

# Leads to Bet input check. 
Validbet = False
while Validbet == False:
    betamount = raw_input("Please enter amount you wish to bet: ")
    Validbet = betcheck(betamount)

betamount == int(betamount)

# Leads to betlimit
appropriatelimit = betlimit(betamount)

# RandomSymbolGen + 3 reels
reelone = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
reeltwo = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
reelthree = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)

reels = [reelone, reeltwo, reelthree]

slotspin = spinning(reels)

print reels

# Leads to Ask input check. (At the bottom due to program order)
validask = False
while validask == False:
    answerinput = raw_input("Would you like to play again?: ")
    validask = askinputcheck(answerinput)

# Leads to restart    
startagain = False
while startagain == False:
    startagain = answerinput

while True: 
    if answerinput == "Yes" or answerinput == "yes" or answerinput == "y":
        startagain = True
        balance = int(winnings) + int(balance)
        print "You have $", balance
        pass
    elif answerinput == "No" or answerinput == "no" or answerinput == "n":
        startagain = False
        balance = winnings
        print "You ended the game with", balance
        break
    else:
        print "This is an incorrect input, please answer yes or no."


# Leads to rebalance
if answerinput == "Yes" or answerinput == "yes" or answerinput == "y" and balance == 0:
    balance = rebalance(balance)
</code></pre>

<p>Having some spare time, I have modified your code.<br>
The code you supplied is riddled with small coding and logical errors. You would be best running the <code>diff</code> command between your original code and the code below, to see where the many differences are and there is no guarantee that is bug free now either.<br>
I hope you're not planning on fleecing your fellow pupils, the <code>rebalance</code> routine is the twisted work of a future loan-shark. ;)</p>

<pre><code>import random 

print "Hi there user, welcome to the amazing poker machine simulator."
print "Your opening account has in it $1000."
print "To win a jackpot, three leprachauns must be in a row."
print "Enter yes or no when prompted to finish or continue the program."

balance = 1000


Symbols = ["Leprachaun", "Goldbar", "Pyramid", "Blackcat"]

# Subroutines:  Checking the Bet input and amount
def betcheck(betamount):
    if betamount.isdigit() == True:
        betamount == int(betamount)
        rightbet = True
    else: 
        rightbet = False
        print "Please enter a whole number, no decimals and a bet on or below the balance."
    return rightbet

# Limiting the bet
def betlimit(betamount):
    if betamount &gt; balance:
        goodlimit = balance
        print "That bet is too high! - bet adjusted to ", goodlimit
    else:
        goodlimit = betamount
    return goodlimit

# Checking the 'Ask' input to play the machine.
def askinputcheck(answerinput):
    if answerinput.lower().startswith('y') or answerinput.lower().startswith("n"):
        rightanswerinput = True
    else:
        rightanswerinput = False
        print "This is an incorrect input, please type an appropriate answer in."
    return rightanswerinput

# Printing and sorting symbols.
def spinning(reels, betamount):
    reelone, reeltwo, reelthree = reels[0], reels[1], reels[2]
    global balance
    winnings = 0
    if reelone == "Leprachaun" and reeltwo == "Leprachaun" and reelthree == "Leprachaun":
        winnings = int(betamount) * 10 + int(balance)
        print "You won the jackpot! Congragulations! This is how much your account contains $", winnings
    elif reelone == "Goldbar" and reeltwo == "Goldbar" and reelthree == "Goldbar":
        winnings = int(betamount) *5 + int(balance)
        print "You won a considerable return! Awesome! Your balance and wins are $", winnings
    elif reelone == "Pyramid" and reeltwo == "Pyramid" and reelthree == "Pyramid":
        winnings = int(betamount) *2 + int(balance)
        print "You won a good return! Its a conspiracy! This is all of your money total $", winnings
    elif reelone == "Blackcat" and reeltwo == "Blackcat" and reelthree == "Blackcat":
        winnings = int(balance) - int(betamount)
        print "Unfortunately you didn't win anything, bad luck! You rewards are $", winnings
    else:
        winnings = int(balance) - int(betamount)
        print "Bad luck! Maybe next time you'll win! Your remaining cash is $", winnings
    balance = winnings
    return reels

# If you have no money
def rebalance(startagain):
    global balance
    if balance &lt; 1 and startagain == True:
        unbalance = True
        balance = 1000
        print "You ran out of money, here is $1000"
    else:
        unbalance = False
        print "You still have money."
    return unbalance

# Leads to Bet input check. 
def my_mainloop():
    global balance
    while True:
        Validbet = False
        while Validbet == False:
            betamount = raw_input("Please enter amount you wish to bet: ")
            Validbet = betcheck(betamount)

        betamount = int(betamount)
        # Leads to betlimit
        betamount = betlimit(betamount)

        # RandomSymbolGen + 3 reels
        if betamount &gt; 0:
            reelone = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
            reeltwo = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
            reelthree = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)

            reels = [reelone, reeltwo, reelthree]
            print "\n",reels,"\n"
            slotspin = spinning(reels, betamount)


        # Leads to Ask input check. (At the bottom due to program order)
        validask = False
        while validask == False:
            answerinput = raw_input("\nWould you like to play again?: ")
            validask = askinputcheck(answerinput)

        if answerinput.lower().startswith("y"):
            startagain = True
            print "You have $", balance
        elif answerinput.lower().startswith("n"):
            startagain = False
            print "You ended the game with", balance
            break
        else:
            print "This is an incorrect input, please answer yes or no."

            # Leads to rebalance
        if answerinput.lower().startswith("y") and balance &lt; 1:
            rebalance(startagain)

if __name__ == "__main__":
    my_mainloop()
</code></pre>

python