from random import randint
from math import floor, ceil
from datetime import datetime, timedelta
def ride_calculation(ride):
trips = attractions['Rides'][ride][3] / attractions['Rides'][ride][1]
if type(trips) == type(0.0):
decimal_index = str(trips).find('.')
first_decimal_place = str(trips)[decimal_index + 1]
if int(first_decimal_place) >= 5:
trips = ceil(trips)
else:
trips = floor(trips)
else:
trips = floor(trips)
waittime = trips * attractions['Rides'][ride][2]
return waittime
time_weights = [0.5, 0.7, 0.9, 1.0, 1.1, 1.2, 1.2, 1.2, 1.1, 1.0, 0.7, 0.5, 0.5]
#hour_now = datetime.today().hour
hour_now = 10
if 9 <= hour_now <= 21:
weighted_time = time_weights[hour_now - 9]
else:
print('The park isn\'t open right now. It opens at 9am and closes at 9pm.')
weighted_time = 0
if 9 <= hour_now <= 21:
park_popularity = 10
total_guests = floor(randint(0, 500 * park_popularity) * weighted_time)
big_ride_guests = floor(total_guests * 0.5)
medium_ride_guests = floor(total_guests * 0.2)
small_ride_guests = floor(total_guests * 0.1)
non_ride_guests = floor(total_guests * 0.2)
extra_info = input('Do you want a detailed break down for the amount of park guests? (y/n):')
if extra_info == 'y':
extra_info_file = open('extra_information.txt', 'w+')
extra_info_file.write(('Guests at the park: ' + str(total_guests) + '\n'))
extra_info_file.write(('Guests in line for big rides: ' + str(big_ride_guests) + '\n'))
extra_info_file.write(('Guests in line for medium rides: ' + str(medium_ride_guests) + '\n'))
extra_info_file.write(('Guests in line for small rides: ' + str(small_ride_guests) + '\n'))
extra_info_file.write(('Guests not in lines: ' + str(non_ride_guests) + '\n\n'))
# Ride Example Data: 'ride': [x = spots for guests, x = ride time, x = people riding the ride]
attractions = {
'Rides':
{
'big_ride1': [3, 10, 135, floor(big_ride_guests / 5), 0],
'big_ride2': [3, 6, 120, floor(big_ride_guests / 5), 0],
'big_ride3': [3, 12, 155, floor(big_ride_guests / 5), 0],
'big_ride4': [3, 24, 165, floor(big_ride_guests / 5), 0],
'big_ride5': [3, 10, 125, floor(big_ride_guests / 5), 0],
'medium_ride1': [2, 24, 120, floor(medium_ride_guests / 5), 0],
'medium_ride2': [2, 2, 300, floor(medium_ride_guests / 5), 0],
'medium_ride3': [2, 8, 180, floor(medium_ride_guests / 5), 0],
'medium_ride4': [2, 16, 200, floor(medium_ride_guests / 5), 0],
'medium_ride5': [2, 4, 90, floor(medium_ride_guests / 5), 0],
'small_ride1': [1, 6, 125, floor(small_ride_guests / 5), 0],
'small_ride2': [1, 10, 120, floor(small_ride_guests / 5), 0],
'small_ride3': [1, 24, 340, floor(small_ride_guests / 5), 0],
'small_ride4': [1, 12, 230, floor(small_ride_guests / 5), 0],
'small_ride5': [1, 12, 90, floor(small_ride_guests / 5), 0]
}
}
for ride in attractions['Rides']:
wait_time = ride_calculation(ride)
attractions['Rides'][ride][4] = wait_time
print('There are', total_guests, 'guests at the park. About', non_ride_guests, 'aren\'t waiting in a line.')
cont = ''
selected_ride = ''
while selected_ride != 'exit':
print()
selected_ride = input('Name of ride you want to check the wait time for or exit to exit: ')
if selected_ride == 'exit':
break
while selected_ride not in attractions['Rides']:
selected_ride = input('That\'s not a ride, put the name of ride you want to check the wait time for or exit to exit: ')
if selected_ride == 'exit':
break
if selected_ride == 'exit':
break
selected_wait_time = attractions['Rides'][selected_ride][4]
output = ''
if selected_wait_time >= 60 * 60:
output = str(attractions['Rides'][selected_ride][3]) + ' people waiting in line for ' + selected_ride + '. There is a ' + str(selected_wait_time / 60 / 60)[0 : str(selected_wait_time / 60 / 60).find('.') + 2] + ' hour wait time.\n'
print(output)
else:
output = str(attractions['Rides'][selected_ride][3]) + ' people waiting in line for ' + selected_ride + '. There is a ' + str(ceil(selected_wait_time / 60)) + ' minute wait time.\n'
print(output)
if extra_info == 'y':
extra_info_file.write(str(output))
else:
print('The park isn\'t open right now.')
extra_info_file.close()
There are 499 guests at the park. About 99 aren't waiting in a line.
3. Find the time when the ride is available.
4. Broken rides.
5. Possible schedule for what rides you can ride in the time that you have.
6. Write stuff to file