Testing schedule

From Computer Science Wiki
Revision as of 07:06, 17 September 2020 by Mr. MacKenty (talk | contribs) (→‎A possible solution)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
This a problem set for you to work through [1]

This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:

  1. to build your skill applying computational thinking to a problem
  2. to assess your knowledge and skills of different programming practices


What is this problem set trying to do[edit]

Our goals are to solve a real-world problem. We will need to use file operations, iteration, selection, and the python datetime library.

The Problem[edit]

Construct a python program which speaks the time and a students name 3 minutes before their appointment. The lists of times and students are included on this page as a plain text file.

You will need this file to complete this problem set.


For example, Ben might have an appointment at 9:45. At 9:42 I should hear "Ben has an appointment in 3 minutes and should now go to the testing center" from your computer speakers.

Good luck. This is very real-world type of problem.

How you will be assessed[edit]

Your solution will be graded using the following axis:


Scope

  • To what extent does your code implement the features required by our specification?
  • To what extent is there evidence of effort?

Correctness

  • To what extent did your code meet specifications?
  • To what extent did your code meet unit tests?
  • To what extent is your code free of bugs?

Design

  • To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
  • To what extent is your code eliminating repetition?
  • To what extent is your code using functions appropriately?

Style

  • To what extent is your code readable?
  • To what extent is your code commented?
  • To what extent are your variables well named?
  • To what extent do you adhere to style guide?

References[edit]

A possible solution[edit]

Click the expand link to see one possible solution, but NOT before you have tried and failed!

import os
from datetime import datetime, timedelta

timeList = []
prevIndex = 0
found = False

file = (open("/FULL_PATH_TO_FILE_HERE/testing_schedule.txt", "r")).read()
classList = file.split(' ')

for i in classList:
    if ':' in i:
        index = classList.index(i)
        timeList.append((classList[prevIndex:index]))
        prevIndex = index

timeList = timeList[1:]

for i in range(0,3):
    for i in timeList:
        if len(i) != 3:
            timeList.remove(i)

def sayNames(timeList, currentTime):
        for i in timeList:
            if i[0] == currentTime:
                os.system("say '{} and {} have testing in 3 minutes.'".format(i[1], i[2]))
                return True

while True:
    if found == True:
        break
    now = datetime.now() + timedelta(minutes=3)
    currentTime = now.strftime("%H:%M:%S")
    found = sayNames(timeList, currentTime)