Repository navigation
[Exercise Approaches]: Audit/Cleanup of Track Approaches 2025/2026 #4055
Copy link
Copy link
Closed
Labels
x:rep/largeLarge amount of reputationLarge amount of reputation
Description
This is a tracking issue for existing approaches on the Python track
This was Part 1. You can find Part 2 here under issue 4197
Related forum thread for general discussion
During discussion on this Forum Post, @petrem volunteered to audit the Python track approaches for the following:
- Spelling, grammar, typos
- Python syntax
- Clarity of writing & explanation
- Readability and maintainability
- White space
- Other Exercism markdown specifications as needed
- Possible missing/additional approaches (noted as TODOs of future work)
See the table of existing/in progress/missing approaches below. Exercises with one ✅ are unaudited, exercises with two ✅ ✅ have been reviewed, changed and merged. highlighted exercises are in review.
Exercises without checkmarks or PRs do not yet have approaches. If you want to work on an exercise that is missing an approach, please check in with the maintainers to avoid conflicting with current track priorities or others who may be working on things.
Table of Existing/In Progress/Missing Approaches
| Completed? | Exercise Name |
|---|---|
| ✅ | Acronym |
| Affine Cipher | |
| ✅ | All Your Base |
| IN PROGRESS (PR forthcoming) | Allergies |
| Alphametics | |
| IN PROGRESS (PR forthcoming) | Anagram |
| IN PROGRESS (PR forthcoming) | Armstrong Numbers |
| ✅ | Atbash Cipher |
| Bank Account | |
| Binary Search Tree | |
| Binary Search | |
| ✅ | Bob |
| IN PROGRESS (PR forthcoming) | Book Store |
| Bottle Song | |
| Bowling | |
| Change | |
| ✅ | Circular Buffer |
| Clock | |
| ✅ | Collatz Conjecture |
| Complex Numbers | |
| Connect | |
| Crypto Square | |
| ✅ | Darts |
| Diamond | |
| Difference Of Squares | |
| Diffie Hellman | |
| ✅ | Dnd Character |
| Dominoes | |
| Dot Dsl | |
| IN PROGRESS (PR 3378) | Etl |
| Flatten Array | |
| Food Chain | |
| Forth | |
| IN PROGRESS (PR 3772) | Gigasecond |
| Go Counting | |
| Grade School | |
| ✅ | Grains |
| Grep | |
| ✅ | Hamming |
| Hangman | |
| High Scores | |
| House | |
| IN PROGRESS (PR forthcoming) | Isbn Verifier |
| ✅ | Isogram |
| Kindergarten Garden | |
| Knapsack | |
| Largest Series Product | |
| ✅ | Leap |
| Ledger | |
| Linked List | |
| List Ops | |
| ✅ | Luhn |
| IN PROGRESS (forthcoming PR) | Markdown |
| Matching Brackets | |
| IN PROGRESS (PR forthcoming) | Matrix |
| Meetup | |
| ✅ | Flower Field (Minesweeper) |
| ✅ | Nth Prime |
| Ocr Numbers | |
| Paasio | |
| ✅ | Palindrome Products |
| ✅ | Pangram |
| IN PROGRESS (PR forthcoming) | Perfect Numbers |
| Phone Number | |
| ✅ | Pig Latin |
| Poker | |
| Pov | |
| Prime Factors | |
| IN PROGRESS (forthcoming PR) | Protein Translation |
| Proverb | |
| Pythagorean Triplet | |
| Queen Attack | |
| Rail Fence Cipher | |
| ✅ | Raindrops |
| Rational Numbers | |
| React | |
| Rectangles | |
| Resistor Color Trio | |
| Resistor Color Duo | |
| Resistor Color | |
| Rest Api | |
| ✅ | Reverse String |
| ✅✅ (PR #4052 ) | Rna Transcription |
| ✅✅ (PR #4051 ) | Robot Name |
| IN PROGRESS (PR forthcoming) | Robot Simulator |
| ✅ | Roman Numerals |
| ✅ | Rotational Cipher |
| Run Length Encoding | |
| IN PROGRESS (PR forthcoming) | Saddle Points |
| Satellite | |
| IN PROGRESS (PR forthcoming) | Say |
| Scale Generator | |
| ✅ | Scrabble Score |
| Secret Handshake | |
| Series | |
| Sgf Parsing | |
| ✅ | Sieve |
| Simple Cipher | |
| Simple Linked List | |
| IN PROGRESS (PR forthcoming) | Space Age |
| Spiral Matrix | |
| ✅ | Sublist |
| IN PROGRESS (PR 3375) | Sum Of Multiples |
| Tournament | |
| IN PROGRESS (PR forthcoming) | Transpose |
| Tree Building | |
| IN PROGRESS (PR forthcoming) | Triangle |
| Twelve Days | |
| Two Bucket | |
| Two Fer | |
| Variable Length Quantity | |
| IN PROGRESS (PR 3371) | Word Count |
| Word Search | |
| ✅ | Wordy |
| ✅ | Yacht |
| Zebra Puzzle | |
| Zipper |
Reactions are currently unavailable
Metadata
Metadata
Labels
x:rep/largeLarge amount of reputationLarge amount of reputation
Activity
petrem commentedon Dec 25, 2025
General question regarding quotes, following discussion in in previous PR: besides checking for consistency (using either simple or double quotes), should reviews also switch to single quotes, even if otherwise consistent?
The change is relatively easy to do, but long-term consistency is probably difficult to maintain without tooling support.
BethanyG commentedon Dec 25, 2025
I hesitate to do a mass conversion. Maybe its just me - but the thought of embarking on that "quest", even with tooling support feels like inviting disaster. Too many instances where context could be missed, or readability hurt.
But I'd be open to hearing arguments both pro and con, and agree that a tool would be better for enforcement. Any thoughts or recommendations?
My first impulse is to use something like prettier (it has a single quote rule) either offline or as part of CI. Although we'd have to be careful. Something like Black does the opposite, and cannot be configured otherwise. But I have not done any digging for alternates to those recently.
Right now, we use Black to format the test files that are auto-generated from problem specs, but we don't use it other places. It's default configuration utterly munges the readability of files like the set concept exercise data files, and AFAK any data structure that's long or dense. But let me stop before this becomes a rant.....
BethanyG commentedon Dec 25, 2025
I should chime in here with the Emerson quote via PEP8 chestnut: "A foolish consistency is the hobgoblin of little minds". 😉 -- because I just remembered one important exception. Docstrings always have double quotes for readability. So there is that as well. Sigh.
petrem commentedon Dec 25, 2025
To be sure, I was just asking. I see no problem with either single or double quotes per se, only that usage should be consistent. I'd be cautious with auto-formatters, but that's a different matter and indeed could become a long rant :)
BethanyG commentedon Dec 27, 2025
Just did a re-read of
Wordyand saw that it mostly uses double quotes. 😆 🤦🏽♀️ Feel free to convert or leave. Again -- I just have given up making all quotes consistent cross-track. But we should strive to make each set of docs internally consistent if we can.BethanyG commentedon Feb 20, 2026
Just checking in - are you still interested in this, or should we farm out/shelve the audit? No pressure or expectation, just checking in. 💙 Since the track upgrade is now completed, I have time to look at things and also add content. So I might add or audit some things as well.
BethanyG commentedon Mar 2, 2026
Putting this on hold for now. I need to get the queue down and work on concept exercises.
[-][Exercise Approaches]: Audit/Cleanup of Track Approaches 2025[/-][+][Exercise Approaches]: Audit/Cleanup of Track Approaches 2025/2026[/+]BethanyG commentedon May 15, 2026
Taking this off hold as @Yrahcaz7 has started to review these, and @petrem is busy with other things.
30 remaining items
BethanyG commentedon May 21, 2026
I think it is needed for the concept hover over, but we should find out in the docs. 😄
So I think we were trying to use a widget here, but I honestly cannot remember.
Double check me here, but I think the
elseis considered part of thetry-exceptblock. It's optional, but it's part of the structure. But if that's not clear from the phrasing, we should link to something or explain it clearly. If you searchelseon this page, there is an explanation:My understanding it that is not necessary. But let me review it to make sure. edit: sigh, I am a bad Pythonista. It should be
from, since there isexception chainingYrahcaz7 commentedon May 21, 2026
No, it's not that bad, the density of errors isn't that high... It's just because the amount of content is so much.
Yrahcaz7 commentedon May 21, 2026
I see... This particular
elseisn't that type ofelse, though, so I guess changing the text would cause more confusion than leaving it as-is.Yrahcaz7 commentedon May 21, 2026
I mean, the code runs fine without it, it's just that Pylint complains. Something about making it harder to debug, I think. Probably not too relevant here.
BethanyG commentedon May 21, 2026
?!!? let me take a closer look at that code..... Ah! brain fart. Yeah. The edit makes sense. Sorry. 😄
Yrahcaz7 commentedon May 21, 2026
Should I add a clarification that about the
elsebeing anif-elif-elsetype one once I make the edit then?BethanyG commentedon May 21, 2026
Apologies. I think we want the code to stay the same, but maybe we change the text to reflect that we've got one
raiseinside thetry .. except, and one outside. Does that make sense?No need to do the special-case of using an
elsewithtry .. exceptunless we really need to.BethanyG commentedon May 21, 2026
Also? We can do the rest of this in the PR. This issue is getting .... way too large!
In fact, mebby we close this one and have you open a "part two"? We can copy the first description for tracking and mention this is the part 1 issue.
That way, I can reward you rep for all the documentation you are doing within the issue. 😄
Yrahcaz7 commentedon May 21, 2026
Good idea!
Just one last thing I want to clarify. It's been settled as:
raiseinside thetry .. exceptvs theraiseoutside it when necessary. Not referring toelsein any way....Right?
BethanyG commentedon May 21, 2026
Right. Sometimes, my brain just...drifts. This is why having reviews is a good thing. 😄
BethanyG commentedon May 21, 2026
Stepping away for a little bit to fix dinner. Should be back in about an hour.
Yrahcaz7 commentedon May 21, 2026
@BethanyG, I just opened the new issue. I can't copy the table without it becoming a weird mess of some reason, so can you please copy it over? I think you should have edit permissions on the post.
Edit: Whoops, bad timing!
BethanyG commentedon May 21, 2026
No worries! I think we're good. I am going to close this one now, methinks. 😄
BethanyG commentedon May 21, 2026
Closing, as we've changed a bunch of these, and this issue is getting hard to manage. Will update the table in the Part 2 issue.