python drawing fractals

Recursive drawings/fractals. Use recursion to make some interesting drawings. This should have a

GUI (graphical user interface) as well as drawings. There should be user choices for some or all of the following: the kind of drawing, the colors, the position, the size or some restrictions on the size, the recursion depth. There should be multiple drawings.

All programming should be object-oriented. I.e., all methods, other than the main function, should be a part of a class. Your main function should create instances of your classes and call methods on those instances/objects.

Your program should open with an easy-to-use, readable, and forgiving “menu,” graphical or otherwise, that lets the user choose between the two programs that you and your partner have chosen to implement. By “forgiving” I mean the program should not crash if the user doesn’t perfectly follow your instructions correctly the first time. Program robustness (does it crash when the user clicks the wrong place or makes multiple clicks or types the wrong input, etc) will be evaluated. Also, as always, your instructions to the user need to be concise and clear.

Your assignment will be graded on two general criteria: functionality and style.

Functionality.
Program introduces itself to the user, describing its purpose, and has a pleasing and polished /4 overall presentation:

Program satisfies all basic functionality requirements as stated on assignment page: /27 Computations are correct: /25

User-friendly user input (the user is given prompts so that s/he doesn’t have to guess what to /4 do next, etc):

Nicely presented output (e.g., the winner is displayed clearly, along with the total points in /8 each hand, etc):

Other subtractions (all or parts of it are not object-oriented, recursion not used as required, lateness, buggy behavior, etc.):

Bonus for extra creativity: Functionality total (out of 68):

Style and Documentation.
Code is structured sensibly, is clean, organized and efficient: /20 Comments both at the top (including name, date and description) and in body of code: /8 Variables and functions have descriptive names: /4 Style total (out of 32):

General feedback:

Assignment 6 total (i.e., total of A + B, out of 100):

Below I’ve pasted some sample grading notes from previous semesters… note that this list is not comprehensive, and actual point deduction values will be made on a case-by-case basis, as the same issue in two different contexts can have different degrees of severity.

Anagrams
Duplicate anagram solutions are removed +1

Duplicate anagram solutions are removed +1

Searching for anagrams in dictionary was done using linear search rather than binary search, resulting in long delays when input strings are longer… -4

Math

Your function for counting combinations of a number of items is not recursive. You should have used the recursive definition for “n choose k” given in programming exercise 7 of chapter 13. -4

Your function for counting combinations of a number of items is not recursive. You should have used the recursive definition for “n choose k” given in programming exercise 7 of chapter 13. -2

Because of this, your solution is buggy for certain inputs (like 4 choose 4). -2

Base conversion is incorrect. Your code does not follow the algorithm given in textbook exercise (chapter 13 #5). -4

Your code for combination selection is very close, but in the end, instead of returning the solution given by the recursive calls, you return the solution given by a non-recursive computation (using factorials). -2

Your program for converting a number to a different base has an error because you use the same name for your function (“base”) as you do for your variable, so when you try to make your recursive call it thinks that you are referring to the variable name, not the function name. That’s why you get the error: TypeError: ‘int’ object is not callable -8

Other

When I click twice anywhere the program exits. This is confusing because all the buttons still seem active (after generating one set of anagrams, for example), but they don’t actually work anymore. -2

From assignment page: “All programming should be object-oriented. I.e., all methods should be a part of a class. Your main function should create instances of your classes and call methods on them.” -8

Took me a while to figure out how to make the drawing program work. Had to read the code before I figured it out: after inputting “iterations,” I needed to click twice, with the second click on the button I wanted. -2

Math program does not end gracefully. -1
No names anywhere in the code. No comments at the top of the program(s). -2 The kcurve is not complete -2

Your big if statements just use the same code for every single case. You should instead just delete the 5 copies of the code and only keep one. I.e., remove the big if statements as they serve no purpose. -3