Files
004_comission/ttng1234/quotation/src/index.py
louiscklaw 49e275d85d update,
2025-01-31 20:12:48 +08:00

141 lines
3.8 KiB
Python

# NOTE: os and sys are library usually for troubleshooting purpose
import os,sys
import numpy as np
# NOTE: prepare prize table for lookup,
prize_table = [
['1st', 21531600],
['2nd', 885990],
['3rd', 157500],
['4th', 9600],
['5th', 640],
['6th', 320],
['7th', 40],
]
def prize_matching(all_drawn_number, user_entry_nums):
"""
A function that calculates the prize based on matching numbers with user entries.
Parameters:
all_drawn_number (tuple): Tuple containing a list of drawn numbers and an extra number.
user_entry_nums (list): List of user's chosen numbers.
Returns:
list: A list representing the prize won.
"""
# NOTE:
prize = ['',0]
[drawn_numbers, extra_number] = all_drawn_number
# NOTE: find number of match in drawn numbers with user entry numbers
matched_number = 0
for user_num in user_entry_nums:
for drawn_number in drawn_numbers:
if (drawn_number == user_num):
matched_number = matched_number + 1
break
# NOTE: find if any extra number match user entry number
matched_extra_number = 0
for user_num in user_entry_nums:
if (user_num == extra_number):
matched_extra_number = matched_extra_number + 1
break
if (matched_number == 6):
# first_prize = True
prize = prize_table[0]
elif (matched_number == 5 and matched_extra_number == 1):
# second_prize = True
prize = prize_table[1]
elif (matched_number == 5):
# third_prize = True
prize = prize_table[2]
elif (matched_number == 4 and matched_extra_number == 1):
# forth_prize = True
prize = prize_table[3]
elif (matched_number == 4):
# fifth_prize = True
prize = prize_table[4]
elif (matched_number == 3 and matched_extra_number == 1):
# sixth_prize = True
prize = prize_table[5]
elif (matched_number == 3):
# seventh_prize = True
prize = prize_table[6]
else:
# no prize matched
pass
return prize
def print_output(prize_result, user_entry_nums):
# deliver prize message
print("Numbers of your entry: ", user_entry_nums)
print('')
print('Result :')
if (prize_result[1] > 0):
print("Output prize = " + str(prize_result[0]) + " = $" + str(prize_result[1]))
else:
print("No prize given")
pass
keep_asking = True
while keep_asking:
# part a
user_entry_numbers = input("Please entry 6 numbers of your choice:")
user_entry_numbers = eval(user_entry_numbers)
# NOTE: check if number of user entered is not equal to 6
len_equal_to_six = False
if (len(user_entry_numbers) != 6):
print('user entered numbers should be exactly 6')
print('Please input the correct number.')
print()
else:
len_equal_to_six = True
# NOTE: check if each number within range
numbers_are_in_range = True
for user_num in user_entry_numbers:
if (user_num < 1 or user_num > 49):
print('user entered number should be within 1 to 49')
print('Please input the correct number.')
print()
numbers_are_in_range = False
break
if (len_equal_to_six == True and numbers_are_in_range == True):
keep_asking = False
# part b
# drawn 7 numbers
# init seed randomizer
np.random.seed(21800000)
# init empty slot for number
temp_numbers = np.arange(0, 7, 1, dtype=int)
# [1,2,3,4,5,6,7]
temp_numbers = np.random.choice(range(1,49), 7)
# the first 6 number are considered drawn number
# [1,2,3,4,5,6]
drawn_nums = temp_numbers[0:6].tolist()
# the last one considered extra number
# 7
extra_num = temp_numbers[6]
# re-format number to duple
# ([1,2,3,4,5,6],7)
all_drawn_nums = (drawn_nums, extra_num)
# part a
print("all drawn numbers: ", all_drawn_nums)
print("drawn numbers: " , drawn_nums)
print("extra number: " , extra_num)
# part a
result = prize_matching(all_drawn_nums, user_entry_numbers)
print_output(result, user_entry_numbers)