First commit of the code from the course for people to access.

main
Zed A. Shaw 1 week ago
parent c86734815f
commit 8bff850da3
  1. 1
      .gitignore
  2. 6
      python/code/module-1/ex1.err
  3. 7
      python/code/module-1/ex1.py
  4. 15
      python/code/module-1/ex10.py
  5. 14
      python/code/module-1/ex11.py
  6. 11
      python/code/module-1/ex12.py
  7. 9
      python/code/module-1/ex13.py
  8. 29
      python/code/module-1/ex14.py
  9. 22
      python/code/module-1/ex15.py
  10. 4
      python/code/module-1/ex15_sample.txt
  11. 38
      python/code/module-1/ex16.py
  12. 29
      python/code/module-1/ex17.py
  13. 10
      python/code/module-1/ex2.py
  14. 23
      python/code/module-1/ex3.py
  15. 4
      python/code/module-1/ex4.err
  16. 18
      python/code/module-1/ex4.py
  17. 19
      python/code/module-1/ex5.py
  18. 22
      python/code/module-1/ex6.py
  19. 21
      python/code/module-1/ex7.py
  20. 13
      python/code/module-1/ex8.py
  21. 14
      python/code/module-1/ex9.py
  22. 13
      python/code/module-1/fake_input.py
  23. 3
      python/code/module-1/new_file.txt
  24. 3
      python/code/module-1/new_test.txt
  25. 3
      python/code/module-1/test.txt
  26. 25
      python/code/module-2/ex18.py
  27. 31
      python/code/module-2/ex18_demo.py
  28. 26
      python/code/module-2/ex19.py
  29. 33
      python/code/module-2/ex20.py
  30. 3
      python/code/module-2/ex20_test.txt
  31. 36
      python/code/module-2/ex21.py
  32. 23
      python/code/module-2/ex22.py
  33. 18
      python/code/module-2/ex23.py
  34. 30
      python/code/module-2/ex24.py
  35. 38
      python/code/module-2/ex25.py
  36. 16
      python/code/module-2/ex25_pycon.py
  37. 2
      python/code/module-2/ex26.py
  38. 31
      python/code/module-2/ex26_code.py
  39. 1
      python/code/module-2/ex28.py
  40. 31
      python/code/module-2/ex30.py
  41. 27
      python/code/module-2/ex31.py
  42. 49
      python/code/module-2/ex32.py
  43. 13
      python/code/module-2/ex32_dis.py
  44. 31
      python/code/module-2/ex33.py
  45. 18
      python/code/module-2/ex34.py
  46. 87
      python/code/module-2/ex35.py
  47. 1
      python/code/module-2/ex36.py
  48. 1
      python/code/module-2/ex37.py
  49. 13
      python/code/module-2/fake_input.py
  50. 97
      python/code/module-2/languages.txt
  51. 25
      python/code/module-3/ex38.py
  52. 62
      python/code/module-3/ex39.py
  53. 23
      python/code/module-3/ex39_pycon.py
  54. 21
      python/code/module-3/ex40.py
  55. 68
      python/code/module-3/ex40a.py
  56. 3
      python/code/module-3/ex41.py
  57. 25
      python/code/module-3/ex42.py
  58. 38
      python/code/module-3/ex42_demo.py
  59. 62
      python/code/module-3/ex43.py
  60. 57
      python/code/module-3/ex43_classes.py
  61. 23
      python/code/module-3/ex43_pycon.py
  62. 37
      python/code/module-3/ex43_pycon_out.py
  63. 10
      python/code/module-3/ex44_1.py
  64. 11
      python/code/module-3/ex44_2.py
  65. 20
      python/code/module-3/ex44_3.py
  66. 17
      python/code/module-3/ex44_4.py
  67. 13
      python/code/module-3/ex45.py
  68. 78
      python/code/module-3/ex46.py
  69. 180
      python/code/module-3/ex47.py
  70. 6
      python/code/module-3/ex47.sh-session
  71. 0
      python/code/module-3/ex47/__init__.py
  72. 16
      python/code/module-3/ex47/game.py
  73. 57
      python/code/module-3/ex47_classes.py
  74. 107
      python/code/module-3/ex47_dialogue.py
  75. 33
      python/code/module-3/ex47_tests.py
  76. 6
      python/code/module-3/ex48_convert.py
  77. 1
      python/code/module-3/ex48_pycon.py
  78. 13
      python/code/module-3/ex48a.py
  79. 15
      python/code/module-3/ex48b.py
  80. 17
      python/code/module-3/ex48c.py
  81. 33
      python/code/module-3/ex48d.py
  82. 32
      python/code/module-3/ex48e.py
  83. 4
      python/code/module-3/ex49_pycon.py
  84. 10
      python/code/module-3/ex49a_pycon.py
  85. 11
      python/code/module-3/ex50.py
  86. 9
      python/code/module-3/ex50_except.py
  87. 15
      python/code/module-3/ex50_test.py
  88. 13
      python/code/module-3/fake_input.py
  89. 97
      python/code/module-3/languages.txt
  90. 49
      python/code/module-3/lexicon_tests.py
  91. 2
      python/code/module-3/mystuff.py
  92. 3
      python/code/module-3/new_file.txt
  93. 20
      python/code/module-3/setup.py
  94. 3
      python/code/module-3/test.txt
  95. 0
      python/code/module-3/tests/__init__.py
  96. 33
      python/code/module-3/tests/ex47_tests.py
  97. 14
      python/code/module-4/euro_migrate.sql
  98. 19
      python/code/module-4/ex51.py
  99. 28
      python/code/module-4/ex51_clue.py
  100. 18
      python/code/module-4/ex52.py
  101. Some files were not shown because too many files have changed in this diff Show More

1
.gitignore vendored

@ -19,3 +19,4 @@ tags
# Persistent undo
[._]*.un~
*.pyc

@ -0,0 +1,6 @@
$ python3.6 python/ex1.py
File "python/ex1.py", line 3
print("I like typing this.
^
SyntaxError: EOL while scanning string literal

@ -0,0 +1,7 @@
print("Hello World!")
print("Hello Again")
print("I like typing this.")
print("This is fun.")
print('Yay! Printing.')
print("I'd much rather you 'not'.")
print('I "said" do not touch this.')

@ -0,0 +1,15 @@
tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."
fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
"""
print(tabby_cat)
print(persian_cat)
print(backslash_cat)
print(fat_cat)

@ -0,0 +1,14 @@
### @export "fake"
import fake_input
input, input = fake_input.create(['38', '6\'2"', '180lbs'])
### @export "code"
print("How old are you?", end=' ')
age = input()
print("How tall are you?", end=' ')
height = input()
print("How much do you weigh?", end=' ')
weight = input()
print(f"So, you're {age} old, {height} tall and {weight} heavy.")

@ -0,0 +1,11 @@
### @export "fake"
import fake_input
input, input = fake_input.create(['38', '6\'2"', '180lbs'])
### @export "code"
age = input("How old are you? ")
height = input("How tall are you? ")
weight = input("How much do you weigh? ")
print(f"So, you're {age} old, {height} tall and {weight} heavy.")

@ -0,0 +1,9 @@
from sys import argv
# read the WYSS section for how to run this
script, first, second, third = argv
print("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("Your third variable is:", third)

@ -0,0 +1,29 @@
### @export "setup"
import fake_input
input, input = fake_input.create(['Yes',
"San Francisco",
'Tandy 1000'])
### @export "code"
from sys import argv
script, user_name = argv
prompt = '> '
print(f"Hi {user_name}, I'm the {script} script.")
print("I'd like to ask you a few questions.")
print(f"Do you like me {user_name}?")
likes = input(prompt)
print(f"Where do you live {user_name}?")
lives = input(prompt)
print("What kind of computer do you have?")
computer = input(prompt)
print(f"""
Alright, so you said {likes} about liking me.
You live in {lives}. Not sure where that is.
And you have a {computer} computer. Nice.
""")

@ -0,0 +1,22 @@
### @export "setup"
import fake_input
input, input = fake_input.create(['ex15_sample.txt'])
### @export "code"
from sys import argv
script, filename = argv
txt = open(filename)
print(f"Here's your file {filename}:")
print(txt.read())
print("Type the filename again:")
file_again = input("> ")
txt_again = open(file_again)
print(txt_again.read())

@ -0,0 +1,4 @@
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

@ -0,0 +1,38 @@
### @export "setup"
import fake_input
input, input = fake_input.create(['', 'Mary had a little lamb',
'Its fleece was white as snow',
'It was also tasty'])
### @export "code"
filename = "test.txt"
print(f"We're going to erase {filename}.")
print("If you don't want that, hit CTRL-C (^C).")
print("If you do want that, hit RETURN.")
input("?")
print("Opening the file...")
target = open(filename, 'w')
print("Truncating the file. Goodbye!")
target.truncate()
print("Now I'm going to ask you for three lines.")
line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ")
print("I'm going to write these to the file.")
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
print("And finally, we close it.")
target.close()

@ -0,0 +1,29 @@
### @export "fake"
import fake_input
input, input = fake_input.create([''])
### @export "code"
from os.path import exists
from_file = "test.txt"
to_file = "new_test.txt"
print(f"Copying from {from_file} to {to_file}")
# we could do these two on one line, how?
in_file = open(from_file)
indata = in_file.read()
print(f"The input file is {len(indata)} bytes long")
print(f"Does the output file exist? {exists(to_file)}")
print("Ready, hit RETURN to continue, CTRL-C to abort.")
input()
out_file = open(to_file, 'w')
out_file.write(indata)
print("Alright, all done.")
out_file.close()
in_file.close()

@ -0,0 +1,10 @@
# A comment, this is so you can read your program later.
# Anything after the # is ignored by python.
print("I could have code like this.") # and the comment after is ignored
# You can also use a comment to "disable" or comment out code:
# print("This won't run.")
print("This will run.")

@ -0,0 +1,23 @@
print("I will now count my chickens:")
print("Hens", 25 + 30 / 6)
print("Roosters", 100 - 25 * 3 % 7)
print("Now I will count the eggs:")
print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6)
print("Is it true that 3 + 2 < 5 - 7?")
print(3 + 2 < 5 - 7)
print("What is 3 + 2?", 3 + 2)
print("What is 5 - 7?", 5 - 7)
print("Oh, that's why it's False.")
print("How about some more.")
print("Is it greater?", 5 > -2)
print("Is it greater or equal?", 5 >= -2)
print("Is it less or equal?", 5 <= -2)

@ -0,0 +1,4 @@
Traceback (most recent call last):
File "ex4.py", line 8, in <module>
average_passengers_per_car = car_pool_capacity / passenger
NameError: name 'car_pool_capacity' is not defined

@ -0,0 +1,18 @@
cars = 100
space_in_a_car = 4.0
drivers = 30
passengers = 90
cars_not_driven = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_driven
print("There are", cars, "cars available.")
print("There are only", drivers, "drivers available.")
print("There will be", cars_not_driven, "empty cars today.")
print("We can transport", carpool_capacity, "people today.")
print("We have", passengers, "to carpool today.")
print("We need to put about", average_passengers_per_car,
"in each car.")

@ -0,0 +1,19 @@
my_name = 'Zed A. Shaw'
my_age = 35 # not a lie
my_height = 74 # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'
print(f"Let's talk about {my_name}.")
print(f"He's {my_height} inches tall.")
print(f"He's {my_weight} pounds heavy.")
print("Actually that's not too heavy.")
print(f"He's got {my_eyes} eyes and {my_hair} hair.")
print(f"His teeth are usually {my_teeth} depending on the coffee.")
# this line is tricky, try to get it exactly right
total = my_age + my_height + my_weight
print(f"If I add {my_age}, {my_height}, and {my_weight} I get {total}.")

@ -0,0 +1,22 @@
types_of_people = 10
x = f"There are {types_of_people} types of people."
binary = "binary"
do_not = "don't"
y = f"Those who know {binary} and those who {do_not}."
print(x)
print(y)
print(f"I said: {x}")
print(f"I also said: '{y}'")
hilarious = False
joke_evaluation = "Isn't that joke so funny?! {}"
print(joke_evaluation.format(hilarious))
w = "This is the left side of..."
e = "a string with a right side."
print(w + e)

@ -0,0 +1,21 @@
print("Mary had a little lamb.")
print("Its fleece was white as {}.".format('snow'))
print("And everywhere that Mary went.")
print("." * 10) # what'd that do?
end1 = "C"
end2 = "h"
end3 = "e"
end4 = "e"
end5 = "s"
end6 = "e"
end7 = "B"
end8 = "u"
end9 = "r"
end10 = "g"
end11 = "e"
end12 = "r"
# watch end = ' ' at the end. try removing it to see what happens
print(end1 + end2 + end3 + end4 + end5 + end6, end=' ')
print(end7 + end8 + end9 + end10 + end11 + end12)

@ -0,0 +1,13 @@
formatter = "{} {} {} {}"
print(formatter.format(1, 2, 3, 4))
print(formatter.format("one", "two", "three", "four"))
print(formatter.format(True, False, False, True))
print(formatter.format(formatter, formatter, formatter, formatter))
print(formatter.format(
"Try your",
"Own text here",
"Maybe a poem",
"Or a song about fear"
))

@ -0,0 +1,14 @@
# Here's some new strange stuff, remember to type it exactly.
days = "Mon Tue Wed Thu Fri Sat Sun"
months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print("Here are the days: ", days)
print("Here are the months: ", months)
print("""
There's something going on here.
With the three double-quotes.
We'll be able to type as much as we like.
Even 4 lines if we want, or 5, or 6.
""")

@ -0,0 +1,13 @@
def create(replies):
"""Used for faking out scripts so they can run like
the book needs but be sectioned to appear to be normal.
"""
def input(prompt=None):
reply = replies.pop(0)
if prompt: print(prompt, end=' ')
print(reply)
return reply
return input, input

@ -0,0 +1,3 @@
Mary had a little lamb
Its fleece was white as snow
It was also tasty

@ -0,0 +1,3 @@
Mary had a little lamb
Its fleece was white as snow
It was also tasty

@ -0,0 +1,3 @@
Mary had a little lamb
Its fleece was white as snow
It was also tasty

@ -0,0 +1,25 @@
# this one is like your scripts with argv
def print_two(*args):
arg1, arg2 = args
print(f"arg1: {arg1}, arg2: {arg2}")
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print(f"arg1: {arg1}, arg2: {arg2}")
# this just takes one argument
def print_one(arg1):
print(f"arg1: {arg1}")
# this one takes no arguments
def print_none():
print("I got nothin'.")
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()

@ -0,0 +1,31 @@
### @export "1"
def do_nothing():
pass
### @export "2"
def do_something():
print("I did something!")
### @export "3"
def do_something():
print("I did something!")
# now we can call it by its name
do_something()
### @export "4"
def do_more_things(a, b):
print("A IS", a, "B IS", b)
do_more_things("hello", 1)
### @export "5"
def do_more_things(a, b):
a = "hello"
b = 1
print("A IS", a, "B IS", b)

@ -0,0 +1,26 @@
def cheese_and_crackers(cheese_count, boxes_of_crackers):
print(f"You have {cheese_count} cheeses!")
print(f"You have {boxes_of_crackers} boxes of crackers!")
print("Man that's enough for a party!")
print("Get a blanket.\n")
print("We can just give the function numbers directly:")
cheese_and_crackers(20, 30)
print("OR, we can use variables from our script:")
amount_of_cheese = 10
amount_of_crackers = 50
cheese_and_crackers(amount_of_cheese, amount_of_crackers)
print("We can even do math inside too:")
cheese_and_crackers(10 + 20, 5 + 6)
print("And we can combine the two, variables and math:")
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)

@ -0,0 +1,33 @@
from sys import argv
input_file = "ex20_test.txt"
def print_all(f):
print(f.read())
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print(line_count, f.readline())
current_file = open(input_file)
print("First let's print the whole file:\n")
print_all(current_file)
print("Now let's rewind, kind of like a tape.")
rewind(current_file)
print("Let's print three lines:")
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)

@ -0,0 +1,3 @@
This is line 1
This is line 2
This is line 3

@ -0,0 +1,36 @@
def add(a, b):
print(f"ADDING {a} + {b}")
return a + b
def subtract(a, b):
print(f"SUBTRACTING {a} - {b}")
return a - b
def multiply(a, b):
print(f"MULTIPLYING {a} * {b}")
return a * b
def divide(a, b):
print(f"DIVIDING {a} / {b}")
return a / b
print("Let's do some math with just functions!")
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print(f"Age: {age}, Height: {height}, Weight: {weight}, IQ: {iq}")
# A puzzle for the extra credit, type it in anyway.
print("Here is a puzzle.")
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print("That becomes: ", what, "Can you do it by hand?")

@ -0,0 +1,23 @@
import sys
script, input_encoding, error = sys.argv
def main(language_file, encoding, errors):
line = language_file.readline()
if line:
print_line(line, encoding, errors)
return main(language_file, encoding, errors)
def print_line(line, encoding, errors):
next_lang = line.strip()
raw_bytes = next_lang.encode(encoding, errors=errors)
cooked_string = raw_bytes.decode(encoding, errors=errors)
print(raw_bytes, "<===>", cooked_string)
languages = open("languages.txt", encoding="utf-8")
main(languages, input_encoding, error)

@ -0,0 +1,18 @@
fruit = [
['Apples', 12, 'AAA'], ['Oranges', 1, 'B'],
['Pears', 2, 'A'], ['Grapes', 14, 'UR']]
cars = [
['Cadillac', ['Black', 'Big', 34500]],
['Corvette', ['Red', 'Little', 1000000]],
['Ford', ['Blue', 'Medium', 1234]],
['BMW', ['White', 'Baby', 7890]]
]
languages = [
['Python', ['Slow', ['Terrible', 'Mush']]],
['JavaSCript', ['Moderate', ['Alright', 'Bizarre']]],
['Perl6', ['Moderate', ['Fun', 'Weird']]],
['C', ['Fast', ['Annoying', 'Dangerous']]],
['Forth', ['Fast', ['Fun', 'Difficult']]],
]

@ -0,0 +1,30 @@
fruit = [
{'kind': 'Apples', 'count': 12, 'rating': 'AAA'},
{'kind': 'Oranges', 'count': 1, 'rating': 'B'},
{'kind': 'Pears', 'count': 2, 'rating': 'A'},
{'kind': 'Grapes', 'count': 14, 'rating': 'UR'}
];
cars = [
{'type': 'Cadillac', 'color': 'Black',
'size': 'Big', 'miles': 34500},
{'type': 'Corvette', 'color': 'Red',
'size': 'Little', 'miles': 1000000},
{'type': 'Ford', 'color': 'Blue',
'size': 'Medium', 'miles': 1234},
{'type': 'BMW', 'color': 'White',
'size': 'Baby', 'miles': 7890}
];
languages = [
{'name': 'Python', 'speed': 'Slow',
'opinion': ['Terrible', 'Mush']},
{'name': 'JavaScript', 'speed': 'Moderate',
'opinion': ['Alright', 'Bizarre']},
{'name': 'Perl6', 'speed': 'Moderate',
'opinion': ['Fun', 'Weird']},
{'name': 'C', 'speed': 'Fast',
'opinion': ['Annoying', 'Dangerous']},
{'name': 'Forth', 'speed': 'Fast',
'opinion': ['Fun', 'Difficult']},
];

@ -0,0 +1,38 @@
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""Sorts the words."""
return sorted(words)
def print_first_word(words):
"""Prints the first word after popping it off."""
word = words.pop(0)
print(word)
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print(word)
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)

@ -0,0 +1,16 @@
import ex25
sentence = "All good things come to those who wait."
words = ex25.break_words(sentence)
words
sorted_words = ex25.sort_words(words)
sorted_words
ex25.print_first_word(words)
ex25.print_last_word(words)
words
ex25.print_first_word(sorted_words)
ex25.print_last_word(sorted_words)
sorted_words
sorted_words = ex25.sort_sentence(sentence)
sorted_words
ex25.print_first_and_last(sentence)
ex25.print_first_and_last_sorted(sentence)

@ -0,0 +1,2 @@
name = "Zed"
height = 74

@ -0,0 +1,31 @@
### @export "import"
import ex26
### @export "step1"
print("name", ex26.name)
print("height", ex26.height)
### @export "step2a"
from pprint import pprint
pprint(ex26.__dict__)
### @export "step2b"
print("height is", ex26.height)
print("height is also", ex26.__dict__['height'])
### @export "step3"
print(f"I am currently {ex26.height} inches tall.")
ex26.__dict__['height'] = 1000
print(f"I am now {ex26.height} inches tall.")
ex26.height = 12
print(f"Oops, now I'm {ex26.__dict__['height']} inches tall.")
### @export "step4a"
from pprint import pprint
print(pprint.__doc__)
### @export "step4b"
help(pprint)

@ -0,0 +1 @@
# empty exercise

@ -0,0 +1,31 @@
people = 20
cats = 30
dogs = 15
if people < cats:
print("Too many cats! The world is doomed!")
if people > cats:
print("Not many cats! The world is saved!")
if people < dogs:
print("The world is drooled on!")
if people > dogs:
print("The world is dry!")
dogs += 5
if people >= dogs:
print("People are greater than or equal to dogs.")
if people <= dogs:
print("People are less than or equal to dogs.")
if people == dogs:
print("People are dogs.")

@ -0,0 +1,27 @@
people = 30
cars = 40
trucks = 15
if cars > people:
print("We should take the cars.")
elif cars < people:
print("We should not take the cars.")
else:
print("We can't decide.")
if trucks > cars:
print("That's too many trucks.")
elif trucks < cars:
print("Maybe we could take the trucks.")
else:
print("We still can't decide.")
if people > trucks:
print("Alright, let's just take the trucks.")
else:
print("Fine, let's stay home then.")

@ -0,0 +1,49 @@
### @export "fake"
import fake_input
input, input = fake_input.create([
'1',
'2',
''])
### @export "code"
print("""You enter a dark room with two doors.
Do you go through door #1 or door #2?""")
door = input("> ")
if door == "1":
print("There's a giant bear here eating a cheese cake.")
print("What do you do?")
print("1. Take the cake.")
print("2. Scream at the bear.")
bear = input("> ")
if bear == "1":
print("The bear eats your face off. Good job!")
elif bear == "2":
print("The bear eats your legs off. Good job!")
else:
print(f"Well, doing {bear} is probably better.")
print("Bear runs away.")
elif door == "2":
print("You stare into the endless abyss at Cthulhu's retina.")
print("1. Blueberries.")
print("2. Yellow jacket clothespins.")
print("3. Understanding revolvers yelling melodies.")
insanity = input("> ")
if insanity == "1" or insanity == "2":
print("Your body survives powered by a mind of jello.")
print("Good job!")
else:
print("The insanity rots your eyes into a pool of muck.")
print("Good job!")
else:
print("You stumble around and fall on a knife and die. Good job!")

@ -0,0 +1,13 @@
from dis import dis
dis('''
if door == "1":
print("1")
bear = input("> ")
if bear == "1":
print("bear 1")
elif bear == "2":
print("bear 2")
else:
print("bear 3")
''')

@ -0,0 +1,31 @@
the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']
# this first kind of for-loop goes through a list
for number in the_count:
print(f"This is count {number}")
# same as above
for fruit in fruits:
print(f"A fruit of type: {fruit}")
# also we can go through mixed lists too
for i in change:
print(f"I got {i}")
# we can also build lists, first start with an empty one
elements = []
# then use the range function to do 0 to 5 counts
for i in range(0, 6):
print(f"Adding {i} to the list.")
# append is a function that lists understand
elements.append(i)
# now we can print them out too
for i in elements:
print(f"Element was: {i}")

@ -0,0 +1,18 @@
i = 0
numbers = []
while i < 6:
print(f"At the top i is {i}")
numbers.append(i)
i = i + 1
print("Numbers now: ", numbers)
print(f"At the bottom i is {i}")
print("The numbers: ")
for num in numbers:
print(num)

@ -0,0 +1,87 @@
### @export "fake"
import fake_input
input, input = fake_input.create([
'left',
'taunt bear',
'open door',
'1000'
''])
### @export "code"
from sys import exit
def gold_room():
print("This room is full of gold. How much do you take?")
choice = input("> ")
if "0" in choice or "1" in choice:
how_much = int(choice)
else:
dead("Man, learn to type a number.")
if how_much < 50:
print("Nice, you're not greedy, you win!")
exit(0)
else:
dead("You greedy bastard!")
def bear_room():
print("There is a bear here.")
print("The bear has a bunch of honey.")
print("The fat bear is in front of another door.")
print("How are you going to move the bear?")
bear_moved = False
while True:
choice = input("> ")
if choice == "take honey":
dead("The bear looks at you then slaps your face off.")
elif choice == "taunt bear" and not bear_moved:
print("The bear has moved from the door.")
print("You can go through it now.")
bear_moved = True
elif choice == "taunt bear" and bear_moved:
dead("The bear gets pissed off and chews your leg off.")
elif choice == "open door" and bear_moved:
gold_room()
else:
print("I got no idea what that means.")
def cthulhu_room():
print("Here you see the great evil Cthulhu.")
print("He, it, whatever stares at you and you go insane.")
print("Do you flee for your life or eat your head?")
choice = input("> ")
if "flee" in choice:
start()
elif "head" in choice:
dead("Well that was tasty!")
else:
cthulhu_room()
def dead(why):
print(why, "Good job!")
exit(0)
def start():
print("You are in a dark room.")
print("There is a door to your right and left.")
print("Which one do you take?")
choice = input("> ")
if choice == "left":
bear_room()
elif choice == "right":
cthulhu_room()
else:
dead("You stumble around the room until you starve.")
start()

@ -0,0 +1 @@
# empty exercise

@ -0,0 +1 @@
# empty exercise

@ -0,0 +1,13 @@
def create(replies):
"""Used for faking out scripts so they can run like
the book needs but be sectioned to appear to be normal.
"""
def input(prompt=None):
reply = replies.pop(0)
if prompt: print(prompt, end=' ')
print(reply)
return reply
return input, input

@ -0,0 +1,97 @@
Afrikaans
አማርኛ
Аҧсшәа
العربية
Aragonés
Arpetan
Azərbaycanca
Bamanankan
Bân-lâm-gú
Беларуская
Български
Boarisch
Bosanski
Буряад
Català
Чӑвашла
Čeština
Cymraeg
Dansk
Deutsch
Eesti
Ελληνικά
Español
Esperanto
فارسی
Français
Frysk
Gaelg
Gàidhlig
Galego
한국어
Հայերեն
ि
Hrvatski
Ido
Interlingua
Italiano
עברית
ಕನನಡ
Kapampangan
ქართული
Қазақша
Kreyòl ayisyen
Latgaļu
Latina
Latviešu
Lëtzebuergesch
Lietuvių
Magyar
Македонски
Malti
मर
მარგალური
مازِرونی
Bahasa Melayu
Монгол
Nederlands
ल भ
日本語
Norsk bokmål
Nouormand
Occitan
Oʻzbekcha/ўзбекча
پنجابی
پښتو
Plattdüütsch
Polski
Português
Română
Romani
Русский
Seeltersk
Shqip
Simple English
Slovenčina
کوردیی ناوەندی
Српски / srpski
Suomi
Svenska
Tagalog
தமி
ภาษาไทย
Taqbaylit
Татарча/tatarça
Тоҷикӣ
Türkçe
Українська
اردو
Tiếng Việt
Võro
文言
吴语
ייִדיש
中文

@ -0,0 +1,25 @@
ten_things = "Apples Oranges Crows Telephone Light Sugar"
print("Wait there are not 10 things in that list. Let's fix that.")
stuff = ten_things.split(' ')
more_stuff = ["Day", "Night", "Song", "Frisbee",
"Corn", "Banana", "Girl", "Boy"]
while len(stuff) != 10:
next_one = more_stuff.pop()
print("Adding: ", next_one)
stuff.append(next_one)
print(f"There are {len(stuff)} items now.")
print("There we go: ", stuff)
print("Let's do some things with stuff.")
print(stuff[1])
print(stuff[-1]) # whoa! fancy
print(stuff.pop())
print(' '.join(stuff)) # what? cool!
print('#'.join(stuff[3:5])) # super stellar!

@ -0,0 +1,62 @@
# create a mapping of state to abbreviation
states = {
'Oregon': 'OR',
'Florida': 'FL',
'California': 'CA',
'New York': 'NY',
'Michigan': 'MI'
}
# create a basic set of states and some cities in them
cities = {
'CA': 'San Francisco',
'MI': 'Detroit',
'FL': 'Jacksonville'
}
# add some more cities
cities['NY'] = 'New York'
cities['OR'] = 'Portland'
# print out some cities
print('-' * 10)
print("NY State has: ", cities['NY'])
print("OR State has: ", cities['OR'])
# print some states
print('-' * 10)
print("Michigan's abbreviation is: ", states['Michigan'])
print("Florida's abbreviation is: ", states['Florida'])
# do it by using the state then cities dict
print('-' * 10)
print("Michigan has: ", cities[states['Michigan']])
print("Florida has: ", cities[states['Florida']])
# print every state abbreviation
print('-' * 10)
for state, abbrev in list(states.items()):
print(f"{state} is abbreviated {abbrev}")
# print every city in state
print('-' * 10)
for abbrev, city in list(cities.items()):
print(f"{abbrev} has the city {city}")
# now do both at the same time
print('-' * 10)
for state, abbrev in list(states.items()):
print(f"{state} state is abbreviated {abbrev}")
print(f"and has city {cities[abbrev]}")
print('-' * 10)
# safely get a abbreviation by state that might not be there
state = states.get('Texas')
if not state:
print("Sorry, no Texas.")
# get a city with a default value
city = cities.get('TX', 'Does Not Exist')
print(f"The city for the state 'TX' is: {city}")

@ -0,0 +1,23 @@
### @export "first"
things = ['a', 'b', 'c', 'd']
print(things[1])
things[1] = 'z'
print(things[1])
things
### @export "second"
stuff = {'name': 'Zed', 'age': 39, 'height': 6 * 12 + 2}
print(stuff['name'])
print(stuff['age'])
print(stuff['height'])
stuff['city'] = "SF"
print(stuff['city'])
### @export "third"
stuff[1] = "Wow"
stuff[2] = "Neato"
print(stuff[1])
print(stuff[2])
### @export "fourth"
stuff.pop('city')
stuff.pop(1)
stuff.pop(2)
stuff

@ -0,0 +1,21 @@
class Song(object):
def __init__(self, lyrics):
self.lyrics = lyrics
def sing_me_a_song(self):
for line in self.lyrics:
print(line)
happy_bday = Song(["Happy birthday to you",
"I don't want to get sued",
"So I'll stop right there"])
bulls_on_parade = Song(["They rally around tha family",
"With pockets full of shells"])
happy_bday.sing_me_a_song()
bulls_on_parade.sing_me_a_song()

@ -0,0 +1,68 @@
### @export "part0"
mystuff = {'apple': "I AM APPLES!"}
print(mystuff['apple'])
### @export "part1"
# this goes in mystuff.py
def apple():
print("I AM APPLES!")
### @export "part2"
import mystuff
mystuff.apple()
### @export "part3"
def apple():
print("I AM APPLES!")
# this is just a variable
tangerine = "Living reflection of a dream"
### @export "part4"
import mystuff
mystuff.apple()
print(mystuff.tangerine)
### @export "part5"
mystuff['apple'] # get apple from dict
mystuff.apple() # get apple from the module
mystuff.tangerine # same thing, it's just a variable
### @export "part6"
class MyStuff(object):
def __init__(self):
self.tangerine = "And now a thousand years between"
def apple(self):
print("I AM CLASSY APPLES!")
### @export "part7"
thing = MyStuff()
thing.apple()
print(thing.tangerine)
### @export "part8"
# dict style
mystuff['apples']
# module style
mystuff.apples()
print(mystuff.tangerine)
# class style
thing = MyStuff()
thing.apples()
print(thing.tangerine)

@ -0,0 +1,3 @@
from test_project import testing
testing.hello()

@ -0,0 +1,25 @@
ten_things = "Apples Oranges Crows Telephone Light Sugar"
print("Wait there are not 10 things in that list. Let's fix that.")
stuff = ten_things.split(' ')
more_stuff = ["Day", "Night", "Song", "Frisbee",
"Corn", "Banana", "Girl", "Boy"]
while len(stuff) != 10:
next_one = more_stuff.pop()
print("Adding: ", next_one)
stuff.append(next_one)
print(f"There are {len(stuff)} items now.")
print("There we go: ", stuff)
print("Let's do some things with stuff.")
print(stuff[1])
print(stuff[-1]) # whoa! fancy
print(stuff.pop())
print(' '.join(stuff)) # what? cool!
print('#'.join(stuff[3:5])) # super stellar!

@ -0,0 +1,38 @@
class TheThing(object):
def __init__(self):
self.number = 0
def some_function(self):
print("I got called.")
def add_me_up(self, more):
self.number += more
return self.number
# two different things
a = TheThing()
b = TheThing()
a.some_function()
b.some_function()
print(a.add_me_up(20))
print(b.add_me_up(30))
print(a.number)
print(b.number)
# Study this. This is how you pass a variable
# from one class to another. You will need this.
class TheMultiplier(object):
def __init__(self, base):
self.base = base
def do_it(self, m):
return m * self.base
x = TheMultiplier(a.number)
print(x.do_it(b.number))

@ -0,0 +1,62 @@
# create a mapping of state to abbreviation
states = {
'Oregon': 'OR',
'Florida': 'FL',
'California': 'CA',
'New York': 'NY',
'Michigan': 'MI'
}
# create a basic set of states and some cities in them
cities = {
'CA': 'San Francisco',
'MI': 'Detroit',
'FL': 'Jacksonville'
}
# add some more cities
cities['NY'] = 'New York'
cities['OR'] = 'Portland'
# print out some cities
print('-' * 10)
print("NY State has: ", cities['NY'])
print("OR State has: ", cities['OR'])
# print some states
print('-' * 10)
print("Michigan's abbreviation is: ", states['Michigan'])
print("Florida's abbreviation is: ", states['Florida'])
# do it by using the state then cities dict
print('-' * 10)
print("Michigan has: ", cities[states['Michigan']])
print("Florida has: ", cities[states['Florida']])
# print every state abbreviation
print('-' * 10)
for state, abbrev in list(states.items()):
print(f"{state} is abbreviated {abbrev}")
# print every city in state
print('-' * 10)
for abbrev, city in list(cities.items()):
print(f"{abbrev} has the city {city}")
# now do both at the same time
print('-' * 10)
for state, abbrev in list(states.items()):
print(f"{state} state is abbreviated {abbrev}")
print(f"and has city {cities[abbrev]}")
print('-' * 10)
# safely get a abbreviation by state that might not be there
state = states.get('Texas')
if not state:
print("Sorry, no Texas.")
# get a city with a default value
city = cities.get('TX', 'Does Not Exist')
print(f"The city for the state 'TX' is: {city}")

@ -0,0 +1,57 @@
class Scene(object):
def enter(self):
pass
class Engine(object):
def __init__(self, scene_map):
pass
def play(self):
pass
class Death(Scene):
def enter(self):
pass
class CentralCorridor(Scene):
def enter(self):
pass
class LaserWeaponArmory(Scene):
def enter(self):
pass
class TheBridge(Scene):
def enter(self):
pass
class EscapePod(Scene):
def enter(self):
pass
class Map(object):
def __init__(self, start_scene):
pass
def next_scene(self, scene_name):
pass
def opening_scene(self):
pass
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()

@ -0,0 +1,23 @@
### @export "first"
things = ['a', 'b', 'c', 'd']
print(things[1])
things[1] = 'z'
print(things[1])
things
### @export "second"
stuff = {'name': 'Zed', 'age': 39, 'height': 6 * 12 + 2}
print(stuff['name'])
print(stuff['age'])
print(stuff['height'])
stuff['city'] = "SF"
print(stuff['city'])
### @export "third"
stuff[1] = "Wow"
stuff[2] = "Neato"
print(stuff[1])
print(stuff[2])
### @export "fourth"
stuff.pop('city')
stuff.pop(1)
stuff.pop(2)
stuff

@ -0,0 +1,37 @@
### @export "first"
>>> things = ['a', 'b', 'c', 'd']
>>> print(things[1])
b
>>> things[1] = 'z'
>>> print(things[1])
z
>>> things
['a', 'z', 'c', 'd']
### @export "second"
>>> stuff = {'name': 'Zed', 'age': 39, 'height': 6 * 12 + 2}
>>> print(stuff['name'])
Zed
>>> print(stuff['age'])
39
>>> print(stuff['height'])
74
>>> stuff['city'] = "SF"
>>> print(stuff['city'])
SF
### @export "third"
>>> stuff[1] = "Wow"
>>> stuff[2] = "Neato"
>>> print(stuff[1])
Wow
>>> print(stuff[2])
Neato
### @export "fourth"
>>> stuff.pop('city')
'SF'
>>> stuff.pop(1)
'Wow'
>>> stuff.pop(2)
'Neato'
>>> stuff
{'name': 'Zed', 'age': 39, 'height': 74}
>>>

@ -0,0 +1,10 @@
becky = {
"name": "Becky",
"age": 34,
"eyes": "green"
}
def talk(who, words):
print(f"I am {who['name']} and {words}")
talk(becky, "I am talking here!")

@ -0,0 +1,11 @@
def talk(who, words):
print(f"I am {who['name']} and {words}")
becky = {
"name": "Becky",
"age": 34,
"eyes": "green",
"talk": talk # see this?
}
becky['talk'](becky, "I am talking here!")

@ -0,0 +1,20 @@
# this function makes functions
def constructor(color, size):
print(">>> constructor color:", color, "size:", size)
# watch the indent!
def repeater():
# notice this function is using color, size
print("### repeater color:", color, "size:", size)
print("<<< exit constructor");
return repeater
# what's returned are repeater functions
blue_xl = constructor("blue", "xl")
green_sm = constructor("green", "sm")
# see how these repeaters "know" the parameters?
for i in range(0,4):
blue_xl()
green_sm()

@ -0,0 +1,17 @@
def Person_new(name, age, eyes):
person = {
"name": name,
"age": age,
"eyes": eyes,
}
def talk(words):
print(f"I am {person['name']} and {words}")
person['talk'] = talk
return person
becky = Person_new("Becky", 39, "green")
becky['talk']("I am talking here!")

@ -0,0 +1,13 @@
class Person(object):
# this is double underscores around init
def __init__(self, name, age, eyes):
self.name = name
self.age = age
self.eyes = eyes
def talk(self, words):
print(f"I am {self.name} and {words}")
becky = Person("Becky", 39, "green")
becky.talk("I am talking here!")

@ -0,0 +1,78 @@
## Animal is-a object (yes, sort of confusing) look at the extra credit
class Animal(object):
pass
## ??
class Dog(Animal):
def __init__(self, name):
## ??
self.name = name
## ??
class Cat(Animal):
def __init__(self, name):
## ??
self.name = name
## ??
class Person(object):
def __init__(self, name):
## ??
self.name = name
## Person has-a pet of some kind
self.pet = None
## ??
class Employee(Person):
def __init__(self, name, salary):
## ?? hmm what is this strange magic?
super(Employee, self).__init__(name)
## ??
self.salary = salary
## ??
class Fish(object):
pass
## ??
class Salmon(Fish):
pass
## ??
class Halibut(Fish):
pass
## rover is-a Dog
rover = Dog("Rover")
## ??
satan = Cat("Satan")
## ??
mary = Person("Mary")
## ??
mary.pet = satan
## ??
frank = Employee("Frank", 120000)
## ??
frank.pet = rover
## ??
flipper = Fish()
## ??
crouse = Salmon()
## ??
harry = Halibut()

@ -0,0 +1,180 @@
### @export "fake"
import fake_input
input, input = fake_input.create(['dodge!'])
### @export "imports"
from sys import exit
from random import randint
from ex47_dialogue import DIALOGUE
### @export "scene_class"
class Scene(object):
def enter(self):
print("This scene is not yet configured.")
print("Subclass it and implement enter().")
exit(1)
### @export "engine_class"
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
last_scene = self.scene_map.next_scene('finished')
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
# be sure to print out the last scene
current_scene.enter()
### @export "death_scene"
class Death(Scene):
quips = [
"You died. You kinda suck at this.",
"Your Mom would be proud...if she were smarter.",
"Such a luser.",
"I have a small puppy that's better at this.",
"You're worse than your Dad's jokes."
]
def enter(self):
print(Death.quips[randint(0, len(self.quips)-1)])
exit(1)
### @export "central_corridor"
class CentralCorridor(Scene):
def enter(self):
print(DIALOGUE["CentralCorridor_enter"])
action = input("> ")
if action == "shoot!":
print(DIALOGUE["CentralCorridor_shoot"])
return 'death'
elif action == "dodge!":
print(DIALOGUE["CentralCorridor_dodge"])
return 'death'
elif action == "tell a joke":
print(DIALOGUE["CentralCorridor_joke"])
return 'laser_weapon_armory'
else:
print("DOES NOT COMPUTE!")
return 'central_corridor'
### @export "game_scenes"
class LaserWeaponArmory(Scene):
def enter(self):
print(DIALOGUE["LaserWeaponArmory_enter"])
code = f"{randint(1,9)}{randint(1,9)}{randint(1,9)}"
guess = input("[keypad]> ")
guesses = 0
while guess != code and guesses < 10:
print("BZZZZEDDD!")
guesses += 1
guess = input("[keypad]> ")
if guess == code:
print(DIALOGUE["LaserWeaponArmory_guess"])
return 'the_bridge'
else:
print(DIALOGUE["LaserWeaponArmory_fail"])
return 'death'
class TheBridge(Scene):
def enter(self):
print(DIALOGUE["TheBridge_enter"])
action = input("> ")
if action == "throw the bomb":
print(DIALOGUE["TheBridge_throw_bomb"])
return 'death'
elif action == "slowly place the bomb":
print(DIALOGUE["TheBridge_place_bomb"])
return 'escape_pod'
else:
print("DOES NOT COMPUTE!")
return "the_bridge"
class EscapePod(Scene):
def enter(self):
print(DIALOGUE["EscapePod_enter"])
good_pod = randint(1,5)
guess = input("[pod #]> ")
if int(guess) != good_pod:
print(DIALOGUE["EscapePod_death"]
.format(guess=guess))
return 'death'
else:
print(DIALOGUE["EscapePod_escape"]
.format(guess=guess))
return 'finished'
class Finished(Scene):
def enter(self):
print("You won! Good job.")
return 'finished'
### @export "map_class"
class Map(object):
scenes = {
'central_corridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod(),
'death': Death(),
'finished': Finished(),
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
val = Map.scenes.get(scene_name)
return val
def opening_scene(self):
return self.next_scene(self.start_scene)
### @export "final_run"
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()

@ -0,0 +1,6 @@
$ nosetests
...
----------------------------------------------------------------------
Ran 3 tests in 0.008s
OK

@ -0,0 +1,16 @@
class Room(object):
def __init__(self, name, description):
self.name = name
self.description = description
self.paths = {}
def go(self, direction):
return self.paths.get(direction, None)
def add_paths(self, paths):
self.paths.update(paths)

@ -0,0 +1,57 @@
class Scene(object):
def enter(self):
pass
class Engine(object):
def __init__(self, scene_map):
pass
def play(self):
pass
class Death(Scene):
def enter(self):
pass
class CentralCorridor(Scene):
def enter(self):
pass
class LaserWeaponArmory(Scene):
def enter(self):
pass
class TheBridge(Scene):
def enter(self):
pass
class EscapePod(Scene):
def enter(self):
pass
class Map(object):
def __init__(self, start_scene):
pass
def next_scene(self, scene_name):
pass
def opening_scene(self):
pass
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()

@ -0,0 +1,107 @@
DIALOGUE = {
"CentralCorridor_enter": """
The Gothons of Planet Percal #25 have invaded your ship and
destroyed your entire crew. You are the last surviving
member and your last mission is to get the neutron destruct
bomb from the Weapons Armory, put it in the bridge, and blow
the ship up after getting into an escape pod.
You're running down the central corridor to the Weapons
Armory when a Gothon jumps out, red scaly skin, dark grimy
teeth, and evil clown costume flowing around his hate filled
body. He's blocking the door to the Armory and about to
pull a weapon to blast you.
""",
"CentralCorridor_shoot": """
Quick on the draw you yank out your blaster and fire it at
the Gothon. His clown costume is flowing and moving around
his body, which throws off your aim. Your laser hits his
costume but misses him entirely. This completely ruins his
brand new costume his mother bought him, which makes him fly
into an insane rage and blast you repeatedly in the face
until you are dead. Then he eats you.
""",
"CentralCorridor_dodge": """
Like a world class boxer you dodge, weave, slip and slide
right as the Gothon's blaster cranks a laser past your head.
In the middle of your artful dodge your foot slips and you
bang your head on the metal wall and pass out. You wake up
shortly after only to die as the Gothon stomps on your head
and eats you.
""",
"CentralCorridor_joke": """
Lucky for you they made you learn Gothon insults in the
academy. You tell the one Gothon joke you know: Lbhe zbgure
vf fb sng, jura fur fvgf nebhaq gur ubhfr, fur fvgf nebhaq
gur ubhfr. The Gothon stops, tries not to laugh, then busts
out laughing and can't move. While he's laughing you run up
and shoot him square in the head putting him down, then jump
through the Weapon Armory door.
""",
"LaserWeaponArmory_enter": """
You do a dive roll into the Weapon Armory, crouch and scan
the room for more Gothons that might be hiding. It's dead
quiet, too quiet. You stand up and run to the far side of
the room and find the neutron bomb in its container.
There's a keypad lock on the box and you need the code to
get the bomb out. If you get the code wrong 10 times then
the lock closes forever and you can't get the bomb. The
code is 3 digits.
""",
"LaserWeaponArmory_guess": """
The container clicks open and the seal breaks, letting gas
out. You grab the neutron bomb and run as fast as you can
to the bridge where you must place it in the right spot.
""",
"LaserWeaponArmory_fail": """
The lock buzzes one last time and then you hear a sickening
melting sound as the mechanism is fused together. You
decide to sit there, and finally the Gothons blow up the
ship from their ship and you die.
""",
"TheBridge_enter": """
You burst onto the Bridge with the netron destruct bomb
under your arm and surprise 5 Gothons who are trying to take
control of the ship. Each of them has an even uglier clown
costume than the last. They haven't pulled their weapons
out yet, as they see the active bomb under your arm and
don't want to set it off.
""",
"TheBridge_throw_bomb": """
In a panic you throw the bomb at the group of Gothons and
make a leap for the door. Right as you drop it a Gothon
shoots you right in the back killing you. As you die you
see another Gothon frantically try to disarm the bomb. You
die knowing they will probably blow up when it goes off.
""",
"TheBridge_place_bomb": """
You point your blaster at the bomb under your arm and the
Gothons put their hands up and start to sweat. You inch
backward to the door, open it, and then carefully place the
bomb on the floor, pointing your blaster at it. You then
jump back through the door, punch the close button and blast
the lock so the Gothons can't get out. Now that the bomb is
placed you run to the escape pod to get off this tin can.
""",
"EscapePod_enter":"""
You rush through the ship desperately trying to make it to
the escape pod before the whole ship explodes. It seems
like hardly any Gothons are on the ship, so your run is
clear of interference. You get to the chamber with the
escape pods, and now need to pick one to take. Some of them
could be damaged but you don't have time to look. There's 5
pods, which one do you take?
""",
"EscapePod_death":"""
You jump into pod {guess} and hit the eject button. The pod
escapes out into the void of space, then implodes as the
hull ruptures, crushing your body into jam jelly.
""",
"EscapePod_escape":"""
You jump into pod {guess} and hit the eject button. The pod
easily slides out into space heading to the planet below.
As it flies to the planet, you look back and see your ship
implode then explode like a bright star, taking out the
Gothon ship at the same time. You won!
""",
}

@ -0,0 +1,33 @@
from nose.tools import *
from ex47.game import Room
def test_room():
gold = Room("GoldRoom",
"""This room has gold in it you can grab. There's a
door to the north.""")
assert_equal(gold.name, "GoldRoom")
assert_equal(gold.paths, {})
def test_room_paths():
center = Room("Center", "Test room in the center.")
north = Room("North", "Test room in the north.")
south = Room("South", "Test room in the south.")
center.add_paths({'north': north, 'south': south})
assert_equal(center.go('north'), north)
assert_equal(center.go('south'), south)
def test_map():
start = Room("Start", "You can go west and down a hole.")
west = Room("Trees", "There are trees here, you can go east.")
down = Room("Dungeon", "It's dark down here, you can go up.")
start.add_paths({'west': west, 'down': down})
west.add_paths({'east': start})
down.add_paths({'up': start})
assert_equal(start.go('west'), west)
assert_equal(start.go('west').go('east'), start)
assert_equal(start.go('down').go('up'), start)

@ -0,0 +1,6 @@
def convert_number(s):
try:
return int(s)
except ValueError:
return None

@ -0,0 +1,13 @@
class Parent(object):
def implicit(self):
print("PARENT implicit()")
class Child(Parent):
pass
dad = Parent()
son = Child()
dad.implicit()
son.implicit()

@ -0,0 +1,15 @@
class Parent(object):
def override(self):
print("PARENT override()")
class Child(Parent):
def override(self):
print("CHILD override()")
dad = Parent()
son = Child()
dad.override()
son.override()

@ -0,0 +1,17 @@
class Parent(object):
def altered(self):
print("PARENT altered()")
class Child(Parent):
def altered(self):
print("CHILD, BEFORE PARENT altered()")
super(Child, self).altered()
print("CHILD, AFTER PARENT altered()")
dad = Parent()
son = Child()
dad.altered()
son.altered()

@ -0,0 +1,33 @@
class Parent(object):
def override(self):
print("PARENT override()")
def implicit(self):
print("PARENT implicit()")
def altered(self):
print("PARENT altered()")
class Child(Parent):
def override(self):
print("CHILD override()")
def altered(self):
print("CHILD, BEFORE PARENT altered()")
super(Child, self).altered()
print("CHILD, AFTER PARENT altered()")
dad = Parent()
son = Child()
dad.implicit()
son.implicit()
dad.override()
son.override()
dad.altered()
son.altered()

@ -0,0 +1,32 @@
class Other(object):
def override(self):
print("OTHER override()")
def implicit(self):
print("OTHER implicit()")
def altered(self):
print("OTHER altered()")
class Child(object):
def __init__(self):
self.other = Other()
def implicit(self):
self.other.implicit()
def override(self):
print("CHILD override()")
def altered(self):
print("CHILD, BEFORE OTHER altered()")
self.other.altered()
print("CHILD, AFTER OTHER altered()")
son = Child()
son.implicit()
son.override()
son.altered()

@ -0,0 +1,4 @@
from ex48 import lexicon
lexicon.scan("go north")
lexicon.scan("kill the princess")
lexicon.scan("eat the bear")

@ -0,0 +1,10 @@
from ex48.parser import *
x = parse_sentence([('verb', 'run'), ('direction', 'north')])
x.subject
x.verb
x.object
x = parse_sentence([('noun', 'bear'), ('verb', 'eat'), ('stop', 'the'),
('noun', 'honey')])
x.subject
x.verb
x.object

@ -0,0 +1,11 @@
class Person:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
def hit(self, who):
who.hp -= self.damage
def alive(self):
return self.hp > 0

@ -0,0 +1,9 @@
try:
count = int("hello")
except ValueError:
print("Bad number given.")
try:
assert 1 == 2, "One does not equal 2"
except Exception as what:
print("assert throws", type(what))

@ -0,0 +1,15 @@
from ex50 import Person
def test_combat():
boxer = Person("Boxer", 100, 10)
zombie = Person("Zed", 1000, 1000)
# these asserts are bad, fix them
assert boxer.hp == 100, "Boxer has wrong hp."
assert zombie.hp == 1000, "Zombe has wrong hp."
boxer.hit(zombie)
assert zombie.alive(), "Zombie should be alive."
zombie.hit(boxer)
assert not boxer.alive(), "Boxer should be dead."

@ -0,0 +1,13 @@
def create(replies):
"""Used for faking out scripts so they can run like
the book needs but be sectioned to appear to be normal.
"""
def input(prompt=None):
reply = replies.pop(0)
if prompt: print(prompt, end=' ')
print(reply)
return reply
return input, input

@ -0,0 +1,97 @@
Afrikaans
አማርኛ
Аҧсшәа
العربية
Aragonés
Arpetan
Azərbaycanca
Bamanankan
Bân-lâm-gú
Беларуская
Български
Boarisch
Bosanski
Буряад
Català
Чӑвашла
Čeština
Cymraeg
Dansk
Deutsch
Eesti
Ελληνικά
Español
Esperanto
فارسی
Français
Frysk
Gaelg
Gàidhlig
Galego
한국어
Հայերեն
ि
Hrvatski
Ido
Interlingua
Italiano
עברית
ಕನನಡ
Kapampangan
ქართული
Қазақша
Kreyòl ayisyen
Latgaļu
Latina
Latviešu
Lëtzebuergesch
Lietuvių
Magyar
Македонски
Malti
मर
მარგალური
مازِرونی
Bahasa Melayu
Монгол
Nederlands
ल भ
日本語
Norsk bokmål
Nouormand
Occitan
Oʻzbekcha/ўзбекча
پنجابی
پښتو
Plattdüütsch
Polski
Português
Română
Romani
Русский
Seeltersk
Shqip
Simple English
Slovenčina
کوردیی ناوەندی
Српски / srpski
Suomi
Svenska
Tagalog
தமி
ภาษาไทย
Taqbaylit
Татарча/tatarça
Тоҷикӣ
Türkçe
Українська
اردو
Tiếng Việt
Võro
文言
吴语
ייִדיש
中文

@ -0,0 +1,49 @@
from nose.tools import *
from ex48 import lexicon
def test_directions():
assert_equal(lexicon.scan("north"), [('direction', 'north')])
result = lexicon.scan("north south east")
assert_equal(result, [('direction', 'north'),
('direction', 'south'),
('direction', 'east')])
def test_verbs():
assert_equal(lexicon.scan("go"), [('verb', 'go')])
result = lexicon.scan("go kill eat")
assert_equal(result, [('verb', 'go'),
('verb', 'kill'),
('verb', 'eat')])
def test_stops():
assert_equal(lexicon.scan("the"), [('stop', 'the')])
result = lexicon.scan("the in of")
assert_equal(result, [('stop', 'the'),
('stop', 'in'),
('stop', 'of')])
def test_nouns():
assert_equal(lexicon.scan("bear"), [('noun', 'bear')])
result = lexicon.scan("bear princess")
assert_equal(result, [('noun', 'bear'),
('noun', 'princess')])
def test_numbers():
assert_equal(lexicon.scan("1234"), [('number', 1234)])
result = lexicon.scan("3 91234")
assert_equal(result, [('number', 3),
('number', 91234)])
def test_errors():
assert_equal(lexicon.scan("ASDFADFASDF"),
[('error', 'ASDFADFASDF')])
result = lexicon.scan("bear IAS princess")
assert_equal(result, [('noun', 'bear'),
('error', 'IAS'),
('noun', 'princess')])

@ -0,0 +1,2 @@
def apple():
print("I AM APPLES!")

@ -0,0 +1,3 @@
Mary had a little lamb
Its fleece was white as snow
It was also tasty

@ -0,0 +1,20 @@
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
config = {
'description': 'My Project',
'author': 'My Name',
'url': 'URL to get it at.',
'download_url': 'Where to download it.',
'author_email': 'My email.',
'version': '0.1',
'install_requires': ['nose'],
'packages': ['NAME'],
'scripts': [],
'name': 'projectname'
}
setup(**config)

@ -0,0 +1,3 @@
Mary had a little lamb
Its fleece was white as snow
It was also tasty

@ -0,0 +1,33 @@
from nose.tools import *
from ex47.game import Room
def test_room():
gold = Room("GoldRoom",
"""This room has gold in it you can grab. There's a
door to the north.""")
assert_equal(gold.name, "GoldRoom")
assert_equal(gold.paths, {})
def test_room_paths():
center = Room("Center", "Test room in the center.")
north = Room("North", "Test room in the north.")
south = Room("South", "Test room in the south.")
center.add_paths({'north': north, 'south': south})
assert_equal(center.go('north'), north)
assert_equal(center.go('south'), south)
def test_map():
start = Room("Start", "You can go west and down a hole.")
west = Room("Trees", "There are trees here, you can go east.")
down = Room("Dungeon", "It's dark down here, you can go up.")
start.add_paths({'west': west, 'down': down})
west.add_paths({'east': start})
down.add_paths({'up': start})
assert_equal(start.go('west'), west)
assert_equal(start.go('west').go('east'), start)
assert_equal(start.go('down').go('up'), start)

@ -0,0 +1,14 @@
DROP TABLE IF EXISTS currency;
CREATE TABLE currency (id INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, currency TEXT);
ALTER TABLE rate ADD COLUMN currency_id INTEGER;
INSERT INTO currency (currency) SELECT currency FROM rate GROUP BY
currency;
UPDATE rate SET currency_id = currency.id FROM currency WHERE
rate.currency = currency.currency;
ALTER TABLE rate DROP COLUMN currency;

@ -0,0 +1,19 @@
# import modules I need
import pdftotext
import sys
# open the pdf
infile = open(sys.argv[1], "rb")
# convert it to text
pdf = pdftotext.PDF(infile)
lines = "".join(pdf).split("\n")
# find Reporting Period
for line in lines:
if line.startswith("Reporting Period"):
# print it
print(line)
else:
print(line)

@ -0,0 +1,28 @@
import pdftotext
import sys
import re
# Load your PDF
with open(sys.argv[1], "rb") as f:
pdf = pdftotext.PDF(f)
assert len(pdf) == 1, "This report is more than 1 page!"
lines = "".join(pdf).split("\n")
numbers = re.compile(r"^[,\d\s]+$")
ignore = re.compile(r"^\s*$")
for line in lines:
if line == "\x0c" or ignore.match(line):
# ignore blank lines and trailing junk
continue
elif numbers.match(line):
# it's a number
try:
n = int(line.replace(',',''))
print(n)
except:
print("BAD", repr(line));
else:
print("TEXT", line)

@ -0,0 +1,18 @@
from bs4 import BeautifulSoup
from urllib import request
import os
ttb_url = "https://web.archive.org/web/20230906095156/https://www.ttb.gov/beer/statistics"
if not os.path.exists("ttb_stats.json"):
with open("ttb_page.html", "wb") as f:
resp = request.urlopen(ttb_url)
body = resp.read()
f.write(body)
else:
with open("ttb_page.html") as f:
body = f.read()
# change this to lxml intead of html5lib if you can't use it
soup = BeautifulSoup(body, "html5lib")
print(soup.title)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save