Skip to content

Commit b0417c8

Browse files
committed
pset6 code
1 parent 9b5ec74 commit b0417c8

14 files changed

+209
-0
lines changed

week6/pizza/pizza.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from sys import exit, argv
2+
import csv
3+
import tabulate
4+
5+
6+
if len(argv) < 2:
7+
exit("Too few command-line arguments")
8+
elif len(argv) == 2:
9+
file_path = argv[1]
10+
else:
11+
exit("Too many command-line arguments")
12+
13+
if file_path[-4:] == ".csv":
14+
try:
15+
f = open(file_path)
16+
except FileNotFoundError:
17+
exit("File does not exist")
18+
else:
19+
menu_list = []
20+
with f as file:
21+
reader = csv.reader(file)
22+
for row in reader:
23+
menu_list.append(row)
24+
print(tabulate.tabulate(menu_list, headers="firstrow", tablefmt="grid"))
25+
else:
26+
exit("Not a CSV file")

week6/pizza/regular.csv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Regular Pizza,Small,Large
2+
Cheese,$13.50,$18.95
3+
1 topping,$14.75,$20.95
4+
2 toppings,$15.95,$22.95
5+
3 toppings,$16.95,$24.95
6+
Special,$18.50,$26.95

week6/pizza/sicilian.csv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Sicilian Pizza,Small,Large
2+
Cheese,$25.50,$39.95
3+
1 item,$27.50,$41.95
4+
2 items,$29.50,$43.95
5+
3 items,$31.50,$45.95
6+
Special,$33.50,$47.95

week6/scourgify/after.csv

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
first,last,house
2+
Hannah,Abbott,Hufflepuff
3+
Katie,Bell,Gryffindor
4+
Susan,Bones,Hufflepuff
5+
Terry,Boot,Ravenclaw
6+
Lavender,Brown,Gryffindor
7+
Millicent,Bulstrode,Slytherin
8+
Cho,Chang,Ravenclaw
9+
Penelope,Clearwater,Ravenclaw
10+
Vincent,Crabbe,Slytherin
11+
Colin,Creevey,Gryffindor
12+
Dennis,Creevey,Gryffindor
13+
Cedric,Diggory,Hufflepuff
14+
Marietta,Edgecombe,Ravenclaw
15+
Justin,Finch-Fletchley,Hufflepuff
16+
Seamus,Finnigan,Gryffindor
17+
Anthony,Goldstein,Ravenclaw
18+
Gregory,Goyle,Slytherin
19+
Hermione,Granger,Gryffindor
20+
Angelina,Johnson,Gryffindor
21+
Lee,Jordan,Gryffindor
22+
Neville,Longbottom,Gryffindor
23+
Luna,Lovegood,Ravenclaw
24+
Remus,Lupin,Gryffindor
25+
Draco,Malfoy,Slytherin
26+
Scorpius,Malfoy,Slytherin
27+
Ernie,Macmillan,Hufflepuff
28+
Minerva,McGonagall,Gryffindor
29+
Eloise,Midgen,Gryffindor
30+
Cormac,McLaggen,Gryffindor
31+
Graham,Montague,Slytherin
32+
Theodore,Nott,Slytherin
33+
Pansy,Parkinson,Slytherin
34+
Padma,Patil,Gryffindor
35+
Parvati,Patil,Gryffindor
36+
Harry,Potter,Gryffindor
37+
Tom,Riddle,Slytherin
38+
Demelza,Robins,Gryffindor
39+
Newt,Scamander,Hufflepuff
40+
Horace,Slughorn,Slytherin
41+
Zacharias,Smith,Hufflepuff
42+
Severus,Snape,Slytherin
43+
Alicia,Spinnet,Gryffindor
44+
Pomona,Sprout,Hufflepuff
45+
Dean,Thomas,Gryffindor
46+
Romilda,Vane,Gryffindor
47+
Myrtle,Warren,Ravenclaw
48+
Fred,Weasley,Gryffindor
49+
George,Weasley,Gryffindor
50+
Ginny,Weasley,Gryffindor
51+
Percy,Weasley,Gryffindor
52+
Ron,Weasley,Gryffindor
53+
Oliver,Wood,Gryffindor
54+
Blaise,Zabini,Slytherin

week6/scourgify/before.csv

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name,house
2+
"Abbott, Hannah",Hufflepuff
3+
"Bell, Katie",Gryffindor
4+
"Bones, Susan",Hufflepuff
5+
"Boot, Terry",Ravenclaw
6+
"Brown, Lavender",Gryffindor
7+
"Bulstrode, Millicent",Slytherin
8+
"Chang, Cho",Ravenclaw
9+
"Clearwater, Penelope",Ravenclaw
10+
"Crabbe, Vincent",Slytherin
11+
"Creevey, Colin",Gryffindor
12+
"Creevey, Dennis",Gryffindor
13+
"Diggory, Cedric",Hufflepuff
14+
"Edgecombe, Marietta",Ravenclaw
15+
"Finch-Fletchley, Justin",Hufflepuff
16+
"Finnigan, Seamus",Gryffindor
17+
"Goldstein, Anthony",Ravenclaw
18+
"Goyle, Gregory",Slytherin
19+
"Granger, Hermione",Gryffindor
20+
"Johnson, Angelina",Gryffindor
21+
"Jordan, Lee",Gryffindor
22+
"Longbottom, Neville",Gryffindor
23+
"Lovegood, Luna",Ravenclaw
24+
"Lupin, Remus",Gryffindor
25+
"Malfoy, Draco",Slytherin
26+
"Malfoy, Scorpius",Slytherin
27+
"Macmillan, Ernie",Hufflepuff
28+
"McGonagall, Minerva",Gryffindor
29+
"Midgen, Eloise",Gryffindor
30+
"McLaggen, Cormac",Gryffindor
31+
"Montague, Graham",Slytherin
32+
"Nott, Theodore",Slytherin
33+
"Parkinson, Pansy",Slytherin
34+
"Patil, Padma",Gryffindor
35+
"Patil, Parvati",Gryffindor
36+
"Potter, Harry",Gryffindor
37+
"Riddle, Tom",Slytherin
38+
"Robins, Demelza",Gryffindor
39+
"Scamander, Newt",Hufflepuff
40+
"Slughorn, Horace",Slytherin
41+
"Smith, Zacharias",Hufflepuff
42+
"Snape, Severus",Slytherin
43+
"Spinnet, Alicia",Gryffindor
44+
"Sprout, Pomona",Hufflepuff
45+
"Thomas, Dean",Gryffindor
46+
"Vane, Romilda",Gryffindor
47+
"Warren, Myrtle",Ravenclaw
48+
"Weasley, Fred",Gryffindor
49+
"Weasley, George",Gryffindor
50+
"Weasley, Ginny",Gryffindor
51+
"Weasley, Percy",Gryffindor
52+
"Weasley, Ron",Gryffindor
53+
"Wood, Oliver",Gryffindor
54+
"Zabini, Blaise",Slytherin

week6/scourgify/scourgify.py

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from sys import exit, argv
2+
import csv
3+
4+
5+
if len(argv) < 3:
6+
exit("Too few command-line arguments")
7+
elif len(argv) > 3:
8+
exit("Too many command-line arguments")
9+
else:
10+
if argv[1][-4:] == ".csv" and argv[2][-4:] == ".csv":
11+
try:
12+
f = open(argv[1])
13+
except FileNotFoundError:
14+
exit(f"Could not read {argv[1]}")
15+
else:
16+
listofdict = []
17+
with f as file:
18+
reader = csv.DictReader(file)
19+
for row in reader:
20+
x, y = row["name"].split(', ')
21+
listofdict.append({"first": y, "last": x, "house": row["house"]})
22+
with open(argv[2], "w") as file:
23+
writer = csv.DictWriter(file, fieldnames=["first", "last", "house"])
24+
writer.writeheader()
25+
for i in range(len(listofdict)):
26+
writer.writerow({"first": listofdict[i]["first"], "last": listofdict[i]["last"], "house": listofdict[i]["house"]})
27+
else:
28+
exit("Not a CSV file")

week6/shirt/after1.jpg

43.7 KB
Loading

week6/shirt/after2.jpg

42.9 KB
Loading

week6/shirt/after3.jpg

42.9 KB
Loading

week6/shirt/before1.jpg

980 KB
Loading

week6/shirt/before2.jpg

1.18 MB
Loading

week6/shirt/before3.jpg

1.19 MB
Loading

week6/shirt/shirt.png

63.9 KB
Loading

week6/shirt/shirt.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from sys import exit, argv
2+
from PIL import Image, ImageOps
3+
4+
5+
def main():
6+
if len(argv) < 3:
7+
exit("Too few command-line arguments")
8+
elif len(argv) > 3:
9+
exit("Too many command-line arguments")
10+
else:
11+
if file_extension_check(1) != file_extension_check(2):
12+
exit("Input and output have different extensions")
13+
14+
try:
15+
shirt = Image.open("shirt.png")
16+
before = Image.open(argv[1])
17+
except FileNotFoundError:
18+
exit("Could not find the image file")
19+
else:
20+
size = shirt.size # it is a tuple (600, 600)
21+
before = ImageOps.fit(before, size) # resize and crop the input
22+
before.paste(shirt, box = (0, 0), mask = shirt) # https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.paste
23+
before.save(argv[2], format=None) # saving the image
24+
25+
26+
def file_extension_check(i):
27+
match endpart := argv[i][(argv[i].index('.')):].lower(): # find period symbol location and slice from there to the end and finally making it lowercase. ":=" is walrus operator an assignment expression
28+
case ".png" | ".jpg" | ".jpeg":
29+
return endpart
30+
case _:
31+
exit("Invalid output")
32+
33+
34+
if __name__ == "__main__":
35+
main()

0 commit comments

Comments
 (0)