You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Line 8 has an indentation of 7 spaces instead of 8.
Line 21 and 59 are missing the : that is normally in between the type and description of parameters.
On line 34, the parameter description "arbitrary number of stops." is not capitalized. Line 62 (list[tuple]: the list of rows of wagons.) is the same.
On line 59, the wagons_rows parameter is said to be of type list[tuple], but it is actually of type list[list[tuple]]. The return type has the same problem (line 62).
The exemplar solution's docstrings have most of these issues too, as well as an extra period at the end of line 11.
Line 5 has incorrect grammar, it should probably be something along these lines instead: "To extract multiple arguments in the function parameters, you can pack them with the *args operator for list or tuples or **kwargs for keyword-based arguments." This replaces "parameters so can you" with "parameters, you can".
The comma on line 14 isn't necessary and probably isn't grammatical anyway.
Line 31 isn't grammatical, it should be something along these lines instead: "zip(*iterators) can be used to transpose a nested list." This replaces "can use used" with "can be used".
Level three headers in the introduction render as normal text instead of headers in the website's code editor. Affected headers: "Deep unpacking", "Unpacking a list/tuple with *", "Unpacking a dictionary", "Packing a dictionary with **", "Unpacking into function calls". This might just be an issue with the website, though.
Section "3. Remove a suffix from a word" (lines 25-27) has code that isn't surrounded by backticks, e.g. "'beautiful'[:-3] == 'beauti'" should be 'beautiful'[:-3] == 'beauti'
Lines 5 and 6 have the same sentence structure, but line 5 does not have a comma while line 6 does.
Line 8 mentions the range syntax, but the stop placeholder is not surrounded by angled brackets: range(<start>, stop, <step>) should be range(<start>, <stop>, <step>).
Line 13 is missing the parentheses on the append method: <list>.append should be <list>.append().
Not sure if this is intentional or not: Line 25 has two hyphens in a row instead of an em-dash.
Lines 33-38 have strange line spacing that makes the 3 look disconnected from the >>> alien.health. The # Initialized health value. comment should probably be before the >>> alien.health, or at least the blank line in-between should be removed. (If the comment location is changed, the same change should probably be applied to the case at lines 106-108 as well.)
Line 123 is missing the ... at the beginning of the line to indicate that it is a continuation of the >>>.
Line 23 has code that is split into two separate portions instead of unified: "self.<attribute> = <new attribute value>" should be "self.<attribute> = <new attribute value>".
On the last line (line 42), the sentence ends without any punctuation.
Line 78 has incorrect grammar, it should probably be something along these lines instead: "They want you to create a system that creates a unique ticket that is a 12 character long string code for identification." This replaces "is 12 characters long string" with "is a 12 character long string".
Line 81 is confusing, it should probably be something along these lines instead: "The rest of the code is filled with 0s." This replaces "is appended by 0s" with "is filled with 0s".
On line 37 (line 42 in the exemplar), "example" is misspelled as "exampl".
Lines 42 and 56 (line 74 in the exemplar) are only single empty lines in between function definitions, when elsewhere in the file (and in the track as a whole) there are always two blank lines in between functions.
The footnote on lines 188 and 191 is a bit confusing, so it would be better if the link was just on line 188. Even if it is kept how it is, the stray underscore on line 191 should be removed.
Lines 243 and 270 have an extra space between return and self.
Line 12 has incorrect grammar, it should probably be something along these lines instead: "Strings can be concatenated with <str> + <other str> or <str>.join(<iterable>), as well as split via <str>.split(<separator>). They also offer multiple formatting, assembly, and templating options."
Line 104 mentions the slice syntax, but the stop placeholder is not surrounded by angled brackets: <str>[<start>:stop:<step>] should be <str>[<start>:<stop>:<step>].
Line 63 has a comma before an & instead of a space.
The comment on line 75 is not capitalized and has no space after the #.
On line 107, it says "The details of None will be covered in a later exercise." However, there is no exercise for the None concept, so it should say "The details of None will be covered in a later concept."
On line 105, "functions.," has a period before the comma.
Line 117 has a comma before the & even though it isn't a list of items.
The comment on line 129 is not capitalized and has no space after the #.
On line 160, it says "The details of None will be covered in a later exercise." However, there is no exercise for the None concept, so it should say "The details of None will be covered in a later concept."
Line 211 is missing the ... at the beginning of the line to indicate that it is a continuation of the >>>.
Not sure if this is intentional or not: On line 75 and 242, there is no >>> before the import statement.
Not sure if this is intentional or not: Lines 276 and 288 are unnecessary empty lines at the beginning and end of a code block. Other code blocks don't seem to have empty lines like this.
Line 138 mentions the round() syntax, but the number placeholder is not surrounded by angled brackets: round(number, <decimal_places>) should be round(<number>, <decimal_places>).
Lines 62 to 71, 86 to 93, 107 to 117, and 155 to 158 are missing the ... at the beginning of the line to indicate that they are a continuation of the >>>.
Line 133 has code syntax that is split into separate portions instead of unified: "<value if True> if <conditional test> else <value if False>" should probably be "<value if True> if <conditional test> else <value if False>"
The code in the code block on lines 153 to 178 says "Falsey", while the previous paragraph spelled it as "falsy".
Not sure if this is intentional or not: Line 60 is an unnecessary empty line at the beginning of a code block. Other code blocks don't seem to have an empty line like this.
Line 9 has incorrect grammar, it should probably be something along these lines instead: "Strings can be concatenated with <str> + <other str> or <str>.join(<iterable>), as well as split via <str>.split(<separator>). They also offer multiple formatting, assembly, and templating options."
The syntaxes on line 15 are missing the <str>. that the other ones have. For example, startswith(<substr>) would be <str>.startswith(<substr>).
Line 36 has >> instead of >>>.
Line 120 has an unparsed :star: emoji.
On line 147, it says "Python also supports regular expressions via the re module, which will be covered in a future exercise." However, there is no exercise for the Regular Expressions concept, so it should say "Python also supports regular expressions via the re module, which will be covered in a future concept."
Lines 52 to 60 and 68 to 71 are missing the ... at the beginning of the line to indicate that they are a continuation of the >>>.
Line 177 mentions the slice syntax, but the start and stop placeholders are not surrounded by angled brackets: <list>[start:stop] should be <list>[<start>:<stop>].
Not sure if this is intentional or not: Line 338 has strange spacing, it would look nicer if it was game_grid = [[0]*8]*8 or game_grid = [[0]*8] * 8.
Line 14 has a extra/stray underscore: "(at minimum_)".
Line 50 has an extra period at the end; there is one on both sides of the closing parenthesis. The sentence is also extremely long, the part in parentheses should probably be its own sentence.
Lines 34 and 98 are unnecessary empty lines at the beginning of a code block. Other code blocks don't seem to have an empty line like this.
Lines 179 and 181 have an indentation of 7 spaces when it should be 8.
Line 205 is an empty line. If this is intentional, it should have a ... to indicate it is a continuation of the >>>.
Either lines 206 to 209 should have an indentation of 1 space instead of 0, or lines 228 and 229 should have an indentation of 0 spaces when it should be 1.
Line 230 has an indentation of 3 spaces when it should be 4.
Not sure if this is intentional or not: The code block on lines 154 to 167 don't use the >>> syntax like all of the others.
Line 105 should probably have a comma after "which unpacks each tuple".
Lines 125, 175, 177, 186, and 208 are unnecessary empty lines at the beginning or end of a code block. Other code blocks don't seem to have an empty line like this.
Lines 126, 149, and 176 have a space before the closing parenthesis.
Lines 152 and 161 are empty lines in the middle of a >>>/... block. They should either be removed or replaced with a ....
Line 160 is missing a space between the last + operator and string: +".".
Lines 188 to 192 and lines 195 to 200 have extreme over-indentation.
On line 6, keys are mentioned as "Keys". This should probably be changed to "Keys" or "keys".
Line 8 says "lists, dicts, or sets". For consistency, this should be "lists, dicts, or sets".
Line 23 is missing a space between "class" and "method".
The wording in line 24 is odd, it should probably be "Using" instead of "Creating".
The list on lines 23 to 27 has a period at the end of the last item, but not the other items. All items should be consistent with ending in punctuation versus not.
Lines 39, 58, 59, 63 to 65, 153 to 155, and 216 to 220 are missing the ... to indicate that the line is a continuation of the >>>.
For consistency with the previous lines, the "dicts" on line 48 should be "dicts".
For the code block on lines 75 to 106, decreasing the amount of spaces used to indicate indentation levels would greatly increase readability. It's practically incomprehensible on the website because of the over-indentation and wrapping.
On line 188, the .pop() syntax is mentioned, but the dict placeholder does not have angled brackets: dict.pop(<key>, <default value>) should be <dict>.pop(<key>, <default value>).
Line 211 has incorrect grammar: "You can also use the del statement to remove a single or multiple entries." This should be changed to be something like the following: "You can also use the del statement to remove one or multiple entries." This changes "a single" to "one".
Line 212 misspells "KeyError" as "KeError".
Lines 248 and 260 have a >>> when it should be a ....
Line 248 does not have a space between the # and the comment.
Lines 7 to 14 have many missing angled brackets. This is also present in introduction.md.
Line 10 has a stray period.
Lines 19, 22, and 23 are missing angled brackets around the key placeholders.
On line 22, "KeyError" should probably be "KeyError".
Line 41 is missing angled brackets around the iterable placeholder.
Some lines are missing the ... to indicate that the line is a continuation of the >>>. These lines are 60, 61, 90, 91, 129, 130, 153, 154, 156, 157, 170 to 174, 177, 178, 199, 200, 203, 204, 221, 222, 244 to 248, 281 to 284, 303, and 319 to 329.
There is a stray space on line 139 between print() and its argument. It was probably supposed to be before the print as indentation.
Line 169 has extra spaces between the = and the {.
Lines 336 and 339 do not have spaces in between the # and the comment.
Not sure if this is intentional or not: Lines 74 and 77 are empty lines around the error traceback.
Some lines are missing the ... to indicate that the line is a continuation of the >>>. These lines are 46, 47, 68, 74, 113, 114, 123, 124, 190, 194 to 203, 285, 288, 317, 343 to 354, 357, 377 to 379, 382 to 384, 387 to 390, 436, 437, 440, 441, 444, 445, 448 to 451, and 454.
On line 177, "sets or frozensets" should be "sets or frozensets".
On line 182, "sets" should be "set's".
Lines 278 and 280 have incorrect backtick placement:
Line 278 should be "A set is a proper subset if (<set> <= <other_set>) AND (<set> != <other_set>) for the < operator."
Line 280 should be "A set is a proper superset if (<set> >= <other_set>) AND (<set> != <other_set>) for the > operator."
Line 339 is missing spaces and the - operator in between ... and <other set n>.
Line 373 is missing the & operator in between ... and <other set n>.
Line 40 is a bit confusing: "Generators may be used in place of most iterables in Python. This includes functions or objects that require an iterable/iterator as an argument." I think it should strictly state that generators are a type of iterator, and that they can be used anywhere that expects an iterable/iterator, just not a specific type of iterable/iterator like a list. This is cleared up in the "Difference between iterables and generators" section, but that section is only a side note in Plane Tickets.
Line 21 does not seem grammatical. It should probably be: "So if we want to represent the number 6 in binary, it would be 110."
Lines 44, 151, and 188 have a redundant comment.
The code blocks on lines 80 to 88, 133 to 135, 165 to 167, and 202 to 204 do not acutally end, they are missing the triple backticks at the end. This messes up the formatting of the following headers and paragraphs.
The header on line 178 should be a level 2 header, not a level 3 one. Right now, the "Hexadecimal" header is under the "Octal" header, which seems unintentional.
On line 185, "int" should be "ints".
Line 193 has a single hyphen ("-") instead of an em-dash ("—"). The grammar on this line is also a little strange, it should probably end with "operations with them." instead of just "operations."
As per this forum post, this issue will be a collection of all typos and similar errors I find from now on, grouped by exercise/concept.
Concept Exercises
Locomotive Engineer (addressed in PR 4173):
details
:that is normally in between the type and description of parameters.arbitrary number of stops." is not capitalized. Line 62 (list[tuple]: the list of rows of wagons.) is the same.wagons_rowsparameter is said to be of typelist[tuple], but it is actually of typelist[list[tuple]]. The return type has the same problem (line 62).hints.md:*argsoperator forlistortuplesor**kwargsfor keyword-based arguments." This replaces "parameters so can you" with "parameters, you can".zip(*iterators)can be used to transpose a nestedlist." This replaces "can use used" with "can be used".*", "Unpacking a dictionary", "Packing a dictionary with**", "Unpacking into function calls". This might just be an issue with the website, though.Little Sister's Essay (addressed in PR 4172):
details
Currency Exchange (addressed in PR 4178):
details
get_change()on line 45 (line 43 in the exemplar) has a period before the>>>, unlike all the other examples.Little Sister's Vocabulary (addressed in PR 4172):
details
hints.md:'beautiful'[:-3] == 'beauti'Black Jack (addressed in PR 4171):
details
tupletype is mentioned, but it capitalizes it as "Tuple".Card Games (addressed in PR 4171):
details
Making the Grade (addressed in PR 4175):
details
highest: int -instead ofhighest (int):list[float|int]type, which is equivalent tolist[float].hints.md:stopplaceholder is not surrounded by angled brackets:range(<start>, stop, <step>)should berange(<start>, <stop>, <step>).appendmethod:<list>.appendshould be<list>.append().Tisbury Treasure Hunt (addressed in PR 4175):
details
hints.mdEllen's Alien Game (addressed in PR 4176):
details
introduction.md:returnandself.instructions.md:3look disconnected from the>>> alien.health. The# Initialized health value.comment should probably be before the>>> alien.health, or at least the blank line in-between should be removed. (If the comment location is changed, the same change should probably be applied to the case at lines 106-108 as well.)...at the beginning of the line to indicate that it is a continuation of the>>>.(Student):andCreate.hints.md:self.<attribute>=<new attribute value>" should be "self.<attribute> = <new attribute value>".Plane Tickets (addressed in PR 4180):
details
instructions.md:0s." This replaces "is appended by0s" with "is filled with0s".Concept Docs
Classes (addressed in PR 4176):
details
about.md:returnandself.Strings (addressed in PR 4172):
details
introduction.md:about.md:<str> + <other str>or<str>.join(<iterable>), as well as split via<str>.split(<separator>). They also offer multiple formatting, assembly, and templating options."stopplaceholder is not surrounded by angled brackets:<str>[<start>:stop:<step>]should be<str>[<start>:<stop>:<step>].Basics (addressed in PR 4179):
details
introduction.md:&instead of a space.#.Nonewill be covered in a later exercise." However, there is no exercise for theNoneconcept, so it should say "The details ofNonewill be covered in a later concept."about.md:&even though it isn't a list of items.#.Nonewill be covered in a later exercise." However, there is no exercise for theNoneconcept, so it should say "The details ofNonewill be covered in a later concept."...at the beginning of the line to indicate that it is a continuation of the>>>.>>>before theimportstatement.Numbers (addressed in PR 4178):
details
about.md:round()syntax, but thenumberplaceholder is not surrounded by angled brackets:round(number, <decimal_places>)should beround(<number>, <decimal_places>).Bools (addressed in PR 4178):
details
about.md:>>>and the expression.1,'',[], or{})".Conditionals (addressed in PR 4179):
details
introduction.md:...at the beginning of the line to indicate that they are a continuation of the>>>.about.md:...at the beginning of the line to indicate that they are a continuation of the>>>.<value if True>if<conditional test>else<value if False>" should probably be "<value if True> if <conditional test> else <value if False>"Comparisons (addressed in PR 4171):
details
about.md:x < yandy <= z" should probably be "x < y and y <= z">>>statement.introduction.md.)String Methods (addressed in PR 4172):
details
about.md:<str> + <other str>or<str>.join(<iterable>), as well as split via<str>.split(<separator>). They also offer multiple formatting, assembly, and templating options."<str>.that the other ones have. For example,startswith(<substr>)would be<str>.startswith(<substr>).>>instead of>>>.:star:emoji.remodule, which will be covered in a future exercise." However, there is no exercise for theRegular Expressionsconcept, so it should say "Python also supports regular expressions via theremodule, which will be covered in a future concept."Lists (addressed in PR 4171):
details
about.md:...at the beginning of the line to indicate that they are a continuation of the>>>.startandstopplaceholders are not surrounded by angled brackets:<list>[start:stop]should be<list>[<start>:<stop>].game_grid = [[0]*8]*8orgame_grid = [[0]*8] * 8.List Methods (addressed in PR 4179):
details
about.md:Loops (addressed in PR 4175):
details
about.md:...to indicate it is a continuation of the>>>.>>>syntax like all of the others.Tuples (addressed in PR 4175):
details
about.md:<element)1>instead of<element_1>.tuple".>>>/...block. They should either be removed or replaced with a....+operator and string:+".".Dicts (addressed in PR 4177):
details
introduction.md:Keys". This should probably be changed to "Keys" or "keys".lists,dicts, orsets". For consistency, this should be "lists,dicts, orsets".about.md:Keys". This should probably be changed to "Keys" or "keys".lists,dicts, orsets". For consistency, this should be "lists,dicts, orsets"....to indicate that the line is a continuation of the>>>.dicts" on line 48 should be "dicts"..pop()syntax is mentioned, but thedictplaceholder does not have angled brackets:dict.pop(<key>, <default value>)should be<dict>.pop(<key>, <default value>).delstatement to remove a single or multiple entries." This should be changed to be something like the following: "You can also use thedelstatement to remove one or multiple entries." This changes "a single" to "one".KeyError" as "KeError".>>>when it should be a....#and the comment.Dict Methods:
about.md:dicts" should be "dicts".introduction.md.keyplaceholders.KeyError".iterableplaceholder.Some lines are missing the...to indicate that the line is a continuation of the>>>. These lines are 60, 61, 90, 91, 129, 130, 153, 154, 156, 157, 170 to 174, 177, 178, 199, 200, 203, 204, 221, 222, 244 to 248, 281 to 284, 303, and 319 to 329.print()and its argument. It was probably supposed to be before the print as indentation.=and the{.#and the comment.Sets:
introduction.mdandabout.md:frozensetsshould befrozenset.about.md:Some lines are missing the...to indicate that the line is a continuation of the>>>. These lines are 46, 47, 68, 74, 113, 114, 123, 124, 190, 194 to 203, 285, 288, 317, 343 to 354, 357, 377 to 379, 382 to 384, 387 to 390, 436, 437, 440, 441, 444, 445, 448 to 451, and 454.setsorfrozensets" should be "sets orfrozensets".sets" should be "set's".setis a proper subset if (<set> <= <other_set>) AND (<set> != <other_set>) for the<operator."setis a proper superset if (<set> >= <other_set>) AND (<set> != <other_set>) for the>operator."-operator in between...and<other set n>.&operator in between...and<other set n>.Unpacking and Multiple Assignment:
about.md:lists/tuples" should be "lists/tuples". (Also present inintroduction.md).list/tuple/dictionary".Generators:
about.md:iterablesin Python. This includes functions or objects that require aniterable/iteratoras an argument." I think it should strictly state that generators are a type ofiterator, and that they can be used anywhere that expects aniterable/iterator, just not a specific type ofiterable/iteratorlike alist. This is cleared up in the "Difference between iterables and generators" section, but that section is only a side note in Plane Tickets.Binary, Octal, and Hexadecimal:
introduction.md:about.md:int" should be "ints".