Python Forum
Need help with defining messages and player guesses in a lottery
Thread Rating:
  • 1 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Need help with defining messages and player guesses in a lottery
#1
Hello, I'm experimenting with the definition function and have stumbled upon a problem which I do not know how to make it work.
I'm making a very simple lottery, the lottery_draws code works perfectly, however I'm trying to gain a better understanding of how the def functions work aswell as creating a guess system, depending on how many guesses you got right out of 5, it will print

I'm struggling with how to code the "Player guesses"
And when I print "message" nothing appears (I wrote this when message1 and message" only contained "text here" (so it didn't have "text here" + lottery_draws)

import random

### Lottery Draws List ###
lottery_draws = []

### Actual Random Lottery Draws ###
for i in range(0, 5):
    number = random.randint(1, 20)
    while number in lottery_draws:
        number = random.randint(1, 20)
    lottery_draws.append(number)

### Player Guesses ###

print('Take a 5 guesses, between 1-20')
guesses = input('')
    if guesses in lottery_draws:
        return("Congratulations, you got X guesses right")
    elif guesses in lottery_draws: # Is equal to "1"
        return("Congratulations, you got 1 guess right")
    else:
        return("Too bad, you didn't get a single guess right")

### The Finale ###
def message():
    message1 = "Today's lottery draws are: " + lottery_draws
    message2 = # "\nYou got X guesses right."
    return(message1 + message2)

message
Reply
#2
I'm not an Expert but this is my code.

import random

### Lottery Draws List ###
lottery_draws = []

### Actual Random Lottery Draws ###
for i in range(0, 5):
    number = random.randint(1, 20)
    while number in lottery_draws:
        number = random.randint(1, 20)
    lottery_draws.append(number)

num = 1
total = 0
for x in range(1, 6):
    guess = int(input(f"Enter your {num} Guess between 1 to 20: "))
    if guess in lottery_draws:
        print('Corrent Guess')
        total += 1
    elif guess > 20:
        print('Outside Range')
    else:
        print('Wrong Guess')
    num += 1

### The Finale ###
def message():
    message1 = f"Today's lottery draws are: {lottery_draws}"
    message2 =  f"\nYou got {total} guesses right."
    print(message1 + message2)

message()
Reply
#3
Thank you !
Reply
#4
This is how i would code it.
Functions receive parameters and return values.
With parameters you are flexible changing the ranges of your lottery.
import random

def draw_numbers(size, start, stop):
    numbers = set()
    while len(numbers) < size:
        numbers.add(random.randint(start, stop))
    return sorted(list(numbers))

def guess_numbers(size, start, stop):
    while True:
        guess = input(f"Enter {size} numbers from {start} to {stop} split by spaces:\n")
        guesses = guess.split()
        if len(guesses) == size:
            if all(num.isdigit() for num in guesses):
                guesses = [int(num) for num in guesses]
                if all(start <= num <= stop for num in guesses):
                    return sorted(guesses)
                else:
                    print("One or more numbers out of range!")
            else:
                print("Please enter numbers and nothing else!")
        else:
            print("Wrong amount of numbers!")

def evaluate(lottery_draw, guesses):
    hits = [guess for guess in guesses if guess in lottery_draw]
    message = f"Today's lottery draws are: {lottery_draw}\n"
    message = f"{message}Your guesses are: {guesses}\n"
    correct = len(hits)
    message = f"{message}You got {'no' if correct == 0 else correct} {'guess' if correct == 1 else 'guesses'} right.\n"
    return message


def main():
    lottery_draw = draw_numbers(5, 1, 20)
    guesses = guess_numbers(5, 1, 20)
    print(evaluate(lottery_draw, guesses))    


if __name__ == "__main__":
    main()
In Germany our lottery has these parameters
print(evaluate(draw_numbers(6, 1, 49), guess_numbers(6, 1, 49)))
Output:
Enter 6 numbers from 1 to 49 split by spaces: 1 2 3 4 5 49 Today's lottery draws are: [4, 7, 15, 25, 36, 49] Your guesses are: [1, 2, 3, 4, 5, 49] You got 2 guesses right.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Lottery generator (beginner) Hullari 3 7,093 Jul-03-2019, 04:46 PM
Last Post: perfringo
  logging messages ahead of print messages vindo 6 3,188 Jun-18-2019, 02:45 PM
Last Post: vindo
  [split] Lottery System on my mobile website sibt007 1 2,448 Sep-27-2018, 12:56 AM
Last Post: micseydel
  Lottery System on my mobile website nooxm123 1 2,616 Feb-06-2018, 10:55 AM
Last Post: j.crater

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020