Nov-23-2019, 10:14 AM
This is how i would code it.
Functions receive parameters and return values.
With parameters you are flexible changing the ranges of your lottery.
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.