Testing schedule: Difference between revisions
Mr. MacKenty (talk | contribs) |
Mr. MacKenty (talk | contribs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 13: | Line 13: | ||
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 | 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 [[media:Testing schedule.txt|this file to complete this problem set.]] | You will need [[media:Testing schedule.txt|this file to complete this problem set.]] | ||
Line 59: | Line 59: | ||
<syntaxhighlight lang="python" > | <syntaxhighlight lang="python" > | ||
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) | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 07:06, 17 September 2020
This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:
- to build your skill applying computational thinking to a problem
- 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)