Need help with defining messages and player guesses in a lottery - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Need help with defining messages and player guesses in a lottery (/thread-22691.html) |
Need help with defining messages and player guesses in a lottery - Kanashi - Nov-23-2019 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 RE: Need help with defining messages and player guesses in a lottery - Evil_Patrick - Nov-23-2019 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() RE: Need help with defining messages and player guesses in a lottery - Kanashi - Nov-23-2019 Thank you ! RE: Need help with defining messages and player guesses in a lottery - ThomasL - Nov-23-2019 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)))
|