matrix.py
# Read files containing matrices of integer and store each in
# a list of lists. For example, the file:
# 1 2 3
# 4 5 6
# produces the list [[1, 2, 3], [4, 5, 6]]
import sys
all_files = sys.argv[1:]
for filename in all_files:
reader = open(filename, 'r')
matrix = []
for line in reader:
line = line.strip()
temp = line.split(' ')
numbers = []
for t in temp:
numbers.append(int(t))
matrix.append(numbers)
reader.close()
print filename, matrix
check.py
# Read a file that is supposed to contain a
# rectangular matrix of numbers, and check that
# each row has the same number of columns.
import sys
if len(sys.argv) == 1:
reader = sys.stdin
elif len(sys.argv) == 2:
reader = open(sys.argv[1], 'r')
expected = -1
for line in reader:
fields = line.strip().split()
if expected == -1:
expected = len(fields)
elif len(fields) != expected:
print line.rstrip()
sys.exit()
reader.close()
stats.py
# Read a file containing one number per line and report min, max, and average.
import sys
if len(sys.argv) == 1:
reader = sys.stdin
elif len(sys.argv) == 2:
reader = open(sys.argv[1], 'r')
first = True
total = 0
count = 0
for line in reader:
count = count + 1
value = float(line)
total = total + value
if first:
minimum = value
maximum = value
first = False
else:
if value < minimum:
minimum = value
if value > maximum:
maximum = value
reader.close()
if count == 0:
print 0, 0, 0
else:
average = total / count
print minimum, average, maximum
glue.py
# Read two files, each containing columns of numbers, and write
# a third file that joins them together. For example, if the
# two input files contain:
# 1
# 2
# 3
# and
# 4 5
# 6 7
# 8 9
# the output file will contain:
# 1 4 5
# 2 6 7
# 3 8 9
import sys
if len(sys.argv) != 4:
print 'You really are a fool, I need three filenames'
sys.exit()
left = open(sys.argv[1], 'r')
left_lines = left.readlines()
left.close()
right = open(sys.argv[2], 'r')
right_lines = right.readlines()
right.close()
if len(left_lines) != len(right_lines):
print 'Oh, you fool'
sys.exit()
writer = open(sys.argv[3], 'w')
for i in range(len(left_lines)):
temp = left_lines[i].strip() + ' ' + right_lines[i].strip()
print >> writer, temp
writer.close()
malcolm.sql
select Experiment.NumInvolved, Project.ProjectName from Project join Experiment where Project.ProjectId = Experiment.ProjectId order by Experiment.NumInvolved;
bethany.sql
select distinct Project.ProjectName,
Person.FirstName,
Person.LastName
from Project join Involved join Person
where (Project.ProjectId = Involved.ProjectId)
and (Involved.Login = Person.Login);
quincy.sql
select *
from Involved join
(select NumInvolved, ProjectID as PID
from Experiment
where NumInvolved =
(select max(NumInvolved) from Experiment)
)
where Involved.ProjectID = PID;