In: Computer Science
In the game of Lucky Sevens, the player rolls a pair of dice. If the dots add up to 7, the player wins $4; otherwise, the player loses $1. Suppose that, to entice the gullible, a casino tells players that there are many ways to win: (1, 6), (2, 5), and soon. A little mathematical analysis reveals that there are not enough ways to win to make the game worthwhile; however, because many people's eyes glaze over at the first mention of mathematics “wins $4”.
Your challenge is to write a program that demonstrates the futility of playing the game. Your Python program should take as input the amount of money that the player wants to put into the pot, and play the game until the pot is empty.
The program should have at least TWO functions (Input validation and Sum of the dots of user’s two dice). Like the program 1, your code should be user-friendly and able to handle all possible user input. The game should be able to allow a user to ply as many times as she/he wants.
The program should print a table as following:
Number of rolls Win or Loss Current value of the pot
1 Put $10
2 Win $14
3 Loss $11
4
## Loss $0
You lost your money after ## rolls of play.
The maximum amount of money in the pot during the playing is $##.
Do you want to play again?
At that point the player’s pot is empty (the Current value of the pot is zero), the program should display the number of rolls it took to break the player, as well as maximum amount of money in the pot during the playing.
Again, add good comments to your program.
Test your program with $5, $10 and $20.
'''
Python version: 2.7
Python program to simulate the game of lucky sevens and
determine how many rolls it takes to empty the pot and the value of
maximum pot during the game
'''
import random
# function to roll 2 die and return the result of sum of those
die
def rollDie():
return(random.randint(1,6) + random.randint(1,6))
# function to input and return the pot amount
def pot_input():
pot = int(raw_input('Enter the money in the pot : $'))
# input of initial pot
# validate the pot amount and re-prompt until
valid
while pot <= 0:
print('Value of pot must be atleast
1')
pot = int(raw_input('Enter the
money in the pot : $')) # input of initial pot
return pot
def main():
while True: # loop that continues till the user
wants
pot = pot_input()
rolls = 0
maxPot = pot
print('%20s %20s %s'%('Number of
rolls','Win or Loss','Current value of the pot'))
# loop that continues till the pot
is non-empty
while pot > 0:
rolls = rolls +
1
result =
rollDie()
# check the
result
if result ==
7:
pot = pot + 4
print('%20d %20s %10s'
%(rolls,'Win','$'+str(pot)))
else:
pot = pot - 1
print('%20d %20s %10s'
%(rolls,'Loss','$'+str(pot)))
if pot >
maxPot: #check for maxPot
maxPot = pot
#print the result
print('Took %d rolls to empty the
pot' %(rolls))
print('Maximum pot : $%d'
%(maxPot))
cont = raw_input('Do you want to
continue ? (y/n) ')
if cont.lower() == 'n':
break
#call the main function
if __name__ == "__main__":
main()
#end of program
Code Screenshot:
Output: