diff --git a/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 24b5cf7e8f5..da60c1365aa 100644
--- a/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 7c24428fcf6..aac742550c0 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index bb193032f76..52b794e53cd 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index ff752ae1440..38d57f7ad1d 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index 96acebed794..ba163890b27 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index c00b2a31e40..ec17959bd33 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index 37089f56017..0d0930f573f 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index 486eee76f6e..28380f57ddb 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index d02d73a543b..d22737a8d98 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index 8586965251d..7f3e0dac2f6 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index bf5f921bfed..fd9f13edc6b 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index 2d8e14b4bf1..eb89937ab83 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index 907139927d5..85b59eb9d4a 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index 29aef412db2..46c1eb2e72a 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index 26e095c1bb1..45ba7005550 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: الخطوة 15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index 8e5b621e92b..10047b0fe72 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: الخطوة 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 33befeb3f68..54e06855f9a 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: الخطوة 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 864224e62a4..3efdcd1ab2e 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: الخطوة 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index 5f614cbaa88..a30bf0c9b05 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: الخطوة 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index 0671781dcf8..fea2df988fe 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: الخطوة 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index da6e8c37272..27e26e0af4c 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: الخطوة 21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index 334c676c6bf..fc8a0165867 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: الخطوة 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index ca075d0b46d..1ade2e0b770 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. على سبيل المثال:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. على سبيل المثال:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 1618a87ef5e..02d877e8e21 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/chinese-traditional/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/chinese-traditional/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 7acff1618c4..4347f23aabf 100644
--- a/curriculum/challenges/chinese-traditional/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/chinese-traditional/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index ab372cc0ac7..bb4f475d41c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index 12ccaac1f63..2cf5221a693 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index 6c6b05688c1..2c41be6e366 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index fefdf1d141d..6150a97b1b6 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index 65b3ddfc395..7e24d0774a9 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index 5e800f989c5..731d9631c87 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index 52d2b2f4a78..f59b8b98e5b 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index f4d6b05d4fc..d34d50a4aa8 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index d29e5158a76..ee840ff6d48 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index a4e1eddbfd5..0466997c3d9 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index ae32ca7c3fc..262a3bef976 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index b677cb027dc..d47df6a43c4 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index d81f27e386e..4375d777bcc 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index 8eb8f5a72b6..45ba7005550 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: 步驟15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index dbe44206615..10047b0fe72 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: 步驟 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 0acee19ec87..54e06855f9a 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: Step 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 3e916e67fb7..3efdcd1ab2e 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: 步驟 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index 394db938539..a30bf0c9b05 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: 步驟 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index a809116209c..fea2df988fe 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: 步驟 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 325a55f4622..27e26e0af4c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: 步驟21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index ac618a337a6..fc8a0165867 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: 步驟 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
index 1817677637c..7348a00bfc8 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
@@ -9,7 +9,7 @@ dashedName: step-2
A vector can be defined by two coordinates, `x` and `y`, in the Euclidean plane. The distance between the origin of the axes and the point `(x, y)` will be its length, or norm. And the vector direction will point towards `(x, y)`.
-
+
Within the `Vector` class, create an `__init__` method and give it three parameters, `self`, `x`, and `y`.
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md
index c856cf8bcda..5c2943a15a0 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md
@@ -7,9 +7,7 @@ dashedName: step-6
# --description--
-The length of a vector $\mathbf{a}$, or norm, is typically indicated as $\\| \mathbf{a} \\|$. It can be calculated as the square root of the sum of its squared components:
-\\[ \\| \mathbf{a} \\| = \sqrt{a_1^2 + a_2^2 + \ldots + a_n^2}
- \\]
+The length of a vector $\mathbf{a}$, or norm, is typically indicated as $\\| \mathbf{a} \\|$. It can be calculated as the square root of the sum of its squared components: \\[ \\| \mathbf{a} \\| = \sqrt{a_1^2 + a_2^2 + \ldots + a_n^2} \\]
Compute the vector norm and return the result from your `norm` method.
@@ -38,7 +36,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
pass
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
index 9a9c87becaa..cb82b4aeb92 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
@@ -31,7 +31,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md
index 4238c7dcf88..7835caff5c8 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md
@@ -29,7 +29,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
index 8f02dad7dc5..ca901fd9936 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
@@ -45,7 +45,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
index 955a0d63ae7..7b588afc9d3 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
@@ -44,10 +44,10 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
pass
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md
index 06b489a8537..9b6c3c5bd58 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md
@@ -9,7 +9,7 @@ dashedName: step-11
A vector can have a number `n` of dimensions (components). Here's a representation of a 3-dimensional vector:
-
+
So far, you created a 2-dimensional vector. You want to be able to represent vectors with a different number of dimensions without rewriting the necessary code for each specific case. For that, you will use inheritance.
@@ -37,10 +37,10 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md
index 62b7794dba3..e26a20b0730 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md
@@ -16,7 +16,7 @@ class Tree:
class Oak(Tree):
pass
-
+
Oak().sprout() # Output: Making new leaves!
```
@@ -55,10 +55,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
index dfdb08a15d3..c50cbefeb4a 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
@@ -40,10 +40,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md
index f329157bd30..cb7a33c0eb1 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md
@@ -32,10 +32,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md
index ecf329fe7e7..caf708394fc 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md
@@ -30,10 +30,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
index 5a13be02b39..68340ee6c11 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
@@ -26,10 +26,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md
index c659dbc8460..06b727e3b29 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md
@@ -52,10 +52,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
index 05cdf4f49a6..ef31cdd6194 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
@@ -43,10 +43,10 @@ class R2Vector:
def __init__(self, *, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
index 411bc02d955..1a83f17e994 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
@@ -44,10 +44,10 @@ class R2Vector:
def __init__(self, *, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md
index f687795519e..789f37ee6fe 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md
@@ -7,7 +7,7 @@ dashedName: step-25
# --description--
-Finally, pass the `tuple()` call as the argument to the `str()` function.
+Finally, pass the `tuple()` call as the argument to the `str()` function.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
index 9f1d1e16d92..6a2c44baef5 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
@@ -42,7 +42,7 @@ class R2Vector:
def __str__(self):
return str(tuple(getattr(self, i) for i in vars(self)))
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
index 86133f41f32..127f701ba31 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
@@ -48,7 +48,7 @@ class R2Vector:
args = ', '.join(arg_list)
return f'{self.__class__.__name__}({args})'
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
index 3a19c864a1d..689ab778fe5 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
@@ -76,7 +76,7 @@ class R2Vector:
kwargs = {i: getattr(self, i) + getattr(other, i) for i in vars(self)}
return self.__class__(**kwargs)
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
index 17afd8a185f..d2df1c3038d 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
@@ -66,7 +66,7 @@ class R2Vector:
kwargs = {i: getattr(self, i) - getattr(other, i) for i in vars(self)}
return self.__class__(**kwargs)
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md
index 21e11cbc791..c5edc6d9b45 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md
@@ -66,7 +66,7 @@ class R2Vector:
if type(other) in (int, float):
kwargs = {i: getattr(self, i) * other for i in vars(self)}
return self.__class__(**kwargs)
-
+
elif type(self) == type(other):
pass
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md
index 7d818367bf8..36b78391926 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md
@@ -56,7 +56,7 @@ class R2Vector:
if type(other) in (int, float):
kwargs = {i: getattr(self, i) * other for i in vars(self)}
return self.__class__(**kwargs)
-
+
elif type(self) == type(other):
args = [getattr(self, i) * getattr(other, i) for i in vars(self)]
return sum(args)
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
index f0cc7d866b4..bf365bd4903 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
@@ -7,8 +7,7 @@ dashedName: step-56
# --description--
-It's time to test the multiplication. Declare a new variable `v5` and assign it the scalar multiplication `v1 * 3`.
-Then, call the `print` function and pass it the following f-string: `f'v1 * 3 = {v5}'`.
+It's time to test the multiplication. Declare a new variable `v5` and assign it the scalar multiplication `v1 * 3`. Then, call the `print` function and pass it the following f-string: `f'v1 * 3 = {v5}'`.
# --hints--
@@ -18,7 +17,7 @@ You should declare a new variable `v5` and assign it the scalar multiplication `
({ test: () => assert(runPython(`_Node(_code).find_variable("v5").is_equivalent("v5 = v1 * 3")`)) })
```
-You should print the f-string `f'v1 * 3 = {v5}'`.
+You should print the f-string `f'v1 * 3 = {v5}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 * 3 = {v5}')")`)) })
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
index 603375e34cc..034109b8c53 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
@@ -20,7 +20,7 @@ You should update the assignment of `v5` assigning it the scalar product `v1 * v
({ test: () => assert(runPython(`_Node(_code).find_variable("v5").is_equivalent("v5 = v1 * v2")`)) })
```
-You should update your `print` call to print the f-string `f'v1 * v2 = {v5}'`.
+You should update your `print` call to print the f-string `f'v1 * v2 = {v5}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 * v2 = {v5}')")`)) })
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
index 3773c95a395..f6184775ca4 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
@@ -67,7 +67,7 @@ class R2Vector:
return sum(args)
return NotImplemented
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md
index 8dc85c4a70b..c151f678d86 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md
index b488bbcf86f..804d4947304 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
index fbc628b1a0c..9255b41f2c6 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
@@ -71,11 +71,11 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md
index 1b50fbea3d0..ee258ff8a2a 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md
@@ -73,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md
index cd38c9db1b5..390babbb01f 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
index 2ce64a91350..7193db8cba2 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
@@ -91,7 +91,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
index 0e7af024e72..fd051c7fca6 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
@@ -77,7 +77,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
index 090a4c25718..542035862a5 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
@@ -77,7 +77,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
index feda5e7fb02..fe9c0cfa362 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
@@ -64,7 +64,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
index 6690882d473..2157c6b8a3b 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
@@ -73,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md
index f4245103e64..b7948eb83c6 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md
@@ -73,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -97,7 +97,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
pass
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md
index 11c27b74700..7a7cb7ef03c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -87,7 +87,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md
index 4369122717f..c9e2224dad3 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md
@@ -9,11 +9,10 @@ dashedName: step-74
The dot product between two 3D vectors \\( \mathbf{a} \\) and \\( \mathbf{b} \\) can be computed as it follows:
-\\[ \mathbf{a} \times \mathbf{b} = \begin{pmatrix} a_yb_z - a_zb_y \\\ a_zb_x - a_xb_z \\\ a_xb_y - a_yb_x \end{pmatrix}
- \\]
-
+\\[ \mathbf{a} \times \mathbf{b} = \begin{pmatrix} a_yb_z - a_zb_y \\\ a_zb_x - a_xb_z \\\ a_xb_y - a_yb_x \end{pmatrix} \\]
+
Where the resulting vector is represented as a column vector.
-
+
Implement the formula above to compute the dot product between two 3-dimensional vectors and return the resulting vector from the `cross()` method.
# --hints--
@@ -74,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -98,7 +97,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md
index 2093aecdc16..c1435330d56 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md
@@ -69,7 +69,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -93,7 +93,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -102,7 +102,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
--fcc-editable-region--
v1 = R2Vector(x=2, y=3)
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md
index c7d46d75ac7..6904f99b5e1 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -87,7 +87,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -96,7 +96,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
--fcc-editable-region--
v1 = R3Vector(x=2, y=3, z=1)
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
index 48e3a3a353f..47d13a7bd4d 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
@@ -65,7 +65,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -89,7 +89,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -98,7 +98,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
--fcc-editable-region--
v1 = R3Vector(x=2, y=3, z=1)
@@ -159,7 +159,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -183,7 +183,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -192,7 +192,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
v1 = R3Vector(x=2, y=3, z=1)
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md
index ff34ca74d7f..bc5ffa5f75d 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md
@@ -7,7 +7,7 @@ dashedName: step-22
# --description--
-The `norm()` method is returning the correct values, but there's still something you can improve: readability.
+The `norm()` method is returning the correct values, but there's still something you can improve: readability.
The `vars()` built-in function takes an object as its argument and returns the `__dict__` attribute of that object.
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md
index 0dc691b65b8..e0f1c196265 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md
@@ -46,7 +46,7 @@ class R2Vector:
args = ', '.join(arg_list)
return f'{self.__class__.__name__}({args})'
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md
index 80410b55106..948a541cb76 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md
@@ -42,7 +42,7 @@ class R2Vector:
arg_list = [f'{key}={val}' for key, val in vars(self).items()]
args = ', '.join(arg_list)
return f'{self.__class__.__name__}({args})'
-
+
def __getattribute__(self, attr):
return 'calling __getattribute__'
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md
index bb55eb1f3a8..3f18e7c657c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md
@@ -59,7 +59,7 @@ class R2Vector:
--fcc-editable-region--
def __getattr__(self, attr):
return 'calling __getattr__'
-
+
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
index f84624b42de..e9870c4826a 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
@@ -1,6 +1,6 @@
---
id: 6553ed69ece88d29594748aa
-title: Step 50
+title: Step 52
challengeType: 20
dashedName: step-52
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
index bf46d6f32ca..36913664567 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
@@ -1,6 +1,6 @@
---
id: 6553efd6ada3f42aa2d75448
-title: Step 51
+title: Step 53
challengeType: 20
dashedName: step-53
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
index 2688363421c..bdc61a56deb 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
@@ -1,6 +1,6 @@
---
id: 6553f3fc92741c2bf8ded140
-title: Step 52
+title: Step 54
challengeType: 20
dashedName: step-54
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
index 16b2b7a8c78..c54923b4ea2 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
@@ -1,6 +1,6 @@
---
id: 6553f4f66099802c6ae94613
-title: Step 53
+title: Step 55
challengeType: 20
dashedName: step-55
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
index bcae9e4c2a5..92734e07289 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
@@ -1,6 +1,6 @@
---
id: 6553f6086add4b2cbb99fd78
-title: Step 54
+title: Step 56
challengeType: 20
dashedName: step-56
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
index 2f0fc79d3ff..1355edcf141 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
@@ -1,6 +1,6 @@
---
id: 6553f8c570f9982e013a8886
-title: Step 55
+title: Step 57
challengeType: 20
dashedName: step-57
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
index 51c7c51620d..5b984de7d3b 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
@@ -1,6 +1,6 @@
---
id: 655491bd5b98b813fa5bedca
-title: Step 56
+title: Step 58
challengeType: 20
dashedName: step-58
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
index 64bef622b35..b6a7f0aa9c6 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
@@ -1,6 +1,6 @@
---
id: 6554930320d70414e7b6acc6
-title: Step 57
+title: Step 59
challengeType: 20
dashedName: step-59
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
index c2b67a816d2..ab8d95e137d 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
@@ -1,6 +1,6 @@
---
id: 65549561463f0016876e852c
-title: Step 58
+title: Step 60
challengeType: 20
dashedName: step-60
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
index 5d4a37a2fe9..839352832e3 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
@@ -1,6 +1,6 @@
---
id: 65549f90cf78131c96ebcf28
-title: Step 59
+title: Step 61
challengeType: 20
dashedName: step-61
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
index 4c05b0584c4..01181c37df7 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
@@ -1,6 +1,6 @@
---
id: 6554a334a40edb1fb4eff827
-title: Step 60
+title: Step 62
challengeType: 20
dashedName: step-62
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
index 63e5be90540..921879d9acc 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
@@ -1,6 +1,6 @@
---
id: 6554a49a4f782f208abcc87e
-title: Step 61
+title: Step 63
challengeType: 20
dashedName: step-63
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
index c8c045af50c..139a3fea8db 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
@@ -1,6 +1,6 @@
---
id: 6554a57ec0a2c52106e7ee50
-title: Step 62
+title: Step 64
challengeType: 20
dashedName: step-64
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
index f8aec7c6f01..b1c21af09e5 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
@@ -1,6 +1,6 @@
---
id: 6554a88d5af937226f4a9121
-title: Step 63
+title: Step 65
challengeType: 20
dashedName: step-65
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
index 9f67d3e0905..2bff453ec4b 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
@@ -1,6 +1,6 @@
---
id: 6554ac937a49be2701af4f2f
-title: Step 64
+title: Step 66
challengeType: 20
dashedName: step-66
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
index d9b8dbfc283..4c7bb7ab462 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
@@ -1,6 +1,6 @@
---
id: 6554ad2463b8892748f8efdd
-title: Step 65
+title: Step 67
challengeType: 20
dashedName: step-67
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
index e2ed67b3ab6..1eeeb3697b1 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
@@ -1,6 +1,6 @@
---
id: 6554d0332949b133a0b35eaa
-title: Step 66
+title: Step 68
challengeType: 20
dashedName: step-68
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
index 863de41bbc0..5f093f3df2c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
@@ -1,6 +1,6 @@
---
id: 6554d15c8acb5f34499ad789
-title: Step 67
+title: Step 69
challengeType: 20
dashedName: step-69
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
index c24fa10d6c6..65ac8f3f6c4 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
@@ -1,6 +1,6 @@
---
id: 6554d25dc5ceaa354307a77e
-title: Step 68
+title: Step 70
challengeType: 20
dashedName: step-70
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
index 076f1a41e91..2df3eb6fceb 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
@@ -1,6 +1,6 @@
---
id: 6554de295ade563a069936a1
-title: Step 69
+title: Step 71
challengeType: 20
dashedName: step-71
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
index 9793f1023c3..5e52b90279e 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
@@ -1,6 +1,6 @@
---
id: 6554dfce1683be3c0c9609a6
-title: Step 70
+title: Step 72
challengeType: 20
dashedName: step-72
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
index 9454a27cb5e..02e14d9019c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
@@ -1,6 +1,6 @@
---
id: 6554e0adc7bb193cbfdb36d5
-title: Step 71
+title: Step 73
challengeType: 20
dashedName: step-73
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
index 182346eca82..7f91537aead 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
@@ -1,6 +1,6 @@
---
id: 6554e2ee23bfd93f2c83640f
-title: Step 72
+title: Step 74
challengeType: 20
dashedName: step-74
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
index 48ececac1ab..d5bdb7ff5d1 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
@@ -1,6 +1,6 @@
---
id: 6554e343caea913ffba7bec6
-title: Step 73
+title: Step 75
challengeType: 20
dashedName: step-75
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
index 368cf69b225..a80c318bd1d 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
@@ -1,6 +1,6 @@
---
id: 655516e410b8e30fb4fb64e8
-title: Step 74
+title: Step 76
challengeType: 20
dashedName: step-76
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
index 22de7de4fa0..82e1790a7d8 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
@@ -1,6 +1,6 @@
---
id: 65551a628bcb7e121e32d04b
-title: Step 77
+title: Step 79
challengeType: 20
dashedName: step-79
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
index 7f0ec8191b3..8603eb7e6d8 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
@@ -1,6 +1,6 @@
---
id: 6555201d9b7fc917399f9f0b
-title: Step 78
+title: Step 80
challengeType: 20
dashedName: step-80
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
index 01549558a4b..5c6c8181984 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
@@ -1,6 +1,6 @@
---
id: 655520c20cb1e6177b0641d6
-title: Step 79
+title: Step 81
challengeType: 20
dashedName: step-81
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
index cc4f4eacee1..db091c232cc 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
@@ -1,6 +1,6 @@
---
id: 655522883e66f618e03a9411
-title: Step 80
+title: Step 82
challengeType: 20
dashedName: step-82
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
index cd29fc36bb4..9588d739f44 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
@@ -1,6 +1,6 @@
---
id: 6555231eac4d9f19bd3d44b5
-title: Step 81
+title: Step 83
challengeType: 20
dashedName: step-83
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
index c02b037de64..b8c910a3aa5 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
@@ -1,6 +1,6 @@
---
id: 65552a111190e11f0963949e
-title: Step 82
+title: Step 84
challengeType: 20
dashedName: step-84
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
index eb0c5d14c63..28da95df2b0 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
@@ -1,6 +1,6 @@
---
id: 65552a9593755e1fb2f5ab50
-title: Step 83
+title: Step 85
challengeType: 20
dashedName: step-85
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
index aa1a050cf04..4fcaff7b89c 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
@@ -1,6 +1,6 @@
---
id: 65552b14e803731fe3c1e4ca
-title: Step 84
+title: Step 86
challengeType: 20
dashedName: step-86
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
index 3b6cc0579a3..f8ea2a67964 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
@@ -1,6 +1,6 @@
---
id: 65553159615a8123b190ee43
-title: Step 85
+title: Step 87
challengeType: 20
dashedName: step-87
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
index 1e3ad3dfb8a..6799724af14 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
@@ -1,6 +1,6 @@
---
id: 6555d6e12c95701172b55709
-title: Step 75
+title: Step 77
challengeType: 20
dashedName: step-77
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
index f3c3b93e0c6..97049b3b537 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
@@ -1,6 +1,6 @@
---
id: 6555d8b0b3d20b128bdadd37
-title: Step 76
+title: Step 78
challengeType: 20
dashedName: step-78
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
index 866b80d387b..d310105bfe1 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
@@ -1,6 +1,6 @@
---
id: 6555db4a7b788e15795674e5
-title: Step 87
+title: Step 89
challengeType: 20
dashedName: step-89
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
index 2cf86f2dd96..3a91139cf33 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
@@ -1,6 +1,6 @@
---
id: 6555df0c81300b175308557d
-title: Step 88
+title: Step 90
challengeType: 20
dashedName: step-90
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
index 959034b7875..bc5788b45f8 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
@@ -1,6 +1,6 @@
---
id: 6555e1bfcd374e18c6be8e58
-title: Step 89
+title: Step 91
challengeType: 20
dashedName: step-91
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
index 791d9bdbd6d..4d7848b4be9 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
@@ -1,6 +1,6 @@
---
id: 6555e3f387381a19d5e00333
-title: Step 90
+title: Step 92
challengeType: 20
dashedName: step-92
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
index 20f69b6bd24..e895a41b321 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
@@ -1,6 +1,6 @@
---
id: 6555e43e783ed31a0532b1b2
-title: Step 91
+title: Step 93
challengeType: 20
dashedName: step-93
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
index 9acf44cfdc2..f878bb6c12b 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
@@ -1,6 +1,6 @@
---
id: 6555e547c18a2b1a7b795bd8
-title: Step 93
+title: Step 95
challengeType: 20
dashedName: step-95
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
index 312d322e32f..9b3df4758a0 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
@@ -1,6 +1,6 @@
---
id: 6555e5991af57d1ae0e35f0a
-title: Step 94
+title: Step 96
challengeType: 20
dashedName: step-96
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
index 3493c823d5d..1bb2f8f1567 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
@@ -1,6 +1,6 @@
---
id: 65a450e8fb2c9d75c7378d28
-title: Step 86
+title: Step 88
challengeType: 20
dashedName: step-88
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
index a15a486b7eb..29a960e8277 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
@@ -1,6 +1,6 @@
---
id: 65a51c9e000b660122b8b29e
-title: Step 92
+title: Step 94
challengeType: 20
dashedName: step-94
---
diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md
index 06886e907e2..97b59e6040a 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md
@@ -18,7 +18,7 @@ numbers.shift();
The `numbers` array would be `[2, 3]`.
-Declare a `shifted` variable, assign it the result of calling `.shift()` on your `numbers` array, and print the variable.
+Directly below your `numbers` array, declare a `shifted` variable and assign it the result of calling `.shift()` on the `numbers` array. On the next line, log the `shifted` variable to the console.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md
index d127026a9c8..0f464d7a048 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md
@@ -7,29 +7,29 @@ dashedName: step-3
# --description--
-Next, access the `id` called `"head-coach"` from the HTML document and store it in a `const` variable called `headCoach`. Below that variable, assign the `id` of `"player-cards"` to a `const` variable called `playerCards`.
+接下來,從 HTML 文檔中訪問名爲 `"head-coach"` 的 `id`,並將其存儲在名爲 `headCoach` 的 `const` 變量中。 在該變量下方,將 `"player-cards"` 的 `id` 分配給名爲 `playerCards` 的 `const` 變量。
# --hints--
-You should use the `document.getElementById()` method to get the `#head-coach` element.
+你應該使用 `document.getElementById()` 方法來獲取 `#head-coach` 元素。
```js
assert.match(code, /document\.getElementById\(\s*('|"|`)head-coach\1\s*\)/);
```
-You should use `const` to declare the variable called `headCoach` and assign it the `#head-coach` element.
+你應該使用 `const` 聲明名爲 `headCoach` 的變量,併爲其分配 `#head-coach` 元素。
```js
assert.match(code, /const\s+headCoach\s*=\s*document\.getElementById\(\s*('|"|`)head-coach\1\s*\)/);
```
-You should use the `document.getElementById()` method to get the `#player-cards` element.
+你應該使用 `document.getElementById()` 方法來獲取 `#player-cards` 元素。
```js
assert.match(code, /document\.getElementById\(\s*('|"|`)player-cards\1\s*\)/);
```
-You should use `const` to declare the variable called `playerCards` and assign it the `#player-cards` element.
+你應該使用 `const` 聲明名爲 `playerCards` 的變量,併爲其分配 `#player-cards` 元素。
```js
assert.match(code, /const\s+playerCards\s*=\s*document\.getElementById\(\s*('|"|`)player-cards\1\s*\)/);
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md
index 735cca7bf71..9734316db2b 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md
@@ -7,18 +7,18 @@ dashedName: step-6
# --description--
-Inside the `myFavoriteFootballTeam` object, add a new property with a key named `team` and a string value of `"Argentina"`.
+在 `myFavoriteFootballTeam` 對象內,添加一個新屬性,其鍵名爲 `team`,字符串值爲 `"Argentina"`。
# --hints--
-Your `myFavoriteFootballTeam` object should have a `team` property.
+你的 `myFavoriteFootballTeam` 對象應該具有 `team` 屬性。
```js
assert.property(myFavoriteFootballTeam, 'team');
```
-Your `team` property should be set to `"Argentina"`.
+你的 `team` 屬性應設置爲 `"Argentina"`。
```js
assert.equal(myFavoriteFootballTeam.team, 'Argentina');
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md
index 692c31e0f30..68ea04cebdb 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md
@@ -7,17 +7,17 @@ dashedName: step-7
# --description--
-Below the `team` property, add a new property with a key named `sport` and a string value of `"Football"`.
+在 `team` 屬性下方,添加一個新屬性,其鍵名爲 `sport`,字符串值爲 `"Football"`。
# --hints--
-Your `myFavoriteFootballTeam` object should have a `sport` property.
+你的 `myFavoriteFootballTeam` 對象應該具有 `sport` 屬性。
```js
assert.property(myFavoriteFootballTeam, 'sport');
```
-Your `sport` property should be set to `Football`.
+你的 `sport` 屬性應設置爲 `Football`。
```js
assert.equal(myFavoriteFootballTeam.sport, 'Football');
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md
index 26199dd1800..7dc7486f7f2 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md
@@ -7,16 +7,16 @@ dashedName: step-14
# --description--
-The rest of the data for the `myFavoriteFootballTeam.players` array has been filled out for you.
+`myFavoriteFootballTeam.players` 數組的其餘數據已爲你填寫。
-The next step is to ensure that you can't modify this object by adding or removing any properties. We are going to use a method called `Object.freeze(obj)` which will freeze this object and prevent any changes being made to it.
+下一步是確保你不能通過添加或刪除任何屬性來修改此對象。 我們將使用一種名爲 `Object.freeze(obj)` 的方法,它將凍結該對象並防止對其進行任何更改。
-Use the `Object.freeze()` method to freeze the `myFavoriteFootballTeam` object.
+使用 `Object.freeze()` 方法凍結 `myFavoriteFootballTeam` 對象。
# --hints--
-You should use the `Object.freeze()` method to freeze the `myFavoriteFootballTeam` object.
+你應該使用 `Object.freeze()` 方法來凍結 `myFavoriteFootballTeam` 對象。
```js
assert.isFrozen(myFavoriteFootballTeam);
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md
index f21fcdc5ab2..e424fb6c836 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md
@@ -1,25 +1,25 @@
---
id: 63e02a333354343b595d64ca
-title: Step 15
+title: 步驟 15
challengeType: 0
dashedName: step-15
---
# --description--
-The next step is to access the key called `sport` from the `myFavoriteFootballTeam` object and assign it to a new `const` variable called `sport`.
+下一步是從 `myFavoriteFootballTeam` 對象訪問名爲 `sport` 的鍵,並將其分配給名爲 `sport` 的新 `const` 變量。
-Remember you can use dot notation for this.
+請記住,你可以使用點符號來表示這一點。
# --hints--
-You should use `const` to declare a `sport` variable.
+你應該使用 `const` 來聲明 `sport` 變量。
```js
assert.match(code, /const\s+sport\s*=/);
```
-You should assign the value of the `sport` key from the `myFavoriteFootballTeam` object to the `sport` variable.
+你應該將 `myFavoriteFootballTeam` 對象中的 `sport` 鍵的值分配給 `sport` 變量。
```js
assert.equal(sport, myFavoriteFootballTeam.sport);
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md
index 32ae955337d..3c2b61df05c 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md
@@ -1,17 +1,17 @@
---
id: 63e042661ad2663f0d468740
-title: Step 19
+title: 步驟 19
challengeType: 0
dashedName: step-19
---
# --description--
-Now you need to access the `coachName` value from the `myFavoriteFootballTeam.headCoach` object using the destructuring syntax.
+現在你需要使用解構語法從 `myFavoriteFootballTeam.headCoach` 對象訪問 `coachName` 值。
# --hints--
-Use object destructuring to access the `coachName` value.
+使用對象解構來訪問 `coachName` 值。
```js
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md
index 3562608e3f9..0f42ed86fe2 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md
@@ -1,17 +1,17 @@
---
id: 63e05557016dfd45ea49152c
-title: Step 21
+title: 步驟 21
challengeType: 0
dashedName: step-21
---
# --description--
-Next, assign the `team` variable to `teamName.textContent`.
+接下來,將 `team` 變量分配給 `teamName.textContent`。
# --hints--
-You should assign the `team` variable to `teamName.textContent`.
+你應該將 `team` 變量分配給 `teamName.textContent`。
```js
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md
index 70772e4cba9..9b220fcdbc9 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md
@@ -1,21 +1,21 @@
---
id: 63e05c00b615bb46ac87273a
-title: Step 22
+title: 步驟 22
challengeType: 0
dashedName: step-22
---
# --description--
-Assign the `year` variable to `worldCupYear.textContent`.
+將 `year` 變量分配給 `worldCupYear.textContent`。
-Below that, assign the `coachName` variable to `headCoach.textContent`.
+下面,將 `coachName` 變量分配給 `headCoach.textContent`。
-You should now see all of that information displayed on the screen below `Team stats`.
+現在你應該可以在 `Team stats` 下方的屏幕上看到所有這些信息。
# --hints--
-You should assign the `year` variable to `worldCupYear.textContent`.
+你應該將 `year` 變量分配給 `worldCupYear.textContent`。
```js
@@ -23,7 +23,7 @@ assert.match(code, /worldCupYear\.textContent\s*=\s*year\s*/)
```
-You should assign the `coachName` variable to `headCoach.textContent`.
+你應該將 `coachName` 變量分配給 `headCoach.textContent`。
```js
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md
index 862d6c0fd77..9ad504e1496 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md
@@ -1,44 +1,44 @@
---
id: 63e060df21bca347b2d2b374
-title: Step 23
+title: 步驟 23
challengeType: 0
dashedName: step-23
---
# --description--
-Now you will start building out the function that will show player cards based on the selections made by the user in the `Filter Teammates` dropdown menu.
+現在,你將開始構建根據用戶在 `Filter Teammates` 下拉菜單中所做的選擇顯示球員卡片的功能。
-Start by creating an empty arrow function called `setPlayerCards`. You do not need to add a parameter because that will be taken care of in the next step.
+首先創建一個名爲 `setPlayerCards` 的空箭頭函數。 你不需要添加參數,因爲這將在下一步中處理。
# --hints--
-You should use `const` to declare a `setPlayerCards` variable.
+你應該使用 `const` 來聲明 `setPlayerCards` 變量。
```js
assert.match(code, /const\s+setPlayerCards\s*=/);
```
-Your `setPlayerCards` variable should be a function.
+你的 `setPlayerCards` 變量應該是一個函數。
```js
assert.isFunction(setPlayerCards);
```
-Your `setPlayerCards` function should use arrow syntax.
+你的 `setPlayerCards` 函數應該使用箭頭語法。
```js
assert.match(code, /const\s+setPlayerCards\s*=\s*\(.*\)\s*=>/);
```
-Your `setPlayerCards` function should not take a parameter.
+你的 `setPlayerCards` 函數不應接受參數。
```js
assert.match(code, /const\s+setPlayerCards\s*=\s*\(\s*\)\s*=>/);
```
-Your `setPlayerCards` function should be empty.
+你的 `setPlayerCards` 函數應該是空的。
```js
assert.match(code, /const\s+setPlayerCards\s*=\s*\(\s*\)\s*=>\s*{\s*}/);
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md
index a759d4b37b8..0232d627933 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md
@@ -1,13 +1,13 @@
---
id: 63e062d6090ebb486a4eda3a
-title: Step 24
+title: 步驟 24
challengeType: 0
dashedName: step-24
---
# --description--
-Function parameters can be initialized with default values. If a function is called without an argument, then the default value will be used:
+函數參數可以用默認值初始化。 如果調用函數時沒有參數,則將使用默認值:
```js
const greeting = (name = "Anonymous") => {
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md
index 1a5ad7a22ed..4d98e33ce18 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md
@@ -1,15 +1,15 @@
---
id: 63e94dae6dcedbad73f2f6ee
-title: Step 26
+title: 步驟 26
challengeType: 0
dashedName: step-26
---
# --description--
-`arr` contains a series of objects that each contains a `name`, `position`, `number`, `isCaptain` and `nickname` property. In order to access each of those properties inside the callback function, you will need to use object destructuring to unpack them into variables.
+`arr` 包含一系列對象,每個對象包含一個 `name`、`position`、`number`、`isCaptain` 和 `nickname` 屬性。 爲了訪問回調函數內的每個屬性,你需要使用對象解構將它們解包爲變量。
-Here is an example:
+以下是一個例子:
```js
function myExampleFunction({ name, age, job, city }) {
@@ -17,11 +17,11 @@ function myExampleFunction({ name, age, job, city }) {
}
```
-Inside the parameter list in the callback function for the `map` method, unpack all 5 object properties from objects in `arr` using object destructuring.
+在 `map` 方法的回調函數中的參數列表中,使用對象解構從 `arr` 中的對象中解包所有 5 個對象屬性。
# --hints--
-You should unpack all 5 object properties from objects in `arr` using object destructuring.
+你應該使用對象解構從 `arr` 中的對象中解壓所有 5 個對象屬性。
```js
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md
index ef297926818..785c18d23a9 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md
@@ -1,19 +1,19 @@
---
id: 63e954321b0a77ae4f6d9650
-title: Step 27
+title: 步驟 27
challengeType: 0
dashedName: step-27
---
# --description--
-Inside the body of the callback function, you will need to add template literals ` `` ` which will contain the HTML content for the player cards.
+在回調函數的主體內,你需要添加模板文字 ` `` `,它將包含隊員卡的 HTML 內容。
-Inside the template literals, add an empty `div` with a class of `"player-card"`.
+在模板字面量中,添加一個空的 `div`,其類爲 `"player-card"`。
# --hints--
-You should use template literals to add an empty `div` with a class of `"player-card"`.
+你應該使用模板字面量來添加一個帶有 `"player-card"` 類的空 `div`。
```js
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md
index ea400938ddb..f801e129294 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md
@@ -1,19 +1,19 @@
---
id: 63e95e39860dc5b01ebe9be0
-title: Step 29
+title: 步驟 29
challengeType: 0
dashedName: step-29
---
# --description--
-The next step would be to display the word `(Captain)` next to the player if they are listed as a captain for the team.
+下一步是在球員旁邊顯示單詞 `(Captain)`,如果他們被列爲球隊隊長。
-Before the `${name}` expression, add a new embedded expression. Inside that expression, use a ternary operator to check if `isCaptain` is true. If so, return `"(Captain)"` otherwise return an empty string.
+在 `${name}` 表達式之前添加一個新的嵌入表達式。 在該表達式中,使用三元運算符檢查 `isCaptain` 是否爲真。 如果是,則返回 `"(Captain)"`,否則返回空字符串。
# --hints--
-You should use a ternary operator to check if `isCaptain` is true and return `"(Captain)"` or return an empty string.
+你應該使用三元運算符來檢查 `isCaptain` 是否爲真並返回 `"(Captain)"` 或返回一個空字符串。
```js
assert.match(code, /\s*
\s*Position:\s*\${\s*position\s*}\s*<\/p>\s*/) ``` -Your new `p` element should come after the `h2` element. +你的新 `p` 元素應位於 `h2` 元素之後。 ```js assert.match(code, /<\/h2>\s*
\s*Position:\s*\${\s*position\s*}\s*<\/p>\s*/) diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md index 6561bbffc5f..8dc29b94892 100644 --- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md +++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md @@ -1,31 +1,31 @@ --- id: 63e9718d7d490bb3940d5a0a -title: Step 33 +title: 步驟 33 challengeType: 0 dashedName: step-33 --- # --description-- -Next to the `Nickname:` text, add an embedded expression that will show the player's nickname if they have one. +在 `Nickname:` 文本旁邊,添加一個嵌入表達式,如果玩家有暱稱,則顯示該玩家的暱稱。 -Use a ternary operator to check if `nickname` is not `null`. If the player has a nickname, display `nickname` otherwise display `"N/A"`. +使用三元運算符檢查 `nickname` 是否不爲 `null`。 如果玩家有暱稱,則顯示 `nickname`,否則顯示 `"N/A"`。 # --hints-- -You should use a ternary operator to check if `nickname` is truthy. +你應該使用三元運算符來檢查 `nickname` 是否真實。 ```js assert.match(code, /\s*
\s*Nickname:\s*\$\{\s*nickname\s*(?:!==\s*null)?\s*\?/) ``` -If your ternary is truthy, it should display the player's `nickname`. +如果你的三元組爲真,它應該顯示隊員的 `nickname`。 ```js assert.match(code, /\s*
\s*Nickname:\s*\$\{\s*nickname\s*(?:!==\s*null)?\s*\?\s*nickname\s*:/) ``` -If your ternary is falsy, it should display the string `"N/A"`. +如果你的三元數爲假,它應該顯示字符串 `"N/A"`。 ```js assert.match(code, /\s*
\s*Nickname:\s*\$\{\s*nickname\s*(?:!==\s*null)?\s*\?\s*nickname\s*:\s*('|"|`)\N\/A\1\s*\}\s*<\/p>\s*/)
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md
index 75123450cd8..9249c72012e 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md
@@ -1,21 +1,21 @@
---
id: 63f293c804d6f9e9a83ca4c5
-title: Step 37
+title: 步驟 37
challengeType: 0
dashedName: step-37
---
# --description--
-Inside the callback function, add a `console.log` with the value of `e.target.value`.
+在回調函數內部,添加一個 `console.log`,其值爲 `e.target.value`。
-Open the console, and make a selection from the teammates dropdown menu. You should see the value of that selection in the console.
+打開控制檯,從隊友下拉菜單中進行選擇。 你應該在控制檯中看到該選擇的值。
-`e.target.value` represents the `value` property from the `playersDropdownList` element. In future steps, you will use this value to show player cards based on the position they play.
+`e.target.value` 表示 `playersDropdownList` 元素中的 `value` 屬性。 在接下來的步驟中,你將使用此值根據玩家所處的位置顯示玩家卡。
# --hints--
-You should add a `console.log` with the value of `e.target.value`.
+你應該添加一個 `console.log`,其值爲 `e.target.value`。
```js
assert.match(code, /console\.log\s*\(\s*e\.target\.value\s*\)\s*/)
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md
index 2efcf6373f4..62bbe746ff5 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md
@@ -1,59 +1,59 @@
---
id: 63f2a4a8087e6dec8ec47f16
-title: Step 43
+title: 步驟 43
challengeType: 0
dashedName: step-43
---
# --description--
-Next, add a `case` clause for `"forward"`.
+接下來,爲 `"forward"` 添加一個 `case` 子句。
-Inside that `case`, call the `setPlayerCards` function with an argument of `players.filter()`.
+在該 `case` 中,使用 `players.filter()` 參數調用 `setPlayerCards` 函數。
-Inside the `filter()` method, add a callback function with a parameter of `player` that will check if `player.position` equals `"forward"`.
+在 `filter()` 方法中,添加一個帶有 `player` 參數的回調函數,該函數將檢查 `player.position` 是否等於 `"forward"`。
-Lastly, add a `break` statement below the `setPlayerCards` function call.
+最後,在 `setPlayerCards` 函數調用下方添加 `break` 語句。
# --hints--
-You should add a new `case` for `"forward"` inside your `switch` statement.
+你應該在 `switch` 語句內爲 `"forward"` 添加一個新的 `case`。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*/)
```
-In your `"forward"` `case`, you should call the `setPlayerCards` function.
+在你的 `"forward"``case` 中,你應該調用 `setPlayerCards` 函數。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(/)
```
-You should pass `players.filter()` to your `setPlayerCards` call.
+你應該將 `players.filter()` 傳遞給你的 `setPlayerCards` 調用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(/)
```
-You should pass an arrow callback function to your `players.filter()` call.
+你應該將箭頭回調函數傳遞給你的 `players.filter()` 調用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(.*\)|[^\s()]+)\s*=>/);
```
-Your `filter()` callback should take a `player` parameter.
+你的 `filter()` 回調應該採用 `player` 參數。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(\s*player\s*\)|player)\s*=>/)
```
-Your `filter()` callback should implicitly return the result of checking if `player.position` is `"forward"`.
+你的 `filter()` 回調應該隱式返回檢查 `player.position` 是否爲 `"forward"` 的結果。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(?:\(\s*player\s*\)|player)\s*=>\s*(?:player\.position\s*===?\s*('|"|`)forward\2|('|"|`)forward\3\s*===?\s*player\.position)\s*\)/)
```
-You will need to add a `break` statement below your `setPlayerCards` call.
+你需要在 `setPlayerCards` 調用下方添加 `break` 語句。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(?:\(?\s*player\s*\)|player)\s*=>\s*(?:player\.position\s*===?\s*('|"|`)forward\2|('|"|`)forward\3\s*===?\s*player\.position)\s*\)\s*\)\s*;?\s*break/)
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md
index 06f1dcdf797..fa6b631f124 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md
@@ -1,29 +1,29 @@
---
id: 63f2ab4f6c52c5eec6d68de4
-title: Step 47
+title: 步驟 47
challengeType: 0
dashedName: step-47
---
# --description--
-The final step is to add a `default` clause if none of the other `case` clauses match the user selection.
+最後一步是,如果其他 `case` 子句均不符合用戶選擇,則添加 `default` 子句。
-For the `default` clause, call the `setPlayerCards` function without any arguments passed in.
+對於 `default` 子句,調用 `setPlayerCards` 函數,不傳入任何參數。
-Test out your dropdown menu, and you should see the player cards be filtered out by position or nickname.
+測試你的下拉菜單,你應該會看到球員卡片根據位置或暱稱被過濾掉。
-Congratulations on completing the football team cards project!
+恭喜你完成足球隊卡片項目!
# --hints--
-You should add a `default` clause to your `switch` statement.
+你應該在 `switch` 語句中添加 `default` 子句。
```js
assert.match(code, /default\s*:\s*/)
```
-In your `default` clause, you should call the `setPlayerCards` function without any arguments passed in.
+在你的 `default` 子句中,你應該調用 `setPlayerCards` 函數而不傳入任何參數。
```js
assert.match(code, /default\s*:\s*setPlayerCards\(\s*\)/)
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md
index f450c5be63e..560f980e7a1 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md
@@ -1,6 +1,6 @@
---
id: 641fc88d8fa7127f76e0324f
-title: Step 41
+title: 步驟 41
challengeType: 0
dashedName: step-41
---
@@ -8,37 +8,37 @@ dashedName: step-41
# --description--
-Call the `setPlayerCards` function with an argument of `players.filter()`.
+使用 `players.filter()` 參數調用 `setPlayerCards` 函數。
-Inside the `filter` method, add a callback function with a parameter called `player` and implicitly return `player.nickname` is not `null`.
+在 `filter` 方法內部,添加一個名爲 `player` 的參數的回調函數,並隱式返回 `player.nickname` 不爲 `null`。
# --hints--
-In your `nickname` case, you should call the `setPlayerCards` function.
+在你的 `nickname` case 中,你應該調用 `setPlayerCards` 函數。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(/)
```
-You should pass `players.filter()` to your `setPlayerCards` call.
+你應該將 `players.filter()` 傳遞給你的 `setPlayerCards` 調用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(/)
```
-You should pass an arrow callback function to your `players.filter()` call.
+你應該將箭頭回調函數傳遞給你的 `players.filter()` 調用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(.*\)|[^\s()]+)\s*=>/);
```
-Your `filter()` callback should take a `player` parameter.
+你的 `filter()` 回調應該採用 `player` 參數。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(\s*player\s*\)|player)\s*=>/)
```
-Your `filter()` callback should implicitly return the result of checking if `player.nickname` is not `null`.
+你的 `filter()` 回調應該隱式返回檢查 `player.nickname` 是否不爲 `null` 的結果。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(\s*player\s*\)|player)\s*=>\s*(player\.nickname\s*!==?\s*null|null\s*!==?\s*player\.nickname)\s*\)/)
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md
index 05cac034aa3..ff326c5b738 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md
@@ -7,7 +7,7 @@ dashedName: step-5
# --description--
-Back in your event listener, you need to update the text of the `result` element. You can use a `ternary` operator to achieve this task.
+Back in your event listener, you need to update the text of the `result` element. You can use a ternary operator to achieve this task.
Here is an example of assigning the result of a ternary operator to an element's text content:
diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md
index 937795d6897..4bbbbbbcdf7 100644
--- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md
+++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md
@@ -9,7 +9,7 @@ dashedName: step-7
Regular expressions can take flags to modify their behavior. For instance, the `i` flag can be used to make the expression ignore case, causing it to match `hello`, `HELLO`, and `Hello` for the expression `/hello/`.
-Flags are added after the trailing backslash. Add the `i` flag to your `helpRegex`.
+Flags are added after the trailing slash. Add the `i` flag to your `helpRegex`.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md b/curriculum/challenges/chinese-traditional/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
index f576d444df1..46d9a6a0141 100644
--- a/curriculum/challenges/chinese-traditional/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
+++ b/curriculum/challenges/chinese-traditional/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
@@ -11,132 +11,135 @@ dashedName: css-foundations-exercise-a
## User Stories
-1. You should see a `div` element with a `red` background, `white` text, a font size of `32px`, center aligned, and `bold`.
-
-1. The CSS of the `div` element should be added externally by using a type selector.
-
-1. You should see a `p` element with a `green` background, `white` text, and a font size of `18px`.
-
-1. The CSS of the `p` element should be added internally by using a type selector.
-
-1. You should see a `button` element with an `orange` background and a font size of `18px`.
-
-1. The CSS of the `button` element should have an inline style.
+- You should see a `div` element with some text.
+ - It should have a `red` background, `white` text, a font size of `32px`, text center aligned and `bold`.
+ - The CSS for the `div` element should be added externally, and using a type selector.
+- You should see a `p` element with some text.
+ - It should have a `green` background, `white` text, and a font size of `18px`.
+ - The CSS for the `p` element should be added internally, and using a type selector.
+- You should see a `button` element with some text.
+ - The `button` element should have an `orange` background and a font size of `18px`.
+ - The CSS for the `button` element should be added using inline styles.
# --hints--
-There should be one `div` element. It should contain some text and be aligned in the center.
+You should have one `div` element containing some text.
```js
-const aligned = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('text-align');
+const divElement = document.querySelector('div');
-assert(aligned === 'center');
-assert(document.getElementsByTagName('DIV')?.length == 1);
-assert(document.getElementsByTagName('DIV')?.[0]?.innerText.length > 0)
+assert.isNotNull(divElement);
+assert.isAtLeast(divElement?.innerText.length, 1);
```
-The `div` element should have a `background-color` of `red` and a text color of `white`.
+You should have an external stylesheet containing the `div` element styles.
```js
+const styleSheet = new __helpers.CSSHelp(document).getStyleSheet();
+const isExternal = styleSheet?.ownerNode.classList.contains('fcc-injected-styles');
+const divStyle = new __helpers.CSSHelp(document).getStyle('div');
-const bgc = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('background-color');
-
-const color = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('color');
-
-assert(bgc === 'red');
-assert(color === 'white');
+assert.isTrue(isExternal);
+assert.isNotNull(divStyle);
```
-The `div` element should have a `font-weight` of `bold` and a `font-size` of `32px`.
+Your `div` element should not have its CSS added using internal or inline styles.
```js
-const fontSize = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('font-size');
-const fontWeight = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('font-weight');
+const styleElement = document.querySelector('style:not([class])');
-assert(fontSize === '32px');
-assert(fontWeight === 'bold');
+assert.isNotTrue(styleElement?.innerText.includes('div'));
+assert.isNotTrue(document.querySelector('div')?.hasAttribute('style'));
```
-The `div` element should have its CSS added externally.
+Your `div` element should have a `background-color` of `red` and a `color` of `white`.
```js
-assert(!document.getElementsByTagName('style')?.[0]?.innerText.includes('div'));
-assert(!document.getElementsByTagName('div')?.[0]?.hasAttribute('style'));
+const divStyle = new __helpers.CSSHelp(document).getStyle('div');
+const divBGColor = divStyle?.getPropertyValue('background-color');
+const divColor = divStyle?.getPropertyValue('color');
+
+assert.equal(divBGColor, 'red');
+assert.equal(divColor, 'white');
```
-There should be one `p` element and it should contain some text.
+Your `div` element should have `font-weight` set to `bold`, `font-size` set to `32px`, and `text-align` set to `center`.
```js
-assert(document.getElementsByTagName('P')?.length == 1);
-assert(document.getElementsByTagName('P')?.[0]?.innerText.length > 0)
+const divStyle = new __helpers.CSSHelp(document).getStyle('div');
+const textAlign = divStyle?.getPropertyValue('text-align');
+const fontSize = divStyle?.getPropertyValue('font-size');
+const fontWeight = divStyle?.getPropertyValue('font-weight');
+
+assert.equal(textAlign, 'center');
+assert.equal(fontSize, '32px');
+assert.equal(fontWeight,'bold');
```
-The `p` element should have its `color` set to `white`.
+You should have one `p` element and it should contain some text.
```js
-const color = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('color');
+const pElement = document.querySelector('p');
-assert(color == 'white');
+assert.isNotNull(pElement);
+assert.isAtLeast(pElement?.innerText.length, 1)
```
-The `p` element should have a `font-size` of `18px`.
+Your `p` element should have its styles added internally using a `style` element.
```js
-const styleTag = document.getElementsByTagName('style')?.[0];
-let pHasFontSize18 = false;
+const styleElement = document.querySelector('style:not([class])');
+const rules = styleElement?.sheet?.cssRules?.[0] || styleElement?.sheet?.rules?.[0];
+let isStyled = false;
-const rules = styleTag?.sheet?.cssRules || styleTag?.sheet?.rules;
-if (rules) {
- for (let j = 0; j < rules.length; j++) {
- const rule = rules[j];
- if (rule.selectorText === 'p' && rule.style.fontSize === '18px') {
- pHasFontSize18 = true;
- break;
- }
- }
+if (rules && rules.selectorText === 'p') {
+ isStyled = true;
}
-assert(pHasFontSize18);
+assert.isTrue(isStyled);
```
-The `p` element should have its style added internally.
+Your `p` element should have a `font-size` of `18px` and have `color` set to `white`.
```js
+const styleElement = document.querySelector('style:not([class])');
+const rules = styleElement?.sheet?.cssRules?.[0] || styleElement?.sheet?.rules?.[0];
+let fontSize, color;
-const styleTag = document.getElementsByTagName('style')?.[0];
-let pIsStyled = false;
-
-
-const rules = styleTag?.sheet?.cssRules || styleTag?.sheet?.rules;
-if (rules) {
- for (let j = 0; j < rules.length; j++) {
- const rule = rules[j];
- if (rule.selectorText === 'p') {
- pIsStyled = true;
- break;
- }
- }
+if (rules && rules.selectorText === 'p') {
+ fontSize = rules.style.fontSize;
+ color = rules.style.color;
}
-assert(pIsStyled);
+assert.equal(fontSize, "18px");
+assert.equal(color, 'white');
```
-The `button` element should have its `background-color` set to `orange`.
+You should have one `button` element containing some text.
```js
-assert(document.getElementsByTagName('button')?.[0]?.style.backgroundColor === 'orange')
+const btnElement = document.querySelector('button');
+
+assert.isNotNull(btnElement);
+assert.isAtLeast(btnElement?.innerText.length, 1);
```
-The `button` element should have its `font-size` set to `18px`.
+Your `button` element should have an inline style.
```js
-assert(document.getElementsByTagName('button')?.[0]?.style.fontSize === '18px')
+assert.isTrue(document.querySelector('button')?.hasAttribute('style'));
```
-The `button` element should have an inline style.
+Your `button` element should have its `background-color` set to `orange`.
```js
-assert(document.getElementsByTagName('button')?.[0]?.hasAttribute('style'));
+assert.equal(document.querySelector('button')?.style.backgroundColor, 'orange')
+```
+
+Your `button` element should have its `font-size` set to `18px`.
+
+```js
+assert.equal(document.querySelector('button')?.style.fontSize, '18px')
```
# --seed--
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index e6cded08462..9fe50aa1ce5 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 例如:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 例如:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 38a333bafe2..f979cac4035 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/chinese/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/chinese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 663ea448874..24f40f40f46 100644
--- a/curriculum/challenges/chinese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/chinese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 9bb0251b181..ef146de8f10 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index 6da11fbc3c2..f31e7d21247 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index 5feb445a04f..17d41ed3e0e 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index 240ed8be118..f984700fa0c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index 8aa07632a63..e6347ff28c3 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index 33f10d79169..05c860d40e5 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index ff6cf34fb8a..8341143691c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index d5f90d7c198..7e4abb8fc49 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index 3df29a23471..34fcf936461 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index 647411aee45..528bb867dd9 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index 6db0081d5f7..430b3e448ed 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index 9d859e19555..858760927af 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index bca3d3b31c0..a532c324d10 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index 04368a9f50d..45ba7005550 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: 步骤15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index d219ffd233d..10047b0fe72 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: 步骤 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 0acee19ec87..54e06855f9a 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: Step 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index e7e2afe30c5..3efdcd1ab2e 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: 步骤 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index 062b5d5518e..a30bf0c9b05 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: 步骤 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index 41ec6728c79..fea2df988fe 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: 步骤 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index be8b63d7311..27e26e0af4c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: 步骤21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index 0b29e3d5a88..fc8a0165867 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: 步骤 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
index 1817677637c..7348a00bfc8 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
@@ -9,7 +9,7 @@ dashedName: step-2
A vector can be defined by two coordinates, `x` and `y`, in the Euclidean plane. The distance between the origin of the axes and the point `(x, y)` will be its length, or norm. And the vector direction will point towards `(x, y)`.
-
+
Within the `Vector` class, create an `__init__` method and give it three parameters, `self`, `x`, and `y`.
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md
index c856cf8bcda..5c2943a15a0 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f0694fb2296f3caadf8347.md
@@ -7,9 +7,7 @@ dashedName: step-6
# --description--
-The length of a vector $\mathbf{a}$, or norm, is typically indicated as $\\| \mathbf{a} \\|$. It can be calculated as the square root of the sum of its squared components:
-\\[ \\| \mathbf{a} \\| = \sqrt{a_1^2 + a_2^2 + \ldots + a_n^2}
- \\]
+The length of a vector $\mathbf{a}$, or norm, is typically indicated as $\\| \mathbf{a} \\|$. It can be calculated as the square root of the sum of its squared components: \\[ \\| \mathbf{a} \\| = \sqrt{a_1^2 + a_2^2 + \ldots + a_n^2} \\]
Compute the vector norm and return the result from your `norm` method.
@@ -38,7 +36,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
pass
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
index 9a9c87becaa..cb82b4aeb92 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
@@ -31,7 +31,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md
index 4238c7dcf88..7835caff5c8 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f07c9b1ffb814d856dcffc.md
@@ -29,7 +29,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
index 8f02dad7dc5..ca901fd9936 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
@@ -45,7 +45,7 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
index 955a0d63ae7..7b588afc9d3 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
@@ -44,10 +44,10 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
pass
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md
index 06b489a8537..9b6c3c5bd58 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fe07cc763212efe91285.md
@@ -9,7 +9,7 @@ dashedName: step-11
A vector can have a number `n` of dimensions (components). Here's a representation of a 3-dimensional vector:
-
+
So far, you created a 2-dimensional vector. You want to be able to represent vectors with a different number of dimensions without rewriting the necessary code for each specific case. For that, you will use inheritance.
@@ -37,10 +37,10 @@ class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md
index 62b7794dba3..e26a20b0730 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40051d6b09a139f253e8e.md
@@ -16,7 +16,7 @@ class Tree:
class Oak(Tree):
pass
-
+
Oak().sprout() # Output: Making new leaves!
```
@@ -55,10 +55,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
index dfdb08a15d3..c50cbefeb4a 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
@@ -40,10 +40,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md
index f329157bd30..cb7a33c0eb1 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f407ea37ad6e181b90462e.md
@@ -32,10 +32,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md
index ecf329fe7e7..caf708394fc 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40f8af784751c613d638a.md
@@ -30,10 +30,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
index 5a13be02b39..68340ee6c11 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
@@ -26,10 +26,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md
index c659dbc8460..06b727e3b29 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f412c208c3791fee305acf.md
@@ -52,10 +52,10 @@ class R2Vector:
def __init__(self, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
index 05cdf4f49a6..ef31cdd6194 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
@@ -43,10 +43,10 @@ class R2Vector:
def __init__(self, *, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
index 411bc02d955..1a83f17e994 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
@@ -44,10 +44,10 @@ class R2Vector:
def __init__(self, *, x, y):
self.x = x
self.y = y
-
+
def norm(self):
return (self.x**2 + self.y**2)**0.5
-
+
def __str__(self):
return f'{self.x, self.y}'
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md
index f687795519e..789f37ee6fe 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f872a0fe6aa21b456ad4fe.md
@@ -7,7 +7,7 @@ dashedName: step-25
# --description--
-Finally, pass the `tuple()` call as the argument to the `str()` function.
+Finally, pass the `tuple()` call as the argument to the `str()` function.
# --hints--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
index 9f1d1e16d92..6a2c44baef5 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
@@ -42,7 +42,7 @@ class R2Vector:
def __str__(self):
return str(tuple(getattr(self, i) for i in vars(self)))
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
index 86133f41f32..127f701ba31 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
@@ -48,7 +48,7 @@ class R2Vector:
args = ', '.join(arg_list)
return f'{self.__class__.__name__}({args})'
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
index 3a19c864a1d..689ab778fe5 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
@@ -76,7 +76,7 @@ class R2Vector:
kwargs = {i: getattr(self, i) + getattr(other, i) for i in vars(self)}
return self.__class__(**kwargs)
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
index 17afd8a185f..d2df1c3038d 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
@@ -66,7 +66,7 @@ class R2Vector:
kwargs = {i: getattr(self, i) - getattr(other, i) for i in vars(self)}
return self.__class__(**kwargs)
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md
index 21e11cbc791..c5edc6d9b45 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc899d77495504d6deeccc.md
@@ -66,7 +66,7 @@ class R2Vector:
if type(other) in (int, float):
kwargs = {i: getattr(self, i) * other for i in vars(self)}
return self.__class__(**kwargs)
-
+
elif type(self) == type(other):
pass
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md
index 7d818367bf8..36b78391926 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8e7c766ab1070213aadb.md
@@ -56,7 +56,7 @@ class R2Vector:
if type(other) in (int, float):
kwargs = {i: getattr(self, i) * other for i in vars(self)}
return self.__class__(**kwargs)
-
+
elif type(self) == type(other):
args = [getattr(self, i) * getattr(other, i) for i in vars(self)]
return sum(args)
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
index f0cc7d866b4..bf365bd4903 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
@@ -7,8 +7,7 @@ dashedName: step-56
# --description--
-It's time to test the multiplication. Declare a new variable `v5` and assign it the scalar multiplication `v1 * 3`.
-Then, call the `print` function and pass it the following f-string: `f'v1 * 3 = {v5}'`.
+It's time to test the multiplication. Declare a new variable `v5` and assign it the scalar multiplication `v1 * 3`. Then, call the `print` function and pass it the following f-string: `f'v1 * 3 = {v5}'`.
# --hints--
@@ -18,7 +17,7 @@ You should declare a new variable `v5` and assign it the scalar multiplication `
({ test: () => assert(runPython(`_Node(_code).find_variable("v5").is_equivalent("v5 = v1 * 3")`)) })
```
-You should print the f-string `f'v1 * 3 = {v5}'`.
+You should print the f-string `f'v1 * 3 = {v5}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 * 3 = {v5}')")`)) })
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
index 603375e34cc..034109b8c53 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
@@ -20,7 +20,7 @@ You should update the assignment of `v5` assigning it the scalar product `v1 * v
({ test: () => assert(runPython(`_Node(_code).find_variable("v5").is_equivalent("v5 = v1 * v2")`)) })
```
-You should update your `print` call to print the f-string `f'v1 * v2 = {v5}'`.
+You should update your `print` call to print the f-string `f'v1 * v2 = {v5}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 * v2 = {v5}')")`)) })
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
index 3773c95a395..f6184775ca4 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
@@ -67,7 +67,7 @@ class R2Vector:
return sum(args)
return NotImplemented
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md
index 8dc85c4a70b..c151f678d86 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9c6e49d7cd8513ab1005.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md
index b488bbcf86f..804d4947304 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9d6203afea85931094c9.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
index fbc628b1a0c..9255b41f2c6 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
@@ -71,11 +71,11 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md
index 1b50fbea3d0..ee258ff8a2a 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc3c8478ee70fc7966151.md
@@ -73,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md
index cd38c9db1b5..390babbb01f 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fdc496f4440e1055a2ac1b.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
index 2ce64a91350..7193db8cba2 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
@@ -91,7 +91,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
index 0e7af024e72..fd051c7fca6 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
@@ -77,7 +77,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
index 090a4c25718..542035862a5 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
@@ -77,7 +77,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
index feda5e7fb02..fe9c0cfa362 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
@@ -64,7 +64,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
index 6690882d473..2157c6b8a3b 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
@@ -73,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md
index f4245103e64..b7948eb83c6 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a7eb860fb8546516674d.md
@@ -73,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -97,7 +97,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
pass
--fcc-editable-region--
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md
index 11c27b74700..7a7cb7ef03c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a88a6e2ccc550d7d7208.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -87,7 +87,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md
index 4369122717f..c9e2224dad3 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601a8fb2e993b55912f9e9f.md
@@ -9,11 +9,10 @@ dashedName: step-74
The dot product between two 3D vectors \\( \mathbf{a} \\) and \\( \mathbf{b} \\) can be computed as it follows:
-\\[ \mathbf{a} \times \mathbf{b} = \begin{pmatrix} a_yb_z - a_zb_y \\\ a_zb_x - a_xb_z \\\ a_xb_y - a_yb_x \end{pmatrix}
- \\]
-
+\\[ \mathbf{a} \times \mathbf{b} = \begin{pmatrix} a_yb_z - a_zb_y \\\ a_zb_x - a_xb_z \\\ a_xb_y - a_yb_x \end{pmatrix} \\]
+
Where the resulting vector is represented as a column vector.
-
+
Implement the formula above to compute the dot product between two 3-dimensional vectors and return the resulting vector from the `cross()` method.
# --hints--
@@ -74,7 +73,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -98,7 +97,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md
index 2093aecdc16..c1435330d56 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ab2809898f57591f2f7f.md
@@ -69,7 +69,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -93,7 +93,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -102,7 +102,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
--fcc-editable-region--
v1 = R2Vector(x=2, y=3)
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md
index c7d46d75ac7..6904f99b5e1 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ac48a2ee6b59e6a5060d.md
@@ -63,7 +63,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -87,7 +87,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -96,7 +96,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
--fcc-editable-region--
v1 = R3Vector(x=2, y=3, z=1)
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
index 48e3a3a353f..47d13a7bd4d 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
@@ -65,7 +65,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -89,7 +89,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -98,7 +98,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
--fcc-editable-region--
v1 = R3Vector(x=2, y=3, z=1)
@@ -159,7 +159,7 @@ class R2Vector:
if type(self) != type(other):
return NotImplemented
return all(getattr(self, i) == getattr(other, i) for i in vars(self))
-
+
def __ne__(self, other):
return not self == other
@@ -183,7 +183,7 @@ class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
self.z = z
-
+
def cross(self, other):
if type(self) != type(other):
return NotImplemented
@@ -192,7 +192,7 @@ class R3Vector(R2Vector):
'y': self.z * other.x - self.x * other.z,
'z': self.x * other.y - self.y * other.x
}
-
+
return self.__class__(**kwargs)
v1 = R3Vector(x=2, y=3, z=1)
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md
index ff34ca74d7f..bc5ffa5f75d 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66680ddfd0f8c76782923cb0.md
@@ -7,7 +7,7 @@ dashedName: step-22
# --description--
-The `norm()` method is returning the correct values, but there's still something you can improve: readability.
+The `norm()` method is returning the correct values, but there's still something you can improve: readability.
The `vars()` built-in function takes an object as its argument and returns the `__dict__` attribute of that object.
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md
index 0dc691b65b8..e0f1c196265 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66682150151af29efec9727d.md
@@ -46,7 +46,7 @@ class R2Vector:
args = ', '.join(arg_list)
return f'{self.__class__.__name__}({args})'
--fcc-editable-region--
-
+
--fcc-editable-region--
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md
index 80410b55106..948a541cb76 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/666826f258fda1ab3396a509.md
@@ -42,7 +42,7 @@ class R2Vector:
arg_list = [f'{key}={val}' for key, val in vars(self).items()]
args = ', '.join(arg_list)
return f'{self.__class__.__name__}({args})'
-
+
def __getattribute__(self, attr):
return 'calling __getattribute__'
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md
index bb55eb1f3a8..3f18e7c657c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6668374ed18b7fce10259cb3.md
@@ -59,7 +59,7 @@ class R2Vector:
--fcc-editable-region--
def __getattr__(self, attr):
return 'calling __getattr__'
-
+
class R3Vector(R2Vector):
def __init__(self, *, x, y, z):
super().__init__(x=x, y=y)
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
index f84624b42de..e9870c4826a 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
@@ -1,6 +1,6 @@
---
id: 6553ed69ece88d29594748aa
-title: Step 50
+title: Step 52
challengeType: 20
dashedName: step-52
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
index bf46d6f32ca..36913664567 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
@@ -1,6 +1,6 @@
---
id: 6553efd6ada3f42aa2d75448
-title: Step 51
+title: Step 53
challengeType: 20
dashedName: step-53
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
index 2688363421c..bdc61a56deb 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
@@ -1,6 +1,6 @@
---
id: 6553f3fc92741c2bf8ded140
-title: Step 52
+title: Step 54
challengeType: 20
dashedName: step-54
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
index 16b2b7a8c78..c54923b4ea2 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
@@ -1,6 +1,6 @@
---
id: 6553f4f66099802c6ae94613
-title: Step 53
+title: Step 55
challengeType: 20
dashedName: step-55
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
index bcae9e4c2a5..92734e07289 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
@@ -1,6 +1,6 @@
---
id: 6553f6086add4b2cbb99fd78
-title: Step 54
+title: Step 56
challengeType: 20
dashedName: step-56
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
index 2f0fc79d3ff..1355edcf141 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
@@ -1,6 +1,6 @@
---
id: 6553f8c570f9982e013a8886
-title: Step 55
+title: Step 57
challengeType: 20
dashedName: step-57
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
index 51c7c51620d..5b984de7d3b 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
@@ -1,6 +1,6 @@
---
id: 655491bd5b98b813fa5bedca
-title: Step 56
+title: Step 58
challengeType: 20
dashedName: step-58
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
index 64bef622b35..b6a7f0aa9c6 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
@@ -1,6 +1,6 @@
---
id: 6554930320d70414e7b6acc6
-title: Step 57
+title: Step 59
challengeType: 20
dashedName: step-59
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
index c2b67a816d2..ab8d95e137d 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
@@ -1,6 +1,6 @@
---
id: 65549561463f0016876e852c
-title: Step 58
+title: Step 60
challengeType: 20
dashedName: step-60
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
index 5d4a37a2fe9..839352832e3 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
@@ -1,6 +1,6 @@
---
id: 65549f90cf78131c96ebcf28
-title: Step 59
+title: Step 61
challengeType: 20
dashedName: step-61
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
index 4c05b0584c4..01181c37df7 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
@@ -1,6 +1,6 @@
---
id: 6554a334a40edb1fb4eff827
-title: Step 60
+title: Step 62
challengeType: 20
dashedName: step-62
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
index 63e5be90540..921879d9acc 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
@@ -1,6 +1,6 @@
---
id: 6554a49a4f782f208abcc87e
-title: Step 61
+title: Step 63
challengeType: 20
dashedName: step-63
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
index c8c045af50c..139a3fea8db 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
@@ -1,6 +1,6 @@
---
id: 6554a57ec0a2c52106e7ee50
-title: Step 62
+title: Step 64
challengeType: 20
dashedName: step-64
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
index f8aec7c6f01..b1c21af09e5 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
@@ -1,6 +1,6 @@
---
id: 6554a88d5af937226f4a9121
-title: Step 63
+title: Step 65
challengeType: 20
dashedName: step-65
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
index 9f67d3e0905..2bff453ec4b 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
@@ -1,6 +1,6 @@
---
id: 6554ac937a49be2701af4f2f
-title: Step 64
+title: Step 66
challengeType: 20
dashedName: step-66
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
index d9b8dbfc283..4c7bb7ab462 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
@@ -1,6 +1,6 @@
---
id: 6554ad2463b8892748f8efdd
-title: Step 65
+title: Step 67
challengeType: 20
dashedName: step-67
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
index e2ed67b3ab6..1eeeb3697b1 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
@@ -1,6 +1,6 @@
---
id: 6554d0332949b133a0b35eaa
-title: Step 66
+title: Step 68
challengeType: 20
dashedName: step-68
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
index 863de41bbc0..5f093f3df2c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
@@ -1,6 +1,6 @@
---
id: 6554d15c8acb5f34499ad789
-title: Step 67
+title: Step 69
challengeType: 20
dashedName: step-69
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
index c24fa10d6c6..65ac8f3f6c4 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
@@ -1,6 +1,6 @@
---
id: 6554d25dc5ceaa354307a77e
-title: Step 68
+title: Step 70
challengeType: 20
dashedName: step-70
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
index 076f1a41e91..2df3eb6fceb 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
@@ -1,6 +1,6 @@
---
id: 6554de295ade563a069936a1
-title: Step 69
+title: Step 71
challengeType: 20
dashedName: step-71
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
index 9793f1023c3..5e52b90279e 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
@@ -1,6 +1,6 @@
---
id: 6554dfce1683be3c0c9609a6
-title: Step 70
+title: Step 72
challengeType: 20
dashedName: step-72
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
index 9454a27cb5e..02e14d9019c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
@@ -1,6 +1,6 @@
---
id: 6554e0adc7bb193cbfdb36d5
-title: Step 71
+title: Step 73
challengeType: 20
dashedName: step-73
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
index 182346eca82..7f91537aead 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
@@ -1,6 +1,6 @@
---
id: 6554e2ee23bfd93f2c83640f
-title: Step 72
+title: Step 74
challengeType: 20
dashedName: step-74
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
index 48ececac1ab..d5bdb7ff5d1 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
@@ -1,6 +1,6 @@
---
id: 6554e343caea913ffba7bec6
-title: Step 73
+title: Step 75
challengeType: 20
dashedName: step-75
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
index 368cf69b225..a80c318bd1d 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
@@ -1,6 +1,6 @@
---
id: 655516e410b8e30fb4fb64e8
-title: Step 74
+title: Step 76
challengeType: 20
dashedName: step-76
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
index 22de7de4fa0..82e1790a7d8 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
@@ -1,6 +1,6 @@
---
id: 65551a628bcb7e121e32d04b
-title: Step 77
+title: Step 79
challengeType: 20
dashedName: step-79
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
index 7f0ec8191b3..8603eb7e6d8 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
@@ -1,6 +1,6 @@
---
id: 6555201d9b7fc917399f9f0b
-title: Step 78
+title: Step 80
challengeType: 20
dashedName: step-80
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
index 01549558a4b..5c6c8181984 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
@@ -1,6 +1,6 @@
---
id: 655520c20cb1e6177b0641d6
-title: Step 79
+title: Step 81
challengeType: 20
dashedName: step-81
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
index cc4f4eacee1..db091c232cc 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
@@ -1,6 +1,6 @@
---
id: 655522883e66f618e03a9411
-title: Step 80
+title: Step 82
challengeType: 20
dashedName: step-82
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
index cd29fc36bb4..9588d739f44 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
@@ -1,6 +1,6 @@
---
id: 6555231eac4d9f19bd3d44b5
-title: Step 81
+title: Step 83
challengeType: 20
dashedName: step-83
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
index c02b037de64..b8c910a3aa5 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
@@ -1,6 +1,6 @@
---
id: 65552a111190e11f0963949e
-title: Step 82
+title: Step 84
challengeType: 20
dashedName: step-84
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
index eb0c5d14c63..28da95df2b0 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
@@ -1,6 +1,6 @@
---
id: 65552a9593755e1fb2f5ab50
-title: Step 83
+title: Step 85
challengeType: 20
dashedName: step-85
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
index aa1a050cf04..4fcaff7b89c 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
@@ -1,6 +1,6 @@
---
id: 65552b14e803731fe3c1e4ca
-title: Step 84
+title: Step 86
challengeType: 20
dashedName: step-86
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
index 3b6cc0579a3..f8ea2a67964 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
@@ -1,6 +1,6 @@
---
id: 65553159615a8123b190ee43
-title: Step 85
+title: Step 87
challengeType: 20
dashedName: step-87
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
index 1e3ad3dfb8a..6799724af14 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
@@ -1,6 +1,6 @@
---
id: 6555d6e12c95701172b55709
-title: Step 75
+title: Step 77
challengeType: 20
dashedName: step-77
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
index f3c3b93e0c6..97049b3b537 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
@@ -1,6 +1,6 @@
---
id: 6555d8b0b3d20b128bdadd37
-title: Step 76
+title: Step 78
challengeType: 20
dashedName: step-78
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
index 866b80d387b..d310105bfe1 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
@@ -1,6 +1,6 @@
---
id: 6555db4a7b788e15795674e5
-title: Step 87
+title: Step 89
challengeType: 20
dashedName: step-89
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
index 2cf86f2dd96..3a91139cf33 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
@@ -1,6 +1,6 @@
---
id: 6555df0c81300b175308557d
-title: Step 88
+title: Step 90
challengeType: 20
dashedName: step-90
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
index 959034b7875..bc5788b45f8 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
@@ -1,6 +1,6 @@
---
id: 6555e1bfcd374e18c6be8e58
-title: Step 89
+title: Step 91
challengeType: 20
dashedName: step-91
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
index 791d9bdbd6d..4d7848b4be9 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
@@ -1,6 +1,6 @@
---
id: 6555e3f387381a19d5e00333
-title: Step 90
+title: Step 92
challengeType: 20
dashedName: step-92
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
index 20f69b6bd24..e895a41b321 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
@@ -1,6 +1,6 @@
---
id: 6555e43e783ed31a0532b1b2
-title: Step 91
+title: Step 93
challengeType: 20
dashedName: step-93
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
index 9acf44cfdc2..f878bb6c12b 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
@@ -1,6 +1,6 @@
---
id: 6555e547c18a2b1a7b795bd8
-title: Step 93
+title: Step 95
challengeType: 20
dashedName: step-95
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
index 312d322e32f..9b3df4758a0 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
@@ -1,6 +1,6 @@
---
id: 6555e5991af57d1ae0e35f0a
-title: Step 94
+title: Step 96
challengeType: 20
dashedName: step-96
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
index 3493c823d5d..1bb2f8f1567 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
@@ -1,6 +1,6 @@
---
id: 65a450e8fb2c9d75c7378d28
-title: Step 86
+title: Step 88
challengeType: 20
dashedName: step-88
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
index a15a486b7eb..29a960e8277 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
@@ -1,6 +1,6 @@
---
id: 65a51c9e000b660122b8b29e
-title: Step 92
+title: Step 94
challengeType: 20
dashedName: step-94
---
diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md
index 06886e907e2..97b59e6040a 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4e74f7fd3f4a99ac2e50.md
@@ -18,7 +18,7 @@ numbers.shift();
The `numbers` array would be `[2, 3]`.
-Declare a `shifted` variable, assign it the result of calling `.shift()` on your `numbers` array, and print the variable.
+Directly below your `numbers` array, declare a `shifted` variable and assign it the result of calling `.shift()` on the `numbers` array. On the next line, log the `shifted` variable to the console.
# --hints--
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md
index 1ce23b1da39..c212eb6739a 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf7f97e7f99af9348f5068.md
@@ -7,29 +7,29 @@ dashedName: step-3
# --description--
-Next, access the `id` called `"head-coach"` from the HTML document and store it in a `const` variable called `headCoach`. Below that variable, assign the `id` of `"player-cards"` to a `const` variable called `playerCards`.
+接下来,从 HTML 文档中访问名为 `"head-coach"` 的 `id`,并将其存储在名为 `headCoach` 的 `const` 变量中。 在该变量下方,将 `"player-cards"` 的 `id` 分配给名为 `playerCards` 的 `const` 变量。
# --hints--
-You should use the `document.getElementById()` method to get the `#head-coach` element.
+你应该使用 `document.getElementById()` 方法来获取 `#head-coach` 元素。
```js
assert.match(code, /document\.getElementById\(\s*('|"|`)head-coach\1\s*\)/);
```
-You should use `const` to declare the variable called `headCoach` and assign it the `#head-coach` element.
+你应该使用 `const` 声明名为 `headCoach` 的变量,并为其分配 `#head-coach` 元素。
```js
assert.match(code, /const\s+headCoach\s*=\s*document\.getElementById\(\s*('|"|`)head-coach\1\s*\)/);
```
-You should use the `document.getElementById()` method to get the `#player-cards` element.
+你应该使用 `document.getElementById()` 方法来获取 `#player-cards` 元素。
```js
assert.match(code, /document\.getElementById\(\s*('|"|`)player-cards\1\s*\)/);
```
-You should use `const` to declare the variable called `playerCards` and assign it the `#player-cards` element.
+你应该使用 `const` 声明名为 `playerCards` 的变量,并为其分配 `#player-cards` 元素。
```js
assert.match(code, /const\s+playerCards\s*=\s*document\.getElementById\(\s*('|"|`)player-cards\1\s*\)/);
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md
index 860790dceaf..f0c962f45b6 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf8ec006a776ff5f6e3c68.md
@@ -7,18 +7,18 @@ dashedName: step-6
# --description--
-Inside the `myFavoriteFootballTeam` object, add a new property with a key named `team` and a string value of `"Argentina"`.
+在 `myFavoriteFootballTeam` 对象内,添加一个新属性,其键名为 `team`,字符串值为 `"Argentina"`。
# --hints--
-Your `myFavoriteFootballTeam` object should have a `team` property.
+你的 `myFavoriteFootballTeam` 对象应该具有 `team` 属性。
```js
assert.property(myFavoriteFootballTeam, 'team');
```
-Your `team` property should be set to `"Argentina"`.
+你的 `team` 属性应设置为 `"Argentina"`。
```js
assert.equal(myFavoriteFootballTeam.team, 'Argentina');
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md
index 6899c0e2602..9ca6a41a975 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63cf90d4696d8f00851873a4.md
@@ -7,17 +7,17 @@ dashedName: step-7
# --description--
-Below the `team` property, add a new property with a key named `sport` and a string value of `"Football"`.
+在 `team` 属性下方,添加一个新属性,其键名为 `sport`,字符串值为 `"Football"`。
# --hints--
-Your `myFavoriteFootballTeam` object should have a `sport` property.
+你的 `myFavoriteFootballTeam` 对象应该具有 `sport` 属性。
```js
assert.property(myFavoriteFootballTeam, 'sport');
```
-Your `sport` property should be set to `Football`.
+你的 `sport` 属性应设置为 `Football`。
```js
assert.equal(myFavoriteFootballTeam.sport, 'Football');
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md
index 26199dd1800..567294d4018 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63d12b9c7aaee43de1ba265d.md
@@ -7,16 +7,16 @@ dashedName: step-14
# --description--
-The rest of the data for the `myFavoriteFootballTeam.players` array has been filled out for you.
+`myFavoriteFootballTeam.players` 数组的其余数据已为你填写。
-The next step is to ensure that you can't modify this object by adding or removing any properties. We are going to use a method called `Object.freeze(obj)` which will freeze this object and prevent any changes being made to it.
+下一步是确保你不能通过添加或删除任何属性来修改此对象。 我们将使用一种名为 `Object.freeze(obj)` 的方法,它将冻结该对象并防止对其进行任何更改。
-Use the `Object.freeze()` method to freeze the `myFavoriteFootballTeam` object.
+使用 `Object.freeze()` 方法冻结 `myFavoriteFootballTeam` 对象。
# --hints--
-You should use the `Object.freeze()` method to freeze the `myFavoriteFootballTeam` object.
+你应该使用 `Object.freeze()` 方法来冻结 `myFavoriteFootballTeam` 对象。
```js
assert.isFrozen(myFavoriteFootballTeam);
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md
index f21fcdc5ab2..025390a3627 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e02a333354343b595d64ca.md
@@ -1,25 +1,25 @@
---
id: 63e02a333354343b595d64ca
-title: Step 15
+title: 步骤 15
challengeType: 0
dashedName: step-15
---
# --description--
-The next step is to access the key called `sport` from the `myFavoriteFootballTeam` object and assign it to a new `const` variable called `sport`.
+下一步是从 `myFavoriteFootballTeam` 对象访问名为 `sport` 的键,并将其分配给名为 `sport` 的新 `const` 变量。
-Remember you can use dot notation for this.
+请记住,你可以使用点符号来表示这一点。
# --hints--
-You should use `const` to declare a `sport` variable.
+你应该使用 `const` 来声明 `sport` 变量。
```js
assert.match(code, /const\s+sport\s*=/);
```
-You should assign the value of the `sport` key from the `myFavoriteFootballTeam` object to the `sport` variable.
+你应该将 `myFavoriteFootballTeam` 对象中的 `sport` 键的值分配给 `sport` 变量。
```js
assert.equal(sport, myFavoriteFootballTeam.sport);
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md
index 32ae955337d..3b1d1ea6c03 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e042661ad2663f0d468740.md
@@ -1,17 +1,17 @@
---
id: 63e042661ad2663f0d468740
-title: Step 19
+title: 步骤 19
challengeType: 0
dashedName: step-19
---
# --description--
-Now you need to access the `coachName` value from the `myFavoriteFootballTeam.headCoach` object using the destructuring syntax.
+现在你需要使用解构语法从 `myFavoriteFootballTeam.headCoach` 对象访问 `coachName` 值。
# --hints--
-Use object destructuring to access the `coachName` value.
+使用对象解构来访问 `coachName` 值。
```js
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md
index 3562608e3f9..487d11cc8bf 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05557016dfd45ea49152c.md
@@ -1,17 +1,17 @@
---
id: 63e05557016dfd45ea49152c
-title: Step 21
+title: 步骤 21
challengeType: 0
dashedName: step-21
---
# --description--
-Next, assign the `team` variable to `teamName.textContent`.
+接下来,将 `team` 变量分配给 `teamName.textContent`。
# --hints--
-You should assign the `team` variable to `teamName.textContent`.
+你应该将 `team` 变量分配给 `teamName.textContent`。
```js
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md
index 70772e4cba9..087cef6e8ce 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e05c00b615bb46ac87273a.md
@@ -1,21 +1,21 @@
---
id: 63e05c00b615bb46ac87273a
-title: Step 22
+title: 步骤 22
challengeType: 0
dashedName: step-22
---
# --description--
-Assign the `year` variable to `worldCupYear.textContent`.
+将 `year` 变量分配给 `worldCupYear.textContent`。
-Below that, assign the `coachName` variable to `headCoach.textContent`.
+下面,将 `coachName` 变量分配给 `headCoach.textContent`。
-You should now see all of that information displayed on the screen below `Team stats`.
+现在你应该可以在 `Team stats` 下方的屏幕上看到所有这些信息。
# --hints--
-You should assign the `year` variable to `worldCupYear.textContent`.
+你应该将 `year` 变量分配给 `worldCupYear.textContent`。
```js
@@ -23,7 +23,7 @@ assert.match(code, /worldCupYear\.textContent\s*=\s*year\s*/)
```
-You should assign the `coachName` variable to `headCoach.textContent`.
+你应该将 `coachName` 变量分配给 `headCoach.textContent`。
```js
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md
index 862d6c0fd77..6fdc55edcf1 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e060df21bca347b2d2b374.md
@@ -1,44 +1,44 @@
---
id: 63e060df21bca347b2d2b374
-title: Step 23
+title: 步骤 23
challengeType: 0
dashedName: step-23
---
# --description--
-Now you will start building out the function that will show player cards based on the selections made by the user in the `Filter Teammates` dropdown menu.
+现在,你将开始构建根据用户在 `Filter Teammates` 下拉菜单中所做的选择显示球员卡片的功能。
-Start by creating an empty arrow function called `setPlayerCards`. You do not need to add a parameter because that will be taken care of in the next step.
+首先创建一个名为 `setPlayerCards` 的空箭头函数。 你不需要添加参数,因为这将在下一步中处理。
# --hints--
-You should use `const` to declare a `setPlayerCards` variable.
+你应该使用 `const` 来声明 `setPlayerCards` 变量。
```js
assert.match(code, /const\s+setPlayerCards\s*=/);
```
-Your `setPlayerCards` variable should be a function.
+你的 `setPlayerCards` 变量应该是一个函数。
```js
assert.isFunction(setPlayerCards);
```
-Your `setPlayerCards` function should use arrow syntax.
+你的 `setPlayerCards` 函数应该使用箭头语法。
```js
assert.match(code, /const\s+setPlayerCards\s*=\s*\(.*\)\s*=>/);
```
-Your `setPlayerCards` function should not take a parameter.
+你的 `setPlayerCards` 函数不应接受参数。
```js
assert.match(code, /const\s+setPlayerCards\s*=\s*\(\s*\)\s*=>/);
```
-Your `setPlayerCards` function should be empty.
+你的 `setPlayerCards` 函数应该是空的。
```js
assert.match(code, /const\s+setPlayerCards\s*=\s*\(\s*\)\s*=>\s*{\s*}/);
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md
index a759d4b37b8..95afe938baf 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e062d6090ebb486a4eda3a.md
@@ -1,13 +1,13 @@
---
id: 63e062d6090ebb486a4eda3a
-title: Step 24
+title: 步骤 24
challengeType: 0
dashedName: step-24
---
# --description--
-Function parameters can be initialized with default values. If a function is called without an argument, then the default value will be used:
+函数参数可以用默认值初始化。 如果调用函数时没有参数,则将使用默认值:
```js
const greeting = (name = "Anonymous") => {
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md
index 1a5ad7a22ed..553eb1997b4 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e94dae6dcedbad73f2f6ee.md
@@ -1,15 +1,15 @@
---
id: 63e94dae6dcedbad73f2f6ee
-title: Step 26
+title: 步骤 26
challengeType: 0
dashedName: step-26
---
# --description--
-`arr` contains a series of objects that each contains a `name`, `position`, `number`, `isCaptain` and `nickname` property. In order to access each of those properties inside the callback function, you will need to use object destructuring to unpack them into variables.
+`arr` 包含一系列对象,每个对象包含一个 `name`、`position`、`number`、`isCaptain` 和 `nickname` 属性。 为了访问回调函数内的每个属性,你需要使用对象解构将它们解包为变量。
-Here is an example:
+以下是一个例子:
```js
function myExampleFunction({ name, age, job, city }) {
@@ -17,11 +17,11 @@ function myExampleFunction({ name, age, job, city }) {
}
```
-Inside the parameter list in the callback function for the `map` method, unpack all 5 object properties from objects in `arr` using object destructuring.
+在 `map` 方法的回调函数中的参数列表中,使用对象解构从 `arr` 中的对象中解包所有 5 个对象属性。
# --hints--
-You should unpack all 5 object properties from objects in `arr` using object destructuring.
+你应该使用对象解构从 `arr` 中的对象中解压所有 5 个对象属性。
```js
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md
index ef297926818..23c922d78c7 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e954321b0a77ae4f6d9650.md
@@ -1,19 +1,19 @@
---
id: 63e954321b0a77ae4f6d9650
-title: Step 27
+title: 步骤 27
challengeType: 0
dashedName: step-27
---
# --description--
-Inside the body of the callback function, you will need to add template literals ` `` ` which will contain the HTML content for the player cards.
+在回调函数的主体内,你需要添加模板文字 ` `` `,它将包含队员卡的 HTML 内容。
-Inside the template literals, add an empty `div` with a class of `"player-card"`.
+在模板字面量中,添加一个空的 `div`,其类为 `"player-card"`。
# --hints--
-You should use template literals to add an empty `div` with a class of `"player-card"`.
+你应该使用模板字面量来添加一个带有 `"player-card"` 类的空 `div`。
```js
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md
index ea400938ddb..e7433f9dc6d 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e95e39860dc5b01ebe9be0.md
@@ -1,19 +1,19 @@
---
id: 63e95e39860dc5b01ebe9be0
-title: Step 29
+title: 步骤 29
challengeType: 0
dashedName: step-29
---
# --description--
-The next step would be to display the word `(Captain)` next to the player if they are listed as a captain for the team.
+下一步是在球员旁边显示单词 `(Captain)`,如果他们被列为球队队长。
-Before the `${name}` expression, add a new embedded expression. Inside that expression, use a ternary operator to check if `isCaptain` is true. If so, return `"(Captain)"` otherwise return an empty string.
+在 `${name}` 表达式之前添加一个新的嵌入表达式。 在该表达式中,使用三元运算符检查 `isCaptain` 是否为真。 如果是,则返回 `"(Captain)"`,否则返回空字符串。
# --hints--
-You should use a ternary operator to check if `isCaptain` is true and return `"(Captain)"` or return an empty string.
+你应该使用三元运算符来检查 `isCaptain` 是否为真并返回 `"(Captain)"` 或返回一个空字符串。
```js
assert.match(code, /\s*
\s*Position:\s*\${\s*position\s*}\s*<\/p>\s*/) ``` -Your new `p` element should come after the `h2` element. +你的新 `p` 元素应位于 `h2` 元素之后。 ```js assert.match(code, /<\/h2>\s*
\s*Position:\s*\${\s*position\s*}\s*<\/p>\s*/) diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md index 6561bbffc5f..60d66e3df63 100644 --- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md +++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63e9718d7d490bb3940d5a0a.md @@ -1,31 +1,31 @@ --- id: 63e9718d7d490bb3940d5a0a -title: Step 33 +title: 步骤 33 challengeType: 0 dashedName: step-33 --- # --description-- -Next to the `Nickname:` text, add an embedded expression that will show the player's nickname if they have one. +在 `Nickname:` 文本旁边,添加一个嵌入表达式,如果玩家有昵称,则显示该玩家的昵称。 -Use a ternary operator to check if `nickname` is not `null`. If the player has a nickname, display `nickname` otherwise display `"N/A"`. +使用三元运算符检查 `nickname` 是否不为 `null`。 如果玩家有昵称,则显示 `nickname`,否则显示 `"N/A"`。 # --hints-- -You should use a ternary operator to check if `nickname` is truthy. +你应该使用三元运算符来检查 `nickname` 是否真实。 ```js assert.match(code, /\s*
\s*Nickname:\s*\$\{\s*nickname\s*(?:!==\s*null)?\s*\?/) ``` -If your ternary is truthy, it should display the player's `nickname`. +如果你的三元组为真,它应该显示队员的 `nickname`。 ```js assert.match(code, /\s*
\s*Nickname:\s*\$\{\s*nickname\s*(?:!==\s*null)?\s*\?\s*nickname\s*:/) ``` -If your ternary is falsy, it should display the string `"N/A"`. +如果你的三元数为假,它应该显示字符串 `"N/A"`。 ```js assert.match(code, /\s*
\s*Nickname:\s*\$\{\s*nickname\s*(?:!==\s*null)?\s*\?\s*nickname\s*:\s*('|"|`)\N\/A\1\s*\}\s*<\/p>\s*/)
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md
index 75123450cd8..aeb3091421a 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f293c804d6f9e9a83ca4c5.md
@@ -1,21 +1,21 @@
---
id: 63f293c804d6f9e9a83ca4c5
-title: Step 37
+title: 步骤 37
challengeType: 0
dashedName: step-37
---
# --description--
-Inside the callback function, add a `console.log` with the value of `e.target.value`.
+在回调函数内部,添加一个 `console.log`,其值为 `e.target.value`。
-Open the console, and make a selection from the teammates dropdown menu. You should see the value of that selection in the console.
+打开控制台,从队友下拉菜单中进行选择。 你应该在控制台中看到该选择的值。
-`e.target.value` represents the `value` property from the `playersDropdownList` element. In future steps, you will use this value to show player cards based on the position they play.
+`e.target.value` 表示 `playersDropdownList` 元素中的 `value` 属性。 在接下来的步骤中,你将使用此值根据玩家所处的位置显示玩家卡。
# --hints--
-You should add a `console.log` with the value of `e.target.value`.
+你应该添加一个 `console.log`,其值为 `e.target.value`。
```js
assert.match(code, /console\.log\s*\(\s*e\.target\.value\s*\)\s*/)
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md
index 2efcf6373f4..c43384930dc 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2a4a8087e6dec8ec47f16.md
@@ -1,59 +1,59 @@
---
id: 63f2a4a8087e6dec8ec47f16
-title: Step 43
+title: 步骤 43
challengeType: 0
dashedName: step-43
---
# --description--
-Next, add a `case` clause for `"forward"`.
+接下来,为 `"forward"` 添加一个 `case` 子句。
-Inside that `case`, call the `setPlayerCards` function with an argument of `players.filter()`.
+在该 `case` 中,使用 `players.filter()` 参数调用 `setPlayerCards` 函数。
-Inside the `filter()` method, add a callback function with a parameter of `player` that will check if `player.position` equals `"forward"`.
+在 `filter()` 方法中,添加一个带有 `player` 参数的回调函数,该函数将检查 `player.position` 是否等于 `"forward"`。
-Lastly, add a `break` statement below the `setPlayerCards` function call.
+最后,在 `setPlayerCards` 函数调用下方添加 `break` 语句。
# --hints--
-You should add a new `case` for `"forward"` inside your `switch` statement.
+你应该在 `switch` 语句内为 `"forward"` 添加一个新的 `case`。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*/)
```
-In your `"forward"` `case`, you should call the `setPlayerCards` function.
+在你的 `"forward"``case` 中,你应该调用 `setPlayerCards` 函数。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(/)
```
-You should pass `players.filter()` to your `setPlayerCards` call.
+你应该将 `players.filter()` 传递给你的 `setPlayerCards` 调用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(/)
```
-You should pass an arrow callback function to your `players.filter()` call.
+你应该将箭头回调函数传递给你的 `players.filter()` 调用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(.*\)|[^\s()]+)\s*=>/);
```
-Your `filter()` callback should take a `player` parameter.
+你的 `filter()` 回调应该采用 `player` 参数。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(\s*player\s*\)|player)\s*=>/)
```
-Your `filter()` callback should implicitly return the result of checking if `player.position` is `"forward"`.
+你的 `filter()` 回调应该隐式返回检查 `player.position` 是否为 `"forward"` 的结果。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(?:\(\s*player\s*\)|player)\s*=>\s*(?:player\.position\s*===?\s*('|"|`)forward\2|('|"|`)forward\3\s*===?\s*player\.position)\s*\)/)
```
-You will need to add a `break` statement below your `setPlayerCards` call.
+你需要在 `setPlayerCards` 调用下方添加 `break` 语句。
```js
assert.match(code, /\s*case\s*('|"|`)\s*forward\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(?:\(?\s*player\s*\)|player)\s*=>\s*(?:player\.position\s*===?\s*('|"|`)forward\2|('|"|`)forward\3\s*===?\s*player\.position)\s*\)\s*\)\s*;?\s*break/)
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md
index 06f1dcdf797..2832e945510 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/63f2ab4f6c52c5eec6d68de4.md
@@ -1,29 +1,29 @@
---
id: 63f2ab4f6c52c5eec6d68de4
-title: Step 47
+title: 步骤 47
challengeType: 0
dashedName: step-47
---
# --description--
-The final step is to add a `default` clause if none of the other `case` clauses match the user selection.
+最后一步是,如果其他 `case` 子句均不符合用户选择,则添加 `default` 子句。
-For the `default` clause, call the `setPlayerCards` function without any arguments passed in.
+对于 `default` 子句,调用 `setPlayerCards` 函数,不传入任何参数。
-Test out your dropdown menu, and you should see the player cards be filtered out by position or nickname.
+测试你的下拉菜单,你应该会看到球员卡片根据位置或昵称被过滤掉。
-Congratulations on completing the football team cards project!
+恭喜你完成足球队卡片项目!
# --hints--
-You should add a `default` clause to your `switch` statement.
+你应该在 `switch` 语句中添加 `default` 子句。
```js
assert.match(code, /default\s*:\s*/)
```
-In your `default` clause, you should call the `setPlayerCards` function without any arguments passed in.
+在你的 `default` 子句中,你应该调用 `setPlayerCards` 函数而不传入任何参数。
```js
assert.match(code, /default\s*:\s*setPlayerCards\(\s*\)/)
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md
index f450c5be63e..ca867d8d2a1 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-modern-javascript-methods-by-building-football-team-cards/641fc88d8fa7127f76e0324f.md
@@ -1,6 +1,6 @@
---
id: 641fc88d8fa7127f76e0324f
-title: Step 41
+title: 步骤 41
challengeType: 0
dashedName: step-41
---
@@ -8,37 +8,37 @@ dashedName: step-41
# --description--
-Call the `setPlayerCards` function with an argument of `players.filter()`.
+使用 `players.filter()` 参数调用 `setPlayerCards` 函数。
-Inside the `filter` method, add a callback function with a parameter called `player` and implicitly return `player.nickname` is not `null`.
+在 `filter` 方法内部,添加一个名为 `player` 的参数的回调函数,并隐式返回 `player.nickname` 不为 `null`。
# --hints--
-In your `nickname` case, you should call the `setPlayerCards` function.
+在你的 `nickname` case 中,你应该调用 `setPlayerCards` 函数。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(/)
```
-You should pass `players.filter()` to your `setPlayerCards` call.
+你应该将 `players.filter()` 传递给你的 `setPlayerCards` 调用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(/)
```
-You should pass an arrow callback function to your `players.filter()` call.
+你应该将箭头回调函数传递给你的 `players.filter()` 调用。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(.*\)|[^\s()]+)\s*=>/);
```
-Your `filter()` callback should take a `player` parameter.
+你的 `filter()` 回调应该采用 `player` 参数。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(\s*player\s*\)|player)\s*=>/)
```
-Your `filter()` callback should implicitly return the result of checking if `player.nickname` is not `null`.
+你的 `filter()` 回调应该隐式返回检查 `player.nickname` 是否不为 `null` 的结果。
```js
assert.match(code, /\s*case\s*('|"|`)\s*nickname\s*\1\s*:\s*setPlayerCards\(\s*players\.filter\(\s*(\(\s*player\s*\)|player)\s*=>\s*(player\.nickname\s*!==?\s*null|null\s*!==?\s*player\.nickname)\s*\)/)
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md
index 1ce73b58cb4..3915e17401c 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641cdf57c3f7ee276e1d9b32.md
@@ -7,7 +7,7 @@ dashedName: step-5
# --description--
-Back in your event listener, you need to update the text of the `result` element. You can use a `ternary` operator to achieve this task.
+Back in your event listener, you need to update the text of the `result` element. You can use a ternary operator to achieve this task.
Here is an example of assigning the result of a ternary operator to an element's text content:
diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md
index aac052d379e..086f61a54d2 100644
--- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md
+++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-regular-expressions-by-building-a-spam-filter/641ce3065c50e62f97406973.md
@@ -9,7 +9,7 @@ dashedName: step-7
Regular expressions can take flags to modify their behavior. For instance, the `i` flag can be used to make the expression ignore case, causing it to match `hello`, `HELLO`, and `Hello` for the expression `/hello/`.
-Flags are added after the trailing backslash. Add the `i` flag to your `helpRegex`.
+Flags are added after the trailing slash. Add the `i` flag to your `helpRegex`.
# --hints--
diff --git a/curriculum/challenges/chinese/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md b/curriculum/challenges/chinese/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
index f576d444df1..46d9a6a0141 100644
--- a/curriculum/challenges/chinese/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
+++ b/curriculum/challenges/chinese/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
@@ -11,132 +11,135 @@ dashedName: css-foundations-exercise-a
## User Stories
-1. You should see a `div` element with a `red` background, `white` text, a font size of `32px`, center aligned, and `bold`.
-
-1. The CSS of the `div` element should be added externally by using a type selector.
-
-1. You should see a `p` element with a `green` background, `white` text, and a font size of `18px`.
-
-1. The CSS of the `p` element should be added internally by using a type selector.
-
-1. You should see a `button` element with an `orange` background and a font size of `18px`.
-
-1. The CSS of the `button` element should have an inline style.
+- You should see a `div` element with some text.
+ - It should have a `red` background, `white` text, a font size of `32px`, text center aligned and `bold`.
+ - The CSS for the `div` element should be added externally, and using a type selector.
+- You should see a `p` element with some text.
+ - It should have a `green` background, `white` text, and a font size of `18px`.
+ - The CSS for the `p` element should be added internally, and using a type selector.
+- You should see a `button` element with some text.
+ - The `button` element should have an `orange` background and a font size of `18px`.
+ - The CSS for the `button` element should be added using inline styles.
# --hints--
-There should be one `div` element. It should contain some text and be aligned in the center.
+You should have one `div` element containing some text.
```js
-const aligned = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('text-align');
+const divElement = document.querySelector('div');
-assert(aligned === 'center');
-assert(document.getElementsByTagName('DIV')?.length == 1);
-assert(document.getElementsByTagName('DIV')?.[0]?.innerText.length > 0)
+assert.isNotNull(divElement);
+assert.isAtLeast(divElement?.innerText.length, 1);
```
-The `div` element should have a `background-color` of `red` and a text color of `white`.
+You should have an external stylesheet containing the `div` element styles.
```js
+const styleSheet = new __helpers.CSSHelp(document).getStyleSheet();
+const isExternal = styleSheet?.ownerNode.classList.contains('fcc-injected-styles');
+const divStyle = new __helpers.CSSHelp(document).getStyle('div');
-const bgc = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('background-color');
-
-const color = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('color');
-
-assert(bgc === 'red');
-assert(color === 'white');
+assert.isTrue(isExternal);
+assert.isNotNull(divStyle);
```
-The `div` element should have a `font-weight` of `bold` and a `font-size` of `32px`.
+Your `div` element should not have its CSS added using internal or inline styles.
```js
-const fontSize = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('font-size');
-const fontWeight = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('font-weight');
+const styleElement = document.querySelector('style:not([class])');
-assert(fontSize === '32px');
-assert(fontWeight === 'bold');
+assert.isNotTrue(styleElement?.innerText.includes('div'));
+assert.isNotTrue(document.querySelector('div')?.hasAttribute('style'));
```
-The `div` element should have its CSS added externally.
+Your `div` element should have a `background-color` of `red` and a `color` of `white`.
```js
-assert(!document.getElementsByTagName('style')?.[0]?.innerText.includes('div'));
-assert(!document.getElementsByTagName('div')?.[0]?.hasAttribute('style'));
+const divStyle = new __helpers.CSSHelp(document).getStyle('div');
+const divBGColor = divStyle?.getPropertyValue('background-color');
+const divColor = divStyle?.getPropertyValue('color');
+
+assert.equal(divBGColor, 'red');
+assert.equal(divColor, 'white');
```
-There should be one `p` element and it should contain some text.
+Your `div` element should have `font-weight` set to `bold`, `font-size` set to `32px`, and `text-align` set to `center`.
```js
-assert(document.getElementsByTagName('P')?.length == 1);
-assert(document.getElementsByTagName('P')?.[0]?.innerText.length > 0)
+const divStyle = new __helpers.CSSHelp(document).getStyle('div');
+const textAlign = divStyle?.getPropertyValue('text-align');
+const fontSize = divStyle?.getPropertyValue('font-size');
+const fontWeight = divStyle?.getPropertyValue('font-weight');
+
+assert.equal(textAlign, 'center');
+assert.equal(fontSize, '32px');
+assert.equal(fontWeight,'bold');
```
-The `p` element should have its `color` set to `white`.
+You should have one `p` element and it should contain some text.
```js
-const color = new __helpers.CSSHelp(document).getStyle('div')?.getPropertyValue('color');
+const pElement = document.querySelector('p');
-assert(color == 'white');
+assert.isNotNull(pElement);
+assert.isAtLeast(pElement?.innerText.length, 1)
```
-The `p` element should have a `font-size` of `18px`.
+Your `p` element should have its styles added internally using a `style` element.
```js
-const styleTag = document.getElementsByTagName('style')?.[0];
-let pHasFontSize18 = false;
+const styleElement = document.querySelector('style:not([class])');
+const rules = styleElement?.sheet?.cssRules?.[0] || styleElement?.sheet?.rules?.[0];
+let isStyled = false;
-const rules = styleTag?.sheet?.cssRules || styleTag?.sheet?.rules;
-if (rules) {
- for (let j = 0; j < rules.length; j++) {
- const rule = rules[j];
- if (rule.selectorText === 'p' && rule.style.fontSize === '18px') {
- pHasFontSize18 = true;
- break;
- }
- }
+if (rules && rules.selectorText === 'p') {
+ isStyled = true;
}
-assert(pHasFontSize18);
+assert.isTrue(isStyled);
```
-The `p` element should have its style added internally.
+Your `p` element should have a `font-size` of `18px` and have `color` set to `white`.
```js
+const styleElement = document.querySelector('style:not([class])');
+const rules = styleElement?.sheet?.cssRules?.[0] || styleElement?.sheet?.rules?.[0];
+let fontSize, color;
-const styleTag = document.getElementsByTagName('style')?.[0];
-let pIsStyled = false;
-
-
-const rules = styleTag?.sheet?.cssRules || styleTag?.sheet?.rules;
-if (rules) {
- for (let j = 0; j < rules.length; j++) {
- const rule = rules[j];
- if (rule.selectorText === 'p') {
- pIsStyled = true;
- break;
- }
- }
+if (rules && rules.selectorText === 'p') {
+ fontSize = rules.style.fontSize;
+ color = rules.style.color;
}
-assert(pIsStyled);
+assert.equal(fontSize, "18px");
+assert.equal(color, 'white');
```
-The `button` element should have its `background-color` set to `orange`.
+You should have one `button` element containing some text.
```js
-assert(document.getElementsByTagName('button')?.[0]?.style.backgroundColor === 'orange')
+const btnElement = document.querySelector('button');
+
+assert.isNotNull(btnElement);
+assert.isAtLeast(btnElement?.innerText.length, 1);
```
-The `button` element should have its `font-size` set to `18px`.
+Your `button` element should have an inline style.
```js
-assert(document.getElementsByTagName('button')?.[0]?.style.fontSize === '18px')
+assert.isTrue(document.querySelector('button')?.hasAttribute('style'));
```
-The `button` element should have an inline style.
+Your `button` element should have its `background-color` set to `orange`.
```js
-assert(document.getElementsByTagName('button')?.[0]?.hasAttribute('style'));
+assert.equal(document.querySelector('button')?.style.backgroundColor, 'orange')
+```
+
+Your `button` element should have its `font-size` set to `18px`.
+
+```js
+assert.equal(document.querySelector('button')?.style.fontSize, '18px')
```
# --seed--
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index e6cded08462..9fe50aa1ce5 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 例如:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 例如:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 38a333bafe2..f979cac4035 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/espanol/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/espanol/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 540d31def4f..ffe60228c59 100644
--- a/curriculum/challenges/espanol/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/espanol/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 103c8558e4f..ab8330dfc72 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index 9cce0c7aeab..bdb39b09f1d 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index 6550695e2b3..2be323ec29a 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index 8ed4c1a5ece..a236487f135 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index deaf0f21d44..fafd4d7cebd 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index f29c047eeb7..e569abe912b 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index c3cc044179c..5a59b09d23f 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index 20743b17fbc..3860a157be8 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index bb0cb5210a2..2a2f51f7f10 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index 907267703b7..0c0239e0ca6 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index 526814b8a15..a9605680e44 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index 44e40aa0cd4..2502eb69b5c 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index 04e73107a6f..628714d893c 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index bb5ef8c6dff..45ba7005550 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: Paso 15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index c9b48cfe580..10047b0fe72 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: Paso 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 24ecdbdaa71..54e06855f9a 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: Paso 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 1e3a7c8adb6..3efdcd1ab2e 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: Paso 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index a18e13f0872..a30bf0c9b05 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: Paso 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index 56078a5b391..fea2df988fe 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: Paso 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 33671a33aff..27e26e0af4c 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: Paso 21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index 91667b80055..fc8a0165867 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: Paso 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615380dff67172357fcf0425.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615380dff67172357fcf0425.md
index e2137149ee7..e50fdf676e1 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615380dff67172357fcf0425.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615380dff67172357fcf0425.md
@@ -7,33 +7,33 @@ dashedName: step-11
# --description--
-Now your images are too big.
+Ahora tus imágenes son demasiado grandes.
-Create a `.gallery img` selector to target them. Give them all a `width` of `100%` and a `max-width` of `350px`.
+Crea un selector `.gallery img` para seleccionarlas. Dales a todas un (ancho) `width` de `100%` y un (ancho máximo) `max-width` dé `350px`.
-Also set the `height` property to `300px` to keep your images a uniform size.
+También establece la propiedad `height` a `300px` para mantener las imágenes en un tamaño uniforme.
# --hints--
-You should have a `.gallery img` selector.
+Debes tener un selector `.gallery img`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('.gallery img'));
```
-Your `.gallery img` selector should have a `width` property set to `100%` as the value.
+Tu selector `.gallery img` debe tener una propiedad `width` con un valor dé `100%`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.gallery img')?.width === '100%');
```
-Your `.gallery img` selector should have a `max-width` property set to `350px` as the value.
+Tu selector `.gallery img` debe una propiedad `max-width` con un valor dé `350px`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('.gallery img')?.maxWidth, '350px');
```
-Your `.gallery img` selector should have a `height` property set to `300px` as the value.
+Tu selector `.gallery img` debe tener una propiedad `height` con un valor dé `300px`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('.gallery img')?.height, '300px');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md
index 6904a32b8c7..65f38134e4c 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md
@@ -9,7 +9,7 @@ dashedName: step-21
Tus imágenes necesitan algo de espacio entre ellas.
-The `gap` CSS shorthand property sets the gaps, also known as gutters, between rows and columns. La propiedad `gap` y sus subpropiedades `row-gap` y `column-gap` proporcionan esta funcionalidad para los diseños flex, grid, y multicolumna. La propiedad se aplica al elemento contenedor.
+La propiedad abreviada CSS `gap` especifica los espacios, también conocidos como canales, entre filas y columnas. La propiedad `gap` y sus subpropiedades `row-gap` y `column-gap` proporcionan esta funcionalidad para los diseños flex, grid, y multicolumna. La propiedad se aplica al elemento contenedor.
Dale a tu contenedor flex `.gallery` una propiedad `gap` con un valor de `16px`.
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615f171d05def3218035dc85.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615f171d05def3218035dc85.md
index 90d340d8f01..471cbf4ae5d 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615f171d05def3218035dc85.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/615f171d05def3218035dc85.md
@@ -7,7 +7,7 @@ dashedName: step-12
# --description--
-Remove the margin from your body element, set the `font-family` to `sans-serif`, and give it a `background-color` of `#f5f6f7` as the value.
+Elimina el margen de tu elemento body, a `font-family` dale el valor `sans-serif`, y agrega un `background-color` con el valor `#f5f6f7`.
# --hints--
@@ -18,7 +18,7 @@ Deberías tener un selector `body`.
assert.exists(new __helpers.CSSHelp(document).getStyle('body'));
```
-Your `body` selector should have a `margin` property set to 0 as the value.
+Tu selector `body` debe tener una propiedad `margin` con el valor 0.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.marginTop, '0px');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6493bc0d99879635209565aa.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6493bc0d99879635209565aa.md
index c4489ebeac8..d85b2afb405 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6493bc0d99879635209565aa.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6493bc0d99879635209565aa.md
@@ -7,14 +7,14 @@ dashedName: step-9
# --description--
-The `border-box` sizing model does the opposite of `content-box`. The total width of the element, including padding and border, will be the explicit width set. The content of the element will shrink to make room for the padding and border.
+El modelo de tamaño `border-box` hace lo contrario que `content-box`. El ancho total del elemento, incluido el relleno (padding) y el borde (border), será el ancho establecido explícitamente. El contenido del elemento se reducirá para hacer espacio para el relleno (padding) y al borde (border).
-Change the `box-sizing` property to `border-box`. Notice how your blue image borders now fit within your red gallery border.
+Cambia la propiedad `box-sizing` a `border-box`. Observa cómo tus bordes azules de la imagen ahora encajan dentro de su borde rojo de la galería.
# --hints--
-Your * selector should have a `box-sizing` property set to `border-box` as the value.
+Tu selector * debe tener una propiedad `box-sizing` con el valor `border-box`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('*')?.boxSizing, 'border-box');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6494da0daf5df5197963671d.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6494da0daf5df5197963671d.md
index e7015f525cd..f9eeb996e90 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6494da0daf5df5197963671d.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6494da0daf5df5197963671d.md
@@ -7,27 +7,27 @@ dashedName: step-8
# --description--
-Notice how the blue image border extends beyond the red gallery border. This is due to the way browsers calculate the size of container elements.
+Observa cómo los bordes azules de la imagen se extienden más allá del borde rojo de la galería. Esto se debe a la forma en que los navegadores calculan el tamaño de los elementos contenedores.
-The `box-sizing` property is used to set this behavior. By default, the `content-box` model is used. With this model, when an element has a specific width, that width is calculated based only on the element's content. Padding and border values get added to the total width, so the element grows to accommodate these values.
+La propiedad `box-sizing` se utiliza para establecer este comportamiento. Por defecto, se utiliza el modelo `content-box`. Con este modelo, cuando un elemento tiene un ancho específico, esa anchura se calcula únicamente basándose en el contenido del elemento. Los valores de relleno (padding) y borde (border) se añaden al ancho total, por lo que el elemento crece para acpplarse a estos valores.
-Try setting `box-sizing` to `content-box` explicitly, with the global `*` selector. At this point, you will not see any changes, because you are using the default value.
+Intenta configurar `box-sizing` con el valor `content-box` explícitamente, en el selector global `*`. Por ahora, no verás ningún cambio, porque está utilizando el valor por defecto.
# --hints--
-You should have a `*` selector.
+Debes tener un selector `*`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('*'));
```
-Your `*` selector should have a `box-sizing` property.
+Tu selector `*` debe tener una propiedad `box-sizing`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('*')?.boxSizing);
```
-Your `*` selector should have its `box-sizing` property set to `content-box`.
+Tu selector `*` debe tener una propiedad `box-sizing` con el valor `content-box`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('*')?.boxSizing, 'content-box');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd076a1b33c86d84b4232f.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd076a1b33c86d84b4232f.md
index 39b5597acd3..267c89574c8 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd076a1b33c86d84b4232f.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd076a1b33c86d84b4232f.md
@@ -7,81 +7,81 @@ dashedName: step-7
# --description--
-In order to better visualize how your elements are sized, adding a border can be helpful.
+Para visualizar mejor el tamaño de los elementos, puede ser útil añadir un borde.
-Give your `.gallery` element a `width` of `50%` and a `border` set to `5px solid red`.
+Dale al elemento `.gallery` un `width` de `50%` y un `border` de `5px solid red`.
-Then give your `img` elements a `width` of `100%`, `padding` set to `5px`, and a `border` set to `5px solid blue`.
+Luego da a tus elementos `img` un `width` de `100%`, un `padding` de `5px` y un `border`de `5px solid blue`.
# --hints--
-You should have a `.gallery` selector.
+Debes tener un selector `.gallery`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('.gallery'));
```
-Your `.gallery` selector should have a `width` property.
+Tu selector `.gallery` debe tener una propiedad `width`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('.gallery')?.width);
```
-Your `.gallery` selector should have a `width` property set to `50%`.
+Tu selector `.gallery` debe tener una propiedad `width` establecida en `50%`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('.gallery')?.width, '50%');
```
-Your `.gallery` selector should have a `border` property.
+Tu selector `.gallery` debe tener una propiedad `border`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('.gallery')?.border);
```
-Your `.gallery` selector should have a `border` property set to `5px solid red`.
+Tu selector `.gallery` debe tener una propiedad `border` establecida en `5px solid red`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('.gallery')?.border, '5px solid red');
```
-You should have an `img` selector.
+Debes tener un selector `img`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('img'));
```
-Your `img` selector should have a `width` property.
+Tu selector `img` debe tener una propiedad `width`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('img')?.width);
```
-Your `img` selector should have a `width` property set to `100%`.
+Tu selector `img` debe tener una propiedad `width` establecida en `100%`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('img')?.width, '100%');
```
-Your `img` selector should have a `padding` property.
+Tu selector `img` debe tener una propiedad `padding`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('img')?.padding);
```
-Your `img` selector should have a `padding` property set to `5px`.
+Tu selector `img` debe tener una propiedad `padding` establecida en `5px`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('img')?.padding, '5px');
```
-Your `img` selector should have a `border` property.
+Tu selector `img` debe tener una propiedad `border`.
```js
assert.exists(new __helpers.CSSHelp(document).getStyle('img')?.border);
```
-Your `img` selector should have a `border` property set to `5px solid blue`.
+Tu selector `img` debe tener una propiedad `border` establecida en `5px solid blue`.
```js
assert.equal(new __helpers.CSSHelp(document).getStyle('img')?.border, '5px solid blue');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd136e4e8b0894f9c70d86.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd136e4e8b0894f9c70d86.md
index e99af49314b..223891935df 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd136e4e8b0894f9c70d86.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/64dd136e4e8b0894f9c70d86.md
@@ -7,19 +7,19 @@ dashedName: step-10
# --description--
-Now that you have figured out your `box-sizing` approach, you can clean up the CSS you added to see the changes.
+Ahora que has entendido el enfoque de tu `box-sizing`, puedes vaciar el CSS que añadiste para ver los cambios.
-Remove your `.gallery` and `img` selectors, and all rules within.
+Elimina tus selectores `.gallery` y `img` y todas las reglas que llevan dentro.
# --hints--
-You should not have a `.gallery` selector.
+No debes tener un selector `.gallery`.
```js
assert.notExists(new __helpers.CSSHelp(document).getStyle('.gallery'));
```
-You should not have an `img` selector.
+No debes tener un selector `img`.
```js
assert.notExists(new __helpers.CSSHelp(document).getStyle('img'));
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md
index 6221d387c8c..76bc0272d2a 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md
@@ -7,31 +7,31 @@ dashedName: step-26
# --description--
-To start your CSS, normalize the CSS rules by targeting all elements with `*`, including the `::before` and `::after` pseudo-selectors.
+Para iniciar tu CSS, normaliza las reglas CSS apuntando a todos los elementos con `*`, incluye los pseudo-selectores `::before` y `::after`.
-Set the `padding` and `margin` properties both to `0` and set the `box-sizing` property to `border-box`.
+A las propiedades `padding` y `margin` dales un valor de `0` y a `box-sizing` dale el valor `border-box`.
# --hints--
-You should have a `*, ::before, ::after` selector.
+Debes tener un selector `*, ::before, ::after`.
```js
assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after'));
```
-Your `*, ::before, ::after` selector should have a `padding` property set to `0`.
+Tu selector `*, ::before, ::after` debe tener una propiedad `padding` con el valor `0`.
```js
assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after')?.padding === '0px');
```
-Your `*, ::before, ::after` selector should have a `margin` property set to `0`.
+Tu selector `*, ::before, ::after` debe tener una propiedad `margin` con el valor `0`.
```js
assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after')?.margin === '0px');
```
-Your `*, ::before, ::after` selector should have a `box-sizing` property set to `border-box`.
+Tu selector `*, ::before, ::after` debe tener una propiedad `box-sizing` con el valor `border-box`.
```js
assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after')?.boxSizing === 'border-box');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md
index 6bbb17ae968..ecca5a213b1 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md
@@ -13,13 +13,13 @@ Esto te facilitará trabajar con unidades `rem` más adelante, ya que `2rem` ser
# --hints--
-You should create an `html` selector.
+Debes crear un selector `html`.
```js
assert(new __helpers.CSSHelp(document).getStyle('html'));
```
-Your `html` selector should have a `font-size` property set to `62.5%`.
+Tu selector `html` debe tener una propiedad `font-size` con el valor en `62.5%`.
```js
assert(new __helpers.CSSHelp(document).getStyle('html')?.fontSize === '62.5%');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md
index 72eafa4111f..d08f5c8e643 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md
@@ -9,7 +9,7 @@ dashedName: step-82
El pico y las patas del pingüino comparten el mismo `color`.
-Create a new custom CSS variable named `--penguin-picorna`, and replace all relevant property values with it.
+Crea una nueva variable CSS personalizable llamada `--penguin-picorna` y reemplaza todos los valores de propiedades que sean relevantes también.
# --hints--
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d2f0e9440bc27caee1cec.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d2f0e9440bc27caee1cec.md
index 832e11d018b..14466efc7e4 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d2f0e9440bc27caee1cec.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d2f0e9440bc27caee1cec.md
@@ -9,7 +9,7 @@ dashedName: step-93
Dato curioso: la mayoría de las aletas, si no todas, no son naturalmente rectangulares.
-Give the `.arm` elements' top-left, top-right, and bottom-right corners a radius of `30%`, and the bottom-left corner a radius of `120%`.
+Del elemento `.arm` a las esquinas superior-izquierda, superior-derecha e inferior-derecha un radio del `30%`, y la esquina inferior-izquierda un radio del `120%`.
# --hints--
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d324f5915c929f36ae91d.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d324f5915c929f36ae91d.md
index f3e72ff0216..90855d97bf4 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d324f5915c929f36ae91d.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d324f5915c929f36ae91d.md
@@ -35,7 +35,7 @@ Debe agregar un punto de referencia `40%` para `@keyframes wave`.
assert([...[...new __helpers.CSSHelp(document).getCSSRules('keyframes')].find(rule => rule?.name === 'wave')?.cssRules].some(css => css?.keyText === '40%'));
```
-You should have 4 waypoints in your keyframe.
+Debes tener 4 puntos de ruta en tu keyframe.
```js
assert([...[...new __helpers.CSSHelp(document).getCSSRules('keyframes')].find(rule => rule?.name === 'wave')?.cssRules].length === 4);
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98f0.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98f0.md
index 732534a913a..e9929db6194 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98f0.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98f0.md
@@ -32,13 +32,13 @@ Debes darle al `background` un `linear-gradient`.
assert.include(new __helpers.CSSHelp(document).getStyle('.bb1a')?.background, 'linear-gradient');
```
-You should give the `background` a `linear-gradient` starting from `var(--building-color1)`.
+Debes darle a la propiedad `background` un valor de `linear-gradient` a partir de `var(--building-color1)`.
```js
assert.include(new __helpers.CSSHelp(document).getStyle('.bb1a')?.getPropVal('background', true), 'linear-gradient(var(--building-color1');
```
-You should give the `background` a `linear-gradient` ending at `var(--window-color1)`.
+Debes darle a la propiedad `background` un valor de `linear-gradient` que termine en `var(--window-color1)`.
```js
assert.include(new __helpers.CSSHelp(document).getStyle('.bb1a')?.getPropVal('background', true), 'linear-gradient(var(--building-color1),var(--window-color1))');
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md
index ff8d760a140..d2ebb4a579f 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md
@@ -7,7 +7,7 @@ dashedName: step-54
# --description--
-Create and add the following properties to `.bb2a`:
+Crea y añade las siguientes propiedades a `.bb2a`:
```css
margin: auto;
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc174fcf86c76b9248c6eb2.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc174fcf86c76b9248c6eb2.md
index 7c50c6f3a49..1be540d926c 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc174fcf86c76b9248c6eb2.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc174fcf86c76b9248c6eb2.md
@@ -7,7 +7,7 @@ dashedName: step-1
# --description--
-HTML elements have an opening and closing tag with content in between.
+Los elementos HTML tienen una etiqueta de apertura y una de cierre con contenido entre ellas.
Here is the basic syntax:
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc24073f86c76b9248c6ebb.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc24073f86c76b9248c6ebb.md
index f0c14baacbd..0dda313eccc 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc24073f86c76b9248c6ebb.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc24073f86c76b9248c6ebb.md
@@ -15,19 +15,19 @@ Here is an example of an `img` element with a `src` attribute pointing to the fr
```
-Inside the existing `img` element, add a `src` attribute with this URL:
+Dentro del elemento `img` agrega un atributo `src` con esta URL:
`https://cdn.freecodecamp.org/curriculum/cat-photo-app/relaxing-cat.jpg`
# --hints--
-Your code should have an `img` element. You may have removed the `img` element or you have not surrounded the `src` attribute's value with quotes.
+Tu código debe tener un elemento `img`. Pudiste haber borrado el elemento `img` o no pusiste entre comillas el valor del atributo `src`.
```js
assert(document.querySelector('img'));
```
-Your `img` element should have a `src` attribute. You have either omitted the attribute or have a typo. Make sure there is a space between the element name and the attribute name.
+Tu elemento `img` debe tener un atributo `src`. Probablemente, no has añadido el atributo o tienes un error tipográfico. Asegúrate de que hay un espacio entre el nombre del elemento y el nombre del atributo.
```js
assert(document.querySelector('img').src);
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
index 03dfb09bfcb..17099e934e3 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
@@ -7,9 +7,9 @@ dashedName: step-11
# --description--
-A link's text must be placed between the opening and closing tags of an anchor (`a`) element.
+El texto de un enlace debe colocarse entre las etiquetas de apertura y cierre de un elemento de anclaje (`a`).
-Here is an example of a link with the text `click here to go to freeCodeCamp.org`:
+Aquí tienes un ejemplo de un enlace con el texto `click here to go to freeCodeCamp.org`:
```html
click here to go to freeCodeCamp.org
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dfa2407b521be39a3de7be1.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dfa2407b521be39a3de7be1.md
index bc340d61d93..7f05cd4cc4d 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dfa2407b521be39a3de7be1.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dfa2407b521be39a3de7be1.md
@@ -7,11 +7,11 @@ dashedName: step-14
# --description--
-To open links in a new tab, you can use the `target` attribute on the anchor (`a`) element.
+Para abrir enlaces en una pestaña nueva, puedes usar el atributo `target` en el elemento ancla (`a`).
-The `target` attribute specifies where to open the linked document. `target="_blank"` opens the linked document in a new tab or window.
+El atributo `target` especifica dónde abrir el elemento enlazado. `target="_blank"` abre el elemento enlazado en una nueva pestaña o ventana.
-Here is the basic syntax for an `a` element with a `target` attribute:
+Esta es la sintáxis básica para un elemento `a` que incluye un atributo `target`:
```html
freeCodeCamp
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804d7.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804d7.md
index f60da2977ff..9288e1567be 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804d7.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804d7.md
@@ -7,15 +7,15 @@ dashedName: step-36
# --description--
-The `action` attribute indicates where form data should be sent.
+El atributo `action` indica dónde se deben enviar los datos del formulario.
-Here is an example of a `form` element with an `action` attribute:
+Aquí tienes un ejemplo de un elemento `form` con un atributo `action`:
```html
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index 7e96df50349..574901fac7c 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. Dies ist nützlich, um etwas über die alltäglichen Aktivitäten von jemandem zu erfahren, was ein gemeinsames Thema für kleine Gespräche ist.
+Let's use `do` to ask about daily routines.
-Hinweis: Wenn du `do` als Hilfsverb in einer Frage verwendest, muss das Hauptverb in seiner Basisform bleiben. Zum Beispiel:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Zum Beispiel:
Aussage: `She works as a Full Stack dev.`
Frage: `Does she work as a Full Stack dev?`
-`work` bleibt `work` und ändert sich nicht in `works`, auch wenn du nach einem Subjekt in der dritten Person Singular fragst wie `he,` `she,` oder `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Erinnere dich, nach `do,` sollte das Hauptverb nicht mit `s.` enden
### --Feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 30866d18ff2..5c9b8867704 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Bevor du gelernt hast, Fragen mit `do,` zu stellen, kannst du das Hilfsverb to auch in negativen Sätzen verwenden. In negativen Sätzen kombinierst du das Hilfsverb `do` (Ich, du, wir, sie) oder `does` (er, sie, es) mit dem Wort `not` und platzierst es direkt vor dem Hauptverb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subjekt + do + not + Hauptverb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subjekt + does + not + Hauptverb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Oft, um praktischer zu sein, ist es üblich, `do not` und `does not` zu `don’t` und `doesn’t` abzukürzen.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Genau wie bei Fragen wird bei der Verwendung von `don't,` das nachfolgende Hauptverb immer in seiner Grundform stehen, egal, über wen du sprichst. Erinnere dich, du benutzt `don't` mit ich, du, wir, und sie. Wenn du über er, sie, oder es redest, wirst du `doesn't,` benutzen, aber mehr dazu später. Genau jetzt konzentrieren wir uns auf die Verwendung von `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Höre dir die Audio an, um die unteren Sätze zu vervollständigen.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## -blanks--
@@ -33,7 +33,15 @@ Höre dir die Audio an, um die unteren Sätze zu vervollständigen.
### --feedback--
-Sophie spricht über das, was sie nicht tut. Das erste Leerzeichen benötigt `don't` um zu zeigen, dass sie die Fotografie nicht als Hobby betrachtet. Das zweite Leerzeichen ist die Basisform des Verbs, das beschreibt, was sie in ihrer Freizeit tut (ohne `don't` weil es eine positive Aussage ist).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --Szene--
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index a16d653311c..cefe7a1c61f 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-Wenn du darüber reden möchtest, was jemand in der Zukunft zu tun hofft, kannst du `want to` benutzen, um einen Wunsch oder eine Absicht auszudrücken. Denk daran, `want to` ändert sich nicht, auch wenn man über andere spricht.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Möchte Tom Sophie Gitarre spielen hören?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --Feedback--
-Aus dem Dialog geht hervor, dass Tom den Wunsch äußert, Sophie spielen zu hören.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ Aus dem Dialog geht hervor, dass Tom den Wunsch äußert, Sophie spielen zu hör
### --feedback--
-`Wanted` ist Vergangenheit, aber Toms Wunsch ist, Sophie in der Gegenwart spielen zu hören.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --blanks--
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index a140dfe36ca..206dab189e2 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Aufgabe 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index 794fc4457ad..fc97735cc15 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 28a19744e11..0b5d34ec12a 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 4f1305ac3fd..ea53f73236b 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Höre dir das Audio an, um die unteren Sätze zu vervollständigen.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index f246b97148a..9a0ab1c7fe0 100644
--- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 1686002066d..00e8f23d25c 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,9 +7,9 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index e68ba396532..040b63726fd 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -1,13 +1,13 @@
---
id: 657ed53c19461d4b95c4757a
-title: Step 2
+title: Passo 2
challengeType: 20
dashedName: step-2
---
# --description--
-You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index bafc0d16102..6bff669cd9e 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,7 +7,7 @@ dashedName: step-4
# --description--
-In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index bd1b81cc11a..656db0072d7 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -1,6 +1,6 @@
---
id: 657f01ae9aea647b27402d3e
-title: Step 10
+title: Passo 10
challengeType: 20
dashedName: step-10
---
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index 5168903a03c..3ae85b35eeb 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,7 @@ dashedName: step-11
# --description--
-With the function complete, you can now use it inside another function.
+With the function complete, you can now use it inside another function.
Create a new function called `main()` with `pass` as the body of the function.
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index cd0c3961ae2..51c2d13ea22 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,7 +7,7 @@ dashedName: step-13
# --description--
-In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index afaab8a276f..54e06855f9a 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -7,7 +7,7 @@ dashedName: step-16
# --description--
-You will need to convert uppercase characters to lowercase and add an underscore before them.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 62edf28daef..3efdcd1ab2e 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -17,7 +17,7 @@ The above uses the variable `i` to iterate over `iterable`. Each elements of the
In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
-Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 445e22198e0..27e26e0af4c 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -19,7 +19,7 @@ You should not have any commented line of code in the `convert_to_snake_case()`
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-
+
assert.equal(function_body.split("#").length - 1, 0);
}
})
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index aa226946029..fc8a0165867 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -48,7 +48,7 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-
+
--fcc-editable-region--
main()
diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index 44f917f2ea5..08bd4ebe1ad 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Ad esempio:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Ad esempio:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index c78744e92a9..2c5bfe0c384 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/japanese/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/japanese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index c5ed9113b1b..745daf2f5dd 100644
--- a/curriculum/challenges/japanese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/japanese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index da7c64651e4..814d77f2ea8 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index c89f9ea92fb..f69ff3df7ef 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index eae6bc055c3..81858ea711c 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index b89550a2b6e..40f184d1589 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index 6b8e8c97b42..e0f41eb2858 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index 2aabf55ca53..a9555943364 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index a3600e28190..b3851d9ff55 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index e4b03bb8324..248902e5f7a 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index 1b31927e0b0..2806683978a 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index 09d17a3a863..b2744f2363d 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index dfc50a9176c..7e89d963584 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index 96ce368dfdd..41e3db9c726 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index 0d8656d5dd0..fb87b05c83e 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index 2208e9cee8d..45ba7005550 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: ステップ 15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index e00cabb03f2..10047b0fe72 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: ステップ 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 4a0da9ae737..54e06855f9a 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: ステップ 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index ff1ff301263..3efdcd1ab2e 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: ステップ 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index 04bf99655ce..a30bf0c9b05 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: ステップ 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index 73963b0ec73..fea2df988fe 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: ステップ 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 26a0e5cced5..27e26e0af4c 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: ステップ 21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index 8f57f5604a6..fc8a0165867 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: ステップ 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index 4d055758685..ccee0672594 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 例えば、次のように記述できます。
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 例えば、次のように記述できます。
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 73a7e4e6974..0fc464851ed 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/korean/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/korean/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 3a78778084c..e67f3a9a8cd 100644
--- a/curriculum/challenges/korean/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/korean/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 29c5ed17c79..00e8f23d25c 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index 76aaee9401d..f742d2c783e 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index df97ce81d0d..4fcd769a2bb 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index 3cff64a584b..6bff669cd9e 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index 9ec8a005e96..a2e70f73492 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index e9a0ec84990..35959690a67 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index 72b2f5dd928..8959a55a4e8 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index c2568eaacd0..45cc6ad2c0a 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index 7c4f0407797..ea8f1bb8fb3 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index c6b3ba9bca8..bd1b81cc11a 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index 518c95dab27..3ae85b35eeb 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index 9a2367edf23..4fe34c9b852 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index 56843f81edb..51c2d13ea22 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index c0b5b1997da..45ba7005550 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: Step 15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index bda1296deb1..10047b0fe72 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: Step 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 0acee19ec87..54e06855f9a 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: Step 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 40d6aa94297..3efdcd1ab2e 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: Step 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index edf2fa3c19b..a30bf0c9b05 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: Step 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index dce8f5f68d8..fea2df988fe 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: Step 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 1ae8c2aecad..27e26e0af4c 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: Step 21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index 921322c2a2d..fc8a0165867 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: Step 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index a62529376fa..9ff9e41fafd 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 예시:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. 예시:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 73a7e4e6974..0fc464851ed 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 1e6b3bfad84..0962048d65b 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 1686002066d..fb99afff4b6 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -1,15 +1,15 @@
---
id: 657e928716b77b2277980276
-title: Step 1
+title: 1° passo
challengeType: 20
dashedName: step-1
---
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index e68ba396532..040b63726fd 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -1,13 +1,13 @@
---
id: 657ed53c19461d4b95c4757a
-title: Step 2
+title: Passo 2
challengeType: 20
dashedName: step-2
---
# --description--
-You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index 4fcd769a2bb..fa537e60a81 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -1,6 +1,6 @@
---
id: 657ee28cefc4945568287673
-title: Step 3
+title: Passo 3
challengeType: 20
dashedName: step-3
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index bafc0d16102..0eec92163c8 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -1,13 +1,13 @@
---
id: 657ef2a86d4e545cec9a85fb
-title: Step 4
+title: Passo 4
challengeType: 20
dashedName: step-4
---
# --description--
-In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index a2e70f73492..0472f4ed384 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -1,6 +1,6 @@
---
id: 657efa642593c5746acc5c81
-title: Step 5
+title: Passo 5
challengeType: 20
dashedName: step-5
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index 35959690a67..18cab865592 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -1,6 +1,6 @@
---
id: 657efce98e958b75df86b305
-title: Step 6
+title: 6° passo
challengeType: 20
dashedName: step-6
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index 8959a55a4e8..ff0531c42c2 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -1,6 +1,6 @@
---
id: 657efdcf7fe23b76c0cff9ec
-title: Step 7
+title: 7° passo
challengeType: 20
dashedName: step-7
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index 45cc6ad2c0a..2aa5731017e 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -1,6 +1,6 @@
---
id: 657effaa2a5e0277d71f9cbe
-title: Step 8
+title: 8° passo
challengeType: 20
dashedName: step-8
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index ea8f1bb8fb3..2da5156958d 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -1,6 +1,6 @@
---
id: 657f0044be09db790b1eb1c5
-title: Step 9
+title: 9° passo
challengeType: 20
dashedName: step-9
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index bd1b81cc11a..656db0072d7 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -1,6 +1,6 @@
---
id: 657f01ae9aea647b27402d3e
-title: Step 10
+title: Passo 10
challengeType: 20
dashedName: step-10
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index 5168903a03c..1522af92602 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -1,13 +1,13 @@
---
id: 657f025ec86c3d7c4177b6be
-title: Step 11
+title: Passo 10
challengeType: 20
dashedName: step-11
---
# --description--
-With the function complete, you can now use it inside another function.
+With the function complete, you can now use it inside another function.
Create a new function called `main()` with `pass` as the body of the function.
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index 4fe34c9b852..ea36cc913c2 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -1,6 +1,6 @@
---
id: 657f0353c9523d7d896873ea
-title: Step 12
+title: Etapa 12
challengeType: 20
dashedName: step-12
---
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index cd0c3961ae2..b295f489fbb 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -1,13 +1,13 @@
---
id: 657f04ed0035f47ed04d0f1f
-title: Step 13
+title: Etapa 13
challengeType: 20
dashedName: step-13
---
# --description--
-In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index afaab8a276f..54e06855f9a 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -7,7 +7,7 @@ dashedName: step-16
# --description--
-You will need to convert uppercase characters to lowercase and add an underscore before them.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 62edf28daef..3efdcd1ab2e 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -17,7 +17,7 @@ The above uses the variable `i` to iterate over `iterable`. Each elements of the
In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
-Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 445e22198e0..27e26e0af4c 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -19,7 +19,7 @@ You should not have any commented line of code in the `convert_to_snake_case()`
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-
+
assert.equal(function_body.split("#").length - 1, 0);
}
})
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index aa226946029..e1ad4336702 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -11,7 +11,7 @@ Finally try out this new implementation by executing the program. Change the inp
If you've done everything correctly, you should see the input string converted into snake case, like before.
-Congratulations! Now your `convert_to_snake_case()` function is ready.
+Parabéns! Now your `convert_to_snake_case()` function is ready.
# --hints--
@@ -48,7 +48,7 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-
+
--fcc-editable-region--
main()
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 31b9cf2df68..19e38e1a67a 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index 5d4aa012e39..c44c816d54f 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Por exemplo:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Por exemplo:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 3f51ce6a51a..11c22eec061 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Ouça o áudio para completar a frase abaixo.
## --frase--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --espaços em branco--
@@ -33,7 +33,15 @@ Ouça o áudio para completar a frase abaixo.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --cena--
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index efadf761225..fe770456f52 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --cena--
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index cad5012d3a6..bdc5248146f 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Tarefa 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index c1763644870..577ec6194bb 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index affc980181d..8cf8e542475 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Ouça o áudio para completar a frase abaixo.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index b8ed3c504dc..b8625ba7cd2 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Ouça o áudio para completar a frase abaixo.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 5ae3b6b17d8..e5f2557b221 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 7cd36bb4312..eba72fd1f93 100644
--- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/swahili/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/swahili/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 3a78778084c..e67f3a9a8cd 100644
--- a/curriculum/challenges/swahili/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/swahili/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index e72734a33b6..7d6a612b398 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-In this project, you are going to learn about list comprehensions in Python by building a program that can take a `camelCase` or `PascalCase` formatted string and convert that to a `snake_case` formatted string.
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-List comprehensions in Python are a concise way to construct a list without using loops or the `.append()` method. Apart from being briefer, list comprehensions often run faster.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Start defining a new function named `convert_to_snake_case()` that accepts a string named `pascal_or_camel_cased_string` as input. For now, add a `pass` statement inside the function.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index 973d82cb2d0..2ea6026c56b 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Now create a new list named `snake_cased_char_list` inside the function. You can use a set of empty square braces to create the new list.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-This list will hold the characters of the string after you have converted them to snake case.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index 856ddd0992f..caf9431c760 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Now that you have an empty list in place, you can start iterating through the input string and start converting each character to snake case.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Use a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char` which is short for character. For now, add a `pass` statement in the loop body.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index 75842963e26..7665d2f8b56 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Uppercase characters in camel case or pascal case indicate the start of new words.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Inside the loop body, use an `if` statement in conjunction with the `.isupper()` string method to check for uppercase characters and move `pass` inside the new `if` statement.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index 8eee1fd3886..d2bf7f27e5d 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Inside the `if` statement body, you need to convert any uppercase character to lowercase and prepend an underscore to this lowercase character.
-Use the `.lower()` string method to convert uppercase characters to lowercase characters. You can then concatenate an underscore to the character using the plus sign.
-
-```python
-'_' + char.lower()
-```
-
-Assign the modified character to a variable named `converted_character` inside the if statement body.
+Use the `.lower()` string method to convert uppercase characters to lowercase characters. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index e6df87d6b85..0ab74136da0 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Still within the `if` statement body, use the `.append()` list method to add the converted character to the list you created earlier.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-The `.append()` method adds a given object to the end of the list you invoke it on.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index 88d5bbd7d13..24fe4f1b437 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,7 +7,9 @@ dashedName: step-7
# --description--
-Add an `else` clause on the same level as the existing `if` statement, inside the `for` loop. Add characters that are already in lowercase to the list of converted characters inside the body of the `else` clause.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index 580b4022df5..5409f7a6f6e 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-By the end of the loop, `snake_cased_char_list` should contain all the converted characters in correct order. Use the `.join()` string method to convert the list of characters into a string.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-This joins the characters from the list to the empty string on which you called the `.join()` method. Save the result in a variable named `snake_cased_string` on the same level as the `snake_cased_char_list` variable.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index 078168e2a55..3cd11bedfd6 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Strings in pascal case start with a capital character. Since you've converted all such characters to lowercase and prepended an underscore to them, chances are, the converted snake case string has a dangling underscode at the start.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-The easiest way to strip such unwanted character is by using the `.strip()` string method and passing an underscore to the method as argument.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Make sure to save the resulting string in a variable named `clean_snake_cased_string` on the same level as the `snake_cased_string` variable.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index e8f5a7e54d6..5c1914cabc1 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Now all that is left to complete this function is to return the `clean_snake_cased_string` from the function. So, go ahead and return the string by adding a `return` statement on the same level as the `clean_snake_cased_string` variable.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index abe66e8a1f8..f37dadeabdc 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,7 +7,9 @@ dashedName: step-11
# --description--
-Since the function is now complete, put it to use inside another function. Create a new function called `main()` on the same level as the `convert_to_snake_case()` function.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index b9bf9e613fe..fb1cfed3696 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,7 +7,9 @@ dashedName: step-12
# --description--
-Inside the `main()` function, replace `pass` with a `convert_to_snake_case()` call. Pass the string `'aLongAndComplexString'` as input to the function and print out the output using the `print()` function.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index 67cf3089f5c..c6239db7d1a 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Before running the `main()` function, you need to make sure that the file is running as a script. Add an `if` statement on the same level as the two existing functions and check whether `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Remember to use `pass` to fill the `if` statement body.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-You should write a `if` clause to check whether `__name__ == '__main__'` evaluates to `True` or not. Don't forget the colon at the end and use `pass` to fill the `if` body.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index c72cbfcf65a..45ba7005550 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: Hatua ya 15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index 6e4c11031a4..10047b0fe72 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: Hatua ya 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Start by replacing `pass` with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list but do not put anything between the braces.
-
-Put the braces in separate lines so that you have some space between them, where you can work on the code for the list comprehension.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index e9fa553777e..54e06855f9a 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: Hatua ya 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-Inside the space you left between the pair of square braces, you can describe the value that you would like to include in the list based on a given condition.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python will interpret this expression as "append `'_' + char.lower()` to the list if `char` is in uppercase" and this will convert the case for the capital letters in the input string.
-
-Start by adding this line within the square braces.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-You should add `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 0775d8daa20..3efdcd1ab2e 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: Hatua ya 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-When you start a list comprehension with an `if` statement like this, Python requires you to also add an `else` clause to the expression.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python will interpret this updated expression as "append `'_' + char.lower()` to the list if `char` is in uppercase, append `char` as is otherwise" and this covers the case for both the capital and lowercase letters in the input string.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Add an `else` clause inside the pair of square braces.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-You should add `else char` after `'_' + char.lower() if char.isupper()` within the square braces of `snake_cased_char_list`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index df05f3b4549..a30bf0c9b05 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: Hatua ya 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-The final piece of the puzzle is the input string itself. The list comprehension needs to know about the object it'll iterate upon.
-
-In this case, you need to iterate upon all the characters of the string.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-And there you have it. These three lines of code do the same task as the `for` loop you worked on previously while being cleaner and somewhat faster.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Add this last line of code to iterate over the characters of the string in your list comprehension and make sure that you're writing it within the pair of square braces.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-You should add `for char in pascal_or_camel_cased_string` after `else char` within the square braces of `snake_cased_char_list`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index 7a7eb4a2276..fea2df988fe 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: Hatua ya 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-You will still need to join the list elements into a string, strip off any dangling underscores and return the string. Even though you can do that like you did earlier, let's see a shorter alternative.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-This single line of code will join the list of characters into a string, strip off any dangling underscores, and return the resulting string. Add this line on the same level as the `snake_cased_char_list` variable and inside the `convert_to_snake_case()` function.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-You should return `''.join(snake_cased_char_list).strip('_')` at the end of `convert_to_snake_case()` function.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index 66dd17872f1..27e26e0af4c 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: Hatua ya 21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index 4c522257f74..fc8a0165867 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: Hatua ya 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
index 9b9e4118afc..77a145f2c7f 100644
--- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
+++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-tree-traversal-by-building-a-binary-search-tree/65c4eb814cc977c95cd7df0e.md
@@ -11,7 +11,7 @@ In this project, you are going to create a Binary Search Tree (BST). A BST is a
This is what a Binary Search Tree looks like:
-
+
Begin by defining an empty `TreeNode` class. The `TreeNode` class represents a node in a binary search tree. Use the `pass` keyword to fill the class body and avoid an error.
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index 509076dea98..8f68d929b97 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Now that you know how to use `do` to form questions about hobbies, let's use `do` to ask about daily routines. This is useful for finding out about someone's everyday activities, which is a common topic of small talk.
+Let's use `do` to ask about daily routines.
-Note: When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Kwa mfano:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Kwa mfano:
Statement: `She works as a Full Stack dev.`
Question: `Does she work as a Full Stack dev?`
-`work` stays as `work` and does not change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ Remember, after `do,` the main verb should not end in `s.`
### --feedback--
-The word order is incorrect in this option; `do` should be at the beginning
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index 37f6db44088..5f4782ab331 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Before you learned to ask questions using `do,` you can also use the auxiliary verb to in negative sentences. In negative sentences you combine the auxiliary verb `do` (I, you, we, they) or `does` (he, she it) with the word `not` and place it right before the main verb:
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` - (Subject + do + not + main verb)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` - (Subject + does + not + main verb)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Often, to be more practical it is common to abbreviate `do not` and `does not` to `don’t` and `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Just like with questions, when you use `don't,` the main verb that comes after it will always be in its base form, no matter who you're talking about. Remember, you use `don't` with I, you, we, and they. When you talk about he, she, or it, you will use `doesn't,` but more on that later. Right now, let's focus on using `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ Listen to the audio to complete the sentence below.
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about what she does not do. The first blank needs `don't` to show that she does not consider photography a hobby. The second blank is the base form of the verb that describes what she does in her free time (without `don't` because it's a positive statement).
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index e1d7910bb3d..14a1bfb982c 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention. Remember that `want to` doesn't change even when talking about others.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Does Tom want to hear Sophie play the guitar?
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-The dialogue suggests Tom expresses a desire to hear Sophie play.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ The dialogue suggests Tom expresses a desire to hear Sophie play.
### --feedback--
-`Wanted` is past tense, but Tom's desire to hear Sophie play is in the present.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index fa5b427fdc5..857d52d4c51 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Task 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index bfed3014cbb..b1f22a566ec 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` are regular and repeated ways in which something happens or is done. In data, patterns can show trends or behaviors.
-For example, a pattern in customer data might be that more people buy ice cream on hot days. This is a `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. This is a `trend pattern`.
There are also `cycle patterns`, like a coffee shop selling more coffee in the morning.
-Recognizing patterns helps businesses understand their customers better.
-
`Patterns` can be found in numbers, like sales increasing every month, or in behaviors, like customers preferring to shop online.
# --fillInTheBlank--
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 94db9490bf2..2f3adf13566 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is describing what he does next in his routine after the first activity he mentioned.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 73a7e4e6974..0fc464851ed 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ Listen to the audio to complete the sentence below.
### --feedback--
-Sophie is talking about how setting deadlines helps him maintain his progress towards his goals.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 4c19b259117..dc7fe88db80 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,7 +7,13 @@ dashedName: task-31
# --description--
-The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`. For instance, you might ask `Would you like some coffee?` when offering coffee to a guest. If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action. For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
+The phrase `would you like` is a polite way to offer something or ask someone if they want something. When offering something, you can specify it directly after the expression `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
@@ -33,7 +39,7 @@ This sentence is not correct. A correct usage would be `Would you like me to mak
### --feedback--
-This sentence is incorrect because `likes` should not be plural. The correct form is `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index 8d736f77387..370f8cd55ae 100644
--- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ For instance, if your friend asks you, `Are you coming to the movie tonight?`, y
### --feedback--
-This word is part of a phrase used for expressing strong confirmation or agreement. The initial letter should be capitalized.
+This word is a pronoun. The initial letter should be capitalized.
---
@@ -34,7 +34,7 @@ This word is part of a phrase used for expressing strong confirmation or agreeme
### --feedback--
-This word follows the previous one to form a common phrase indicating strong affirmation.
+Forms a common phrase indicating a strong affirmation.
# --scene--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-projects/issue-tracker.md
index 33ce9677f1b..6fdd57df585 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-projects/issue-tracker.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-projects/issue-tracker.md
@@ -205,6 +205,11 @@ async (getUserInput) => {
const getMultiple = await $.get(url + '?created_by=Alice&assigned_to=Bob');
assert.isArray(getMultiple);
assert.lengthOf(getMultiple, 2);
+ const copyId = getMultiple[0]._id;
+ const getById = await $.get(url + `?_id=${copyId}`);
+ assert.isArray(getById);
+ assert.lengthOf(getById, 1);
+ assert.equal(getById[0]._id, copyId, 'should be able to query a document by _id')
} catch (err) {
throw new Error(err.responseText || err.message);
}
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65f569725359e10d345bc52a.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65f569725359e10d345bc52a.md
index abf4a3fbf33..417adb8c40e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65f569725359e10d345bc52a.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65f569725359e10d345bc52a.md
@@ -28,7 +28,7 @@ Use `import math` to import the `math` module.
({test: () => assert(runPython(`_Node(_code).has_import('import math')`))})
```
-You should have a `GRAVITATIONAL_ACCELERATION` variable with value of `9.81`.
+Ви повинні мати змінну `GRAVITATIONAL_ACCELERATION` зі значенням `9.81`.
```js
({test: () => runPython(`
@@ -37,7 +37,7 @@ assert _Node(_code).find_variable("GRAVITATIONAL_ACCELERATION").is_equivalent('G
`)})
```
-You should have a `PROJECTILE` variable with value of `"∙"`.
+Ви повинні мати змінну `PROJECTILE` зі значенням `"∙"`.
```js
({test: () => runPython(`
@@ -46,7 +46,7 @@ assert _Node(_code).find_variable("PROJECTILE").is_equivalent('PROJECTILE = "∙
`)})
```
-You should have a `x_axis_tick` variable with value of `"T"`.
+Ви повинні мати змінну `x_axis_tick` зі значенням `"T"`.
```js
({test: () => runPython(`
@@ -55,7 +55,7 @@ assert _Node(_code).find_variable("x_axis_tick").is_equivalent('x_axis_tick = "T
`)})
```
-You should have a `y_axis_tick` variable with value of `"⊣"`.
+Ви повинні мати змінну `y_axis_tick` зі значенням `"⊣"`.
```js
({test: () => runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65fd4b3bedee044b4b957d33.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65fd4b3bedee044b4b957d33.md
index db286166f19..d62cf8c8903 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65fd4b3bedee044b4b957d33.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/65fd4b3bedee044b4b957d33.md
@@ -22,7 +22,7 @@ You should use `class Projectile:` to create the class.
```
-You should have an `__init__` method inside the `Projectile` class.
+Ви повинні мати метод `__init__` в межах класу `Projectile`.
```js
({test: () => assert(runPython(`_Node(_code).find_class("Projectile").find_body().has_function("__init__")`))})
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660400f02cf3a76795b82d4e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660400f02cf3a76795b82d4e.md
index 8c5270d99f5..a156e129216 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660400f02cf3a76795b82d4e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660400f02cf3a76795b82d4e.md
@@ -38,7 +38,7 @@ The `__calculate_displacement` method should have only the `self` argument.
({test: () => assert(runPython(`_Node(_code).find_class("Projectile").find_function("__calculate_displacement").has_args('self')`))})
```
-The `__calculate_displacement` method should return the correct value.
+Метод `__calculate_displacement` має повернути правильне значення.
```js
({test: () => assert(runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660fcf3e1b9bb056b2edb567.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660fcf3e1b9bb056b2edb567.md
index eefd3dc7de8..14954c55828 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660fcf3e1b9bb056b2edb567.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/660fcf3e1b9bb056b2edb567.md
@@ -29,13 +29,13 @@ When you are ready you can `print(ball)` to test your function.
# --hints--
-You should have a `ball` variable.
+Ви повинні мати змінну `ball`.
```js
({test: () => assert(runPython(`_Node(_code).has_variable('ball')`))})
```
-The `ball` variable should have a value of `Projectile(10, 3, 45)`.
+Змінна `ball` повинна мати значення `Projectile(10, 3, 45)`.
```js
({test: () => assert(runPython(`_Node(_code).find_variable('ball').is_equivalent('ball = Projectile(10, 3, 45)')`))})
@@ -72,7 +72,7 @@ displacement: 15.9 m
"""`))})
```
-You should have a `print(ball)` call.
+Ви повинні мати виклик `print(ball)`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6616ec0bf9ee8548ce6b0f08.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6616ec0bf9ee8548ce6b0f08.md
index ccfbf71ff43..4e90468563c 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6616ec0bf9ee8548ce6b0f08.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6616ec0bf9ee8548ce6b0f08.md
@@ -21,7 +21,7 @@ If you want to test the method, from outside of class, you can call `ball._Proje
# --hints--
-Your `Projectile` class should have a method named `__calculate_y_coordinate`.
+Клас `Projectile` повинен мати метод під назвою `__calculate_y_coordinate`.
```js
({test: () => {assert(runPython(`_Node(_code).find_class('Projectile').has_function('__calculate_y_coordinate')`))}})
@@ -33,7 +33,7 @@ The `__calculate_y_coordinate` method should have `self, x` as arguments.
({test: () => {assert(runPython(`_Node(_code).find_class('Projectile').find_function('__calculate_y_coordinate').has_args('self, x')`))}})
```
-The method should return the correct value. For `Projectile(12, 12, 12)`, given the 4 $x$ coordinates of 0, 1, 2 and 3, the y coordinate should be approximately 12, 12.18, 12.28, 12.32.
+Метод має повернути правильне значення. For `Projectile(12, 12, 12)`, given the 4 $x$ coordinates of 0, 1, 2 and 3, the y coordinate should be approximately 12, 12.18, 12.28, 12.32.
```js
({test: () => {
@@ -44,7 +44,7 @@ The method should return the correct value. For `Projectile(12, 12, 12)`, given
}})
```
-The method should return the correct value. For `Projectile(45, 12, 22)`, given the $x$ coordinates of 6, 9, 10 and 12 the y coordinate should be approximately 14.32, 15.41, 15.76, 16.44.
+Метод має повернути правильне значення. For `Projectile(45, 12, 22)`, given the $x$ coordinates of 6, 9, 10 and 12 the y coordinate should be approximately 14.32, 15.41, 15.76, 16.44.
```js
({test: () => {
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662f9f65c50bd21d05ffdee9.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662f9f65c50bd21d05ffdee9.md
index 4cff93b9e8f..d05c18e2e89 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662f9f65c50bd21d05ffdee9.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662f9f65c50bd21d05ffdee9.md
@@ -15,7 +15,7 @@ You can use `math.ceil()` to round up a number to the smallest integer greater t
# --hints--
-You should define a `calculate_all_coordinates` method with a single argument, `self` .
+Визначте метод `calculate_all_coordinates` з єдиним аргументом `self` .
```js
({test: () => assert(runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fa453ec8033322b3ab2e3.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fa453ec8033322b3ab2e3.md
index 4bb9cd3ad62..831471d3196 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fa453ec8033322b3ab2e3.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fa453ec8033322b3ab2e3.md
@@ -32,7 +32,7 @@ Create a getter named `speed` and make it return the value of the private attrib
# --hints--
-You should define a `speed` method.
+Визначте метод `speed`.
```js
({test: () => assert(runPython(`
@@ -40,7 +40,7 @@ _Node(_code).find_class('Projectile').has_function('speed')
`))})
```
-Your `speed` method should have a single parameter, `self`.
+Метод `speed` повинен мати параметр `self`.
```js
({test: () => assert(runPython(`
@@ -48,7 +48,7 @@ _Node(_code).find_class('Projectile').find_function('speed').has_args('self')
`))})
```
-Your `speed` method should have a `@property` decorator.
+Метод `speed` повинен мати декоратор `@property`.
```js
({test: () => assert(runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fc35902038376c7a00b3c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fc35902038376c7a00b3c.md
index 2b6b033fce5..89220c61a4b 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fc35902038376c7a00b3c.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/662fc35902038376c7a00b3c.md
@@ -30,7 +30,7 @@ For this step you will have to write the setters for the three private attribute
# --hints--
-You should define a new `speed` method.
+Визначте новий метод `speed`.
```js
({test: () => assert(runPython(`
@@ -38,7 +38,7 @@ len(_Node(_code).find_class('Projectile').find_functions('speed')) == 2
`))})
```
-Your new `speed` method should have a `@speed.setter` decorator.
+Новий метод `speed` повинен мати декоратор `@speed.setter`.
```js
({test: () => assert(runPython(`
@@ -46,7 +46,7 @@ _Node(_code).find_class('Projectile').find_functions('speed')[1].has_decorators(
`))})
```
-Your new `speed` method should set the value of the private `__speed` property.
+Новий метод `speed` має встановити значення приватної властивості `__speed`.
```js
({test: () => assert(runPython(`
@@ -56,7 +56,7 @@ a.speed == 33
`))})
```
-You should define a new `height` method.
+Визначте новий метод `height`.
```js
({test: () => assert(runPython(`
@@ -64,7 +64,7 @@ len(_Node(_code).find_class('Projectile').find_functions('height')) == 2
`))})
```
-Your new `height` method should have a `@height.setter` decorator.
+Новий метод `height` повинен мати декоратор `@height.setter`.
```js
({test: () => assert(runPython(`
@@ -72,7 +72,7 @@ _Node(_code).find_class('Projectile').find_functions('height')[1].has_decorators
`))})
```
-Your new `height` method should set the value of the private `__height` property.
+Новий метод `height` має встановити значення приватної властивості `__height`.
```js
({test: () => assert(runPython(`
@@ -82,7 +82,7 @@ a.height == 44
`))})
```
-You should define a new `angle` method.
+Визначте новий метод `angle`.
```js
({test: () => assert(runPython(`
@@ -90,7 +90,7 @@ len(_Node(_code).find_class('Projectile').find_functions('angle')) == 2
`))})
```
-Your new `angle` method should have a `@angle.setter` decorator.
+Новий метод `angle` повинен мати декоратор `@angle.setter`.
```js
({test: () => assert(runPython(`
@@ -98,7 +98,7 @@ _Node(_code).find_class('Projectile').find_functions('angle')[1].has_decorators(
`))})
```
-Your `angle` method should set the value of the private `__angle` property.
+Метод `angle` має встановити значення приватної властивості `__angle`.
```js
({test: () => assert(runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66335223f3e2a31d62d84367.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66335223f3e2a31d62d84367.md
index 767c9c4f043..505331654f3 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66335223f3e2a31d62d84367.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66335223f3e2a31d62d84367.md
@@ -25,7 +25,7 @@ You should create a new `Graph` class.
})
```
-You should have the `__slots__` variable inside the class.
+Ви повинні мати змінну `__slots__` в межах класу.
```js
({
@@ -48,7 +48,7 @@ The `__slots__` variable should have a value of `('__coordinates')` or `['__coor
})
```
-You should have an `__init__` method.
+Ви повинні мати метод `__init__`.
```js
({
@@ -72,7 +72,7 @@ The `__init__` method should instantiate the `__coordinates` private property wi
})
```
-You should have a `__repr__` method.
+Ви повинні мати метод `__repr__`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/663353465bfb14259717da93.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/663353465bfb14259717da93.md
index afe4a4b5005..621cb83ceb1 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/663353465bfb14259717da93.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/663353465bfb14259717da93.md
@@ -32,7 +32,7 @@ The table should start with a newline character and end with a newline character
# --hints--
-You should have a `create_coordinates_table()` method.
+Ви повинні мати метод `create_coordinates_table()`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6633b4d3271d5b3aea1c1195.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6633b4d3271d5b3aea1c1195.md
index b0ba04423b9..4f9623fd026 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6633b4d3271d5b3aea1c1195.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6633b4d3271d5b3aea1c1195.md
@@ -13,7 +13,7 @@ As the first step of this new function, make a local copy of the coordinates but
# --hints--
-You should define a method named `create_trajectory`.
+Визначте метод під назвою `create_trajectory`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6634fa2417d7194b0c9425f9.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6634fa2417d7194b0c9425f9.md
index 7a5dc5ce39e..4e43149eb59 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6634fa2417d7194b0c9425f9.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/6634fa2417d7194b0c9425f9.md
@@ -10,7 +10,7 @@ dashedName: step-9
Now create the two getters for `__height` and `__angle`. Remember that for the angle, the value is given to the class in degrees, but is saved internally in radians, so have the getter return the degrees value. You can use `math.degrees`, and the `round` function for this.
# --hints--
-You should define a `height` method.
+Визначте метод `height`.
```js
({test: () => assert(runPython(`
@@ -18,7 +18,7 @@ _Node(_code).find_class('Projectile').has_function('height')
`))})
```
-Your `height` method should have a single parameter, `self`.
+Метод `height` повинен мати параметр `self`.
```js
({test: () => assert(runPython(`
@@ -26,7 +26,7 @@ _Node(_code).find_class('Projectile').find_function('height').has_args('self')
`))})
```
-Your `height` method should have a `@property` decorator.
+Метод `height` повинен мати декоратор `@property`.
```js
({test: () => assert(runPython(`
@@ -43,7 +43,7 @@ a.height == 23
`))})
```
-You should define an `angle` method.
+Визначте метод `angle`.
```js
({test: () => assert(runPython(`
@@ -51,7 +51,7 @@ _Node(_code).find_class('Projectile').has_function('angle')
`))})
```
-Your `angle` method should have a `@property` decorator.
+Метод `angle` повинен мати декоратор `@property`.
```js
({test: () => assert(runPython(`
@@ -59,7 +59,7 @@ _Node(_code).find_class('Projectile').find_function('angle').has_decorators('pro
`))})
```
-Your `angle` method should have a single parameter, `self`.
+Метод `angle` повинен мати параметр `self`.
```js
({test: () => assert(runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475d40dd42fb614f14fd03.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475d40dd42fb614f14fd03.md
index b9ea0fe21ec..b06ec6f33b1 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475d40dd42fb614f14fd03.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475d40dd42fb614f14fd03.md
@@ -27,7 +27,7 @@ Save this list of lists in a variable named `matrix_list` and return this value.
# --hints--
-The method should return the correct value.
+Метод має повернути правильне значення.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475e40f3891c645d50135e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475e40f3891c645d50135e.md
index 70fb15ef003..1619ced0ce2 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475e40f3891c645d50135e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475e40f3891c645d50135e.md
@@ -23,7 +23,7 @@ dashedName: step-19
# --hints--
-The method should return the correct value.
+Метод має повернути правильне значення.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475f7b91d7c6681987739d.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475f7b91d7c6681987739d.md
index 49dd62d1c58..ec5d3b3c163 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475f7b91d7c6681987739d.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66475f7b91d7c6681987739d.md
@@ -25,7 +25,7 @@ It should look like this:
# --hints--
-The method should return the correct value.
+Метод має повернути правильне значення.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/665d949e628d9f3fe305b6e8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/665d949e628d9f3fe305b6e8.md
index a8c7d3d2998..9c20531ac2c 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/665d949e628d9f3fe305b6e8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/665d949e628d9f3fe305b6e8.md
@@ -24,7 +24,7 @@ assert not any(p.is_equivalent('print(graph.create_trajectory())') for p in prnt
})
```
-You should have a loop that iterates over `graph.create_trajectory()`.
+Ви повинні мати цикл, який ітерує над `graph.create_trajectory()`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66601c3c460ee12fbd669d6a.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66601c3c460ee12fbd669d6a.md
index 81d98580971..e3aeb459039 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66601c3c460ee12fbd669d6a.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-encapsulation-by-building-a-projectile-trajectory-calculator/66601c3c460ee12fbd669d6a.md
@@ -23,7 +23,7 @@ assert not _Node(_code).find_for_loops(), "loop still present"
})
```
-You should have `print(graph.create_trajectory())`.
+Ви повинні мати `print(graph.create_trajectory())`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
index 75e70da943c..e7edce32382 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657e928716b77b2277980276.md
@@ -7,11 +7,11 @@ dashedName: step-1
# --description--
-У цьому проєкті ви дізнаєтесь про розуміння списків у Python, створивши програму, яка приймає рядок у верблюдячомуРегістрі (`camelCase`) або РегістріПаскаля (`PascalCase`) та перетворює його в зміїний_регістр (`snake_case`).
+In this project, you are going to learn about list comprehensions in Python by building a program that converts a `camelCase` or `PascalCase` formatted string into a `snake_case` formatted string.
-Розуміння списків у Python — це стислий спосіб створити список без використання циклів або методу `.append()`. Такий спосіб не лише стислий, але й часто виконується швидше.
+List comprehensions in Python offer a concise way of constructing lists without using loops or the `.append()` method, often resulting in a briefer and faster execution.
-Для початку визначте нову функцію під назвою `convert_to_snake_case()`, яка приймає рядок під назвою `pascal_or_camel_cased_string` як вхідні дані. Наразі додайте інструкцію `pass` до функції.
+To begin, define a new function named `convert_to_snake_case()` that takes `pascal_or_camel_cased_string` as input. Within the function body, include a `pass` statement to temporarily fill the function body.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
index 7af486473f7..ac699d68bf7 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ed53c19461d4b95c4757a.md
@@ -7,9 +7,9 @@ dashedName: step-2
# --description--
-Тепер створіть новий список під назвою `snake_cased_char_list` у функції. Використайте пару порожніх квадратних дужок, щоб створити новий список.
+You need to add an empty list that will hold the characters of the string after you have converted them to snake case.
-Цей список міститиме символи рядка після того, як ви перетворили їх в зміїний регістр.
+Inside the function, replace the `pass` statement by creating an empty list named `snake_cased_char_list`.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
index c8943b98151..5f4d8f4bc9e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ee28cefc4945568287673.md
@@ -7,9 +7,9 @@ dashedName: step-3
# --description--
-Тепер ви маєте порожній список, тому можете почати перебирати вхідний рядок та перетворювати кожен символ в зміїний регістр.
+With the empty list in place, now you can start iterating through the input string and convert it into snake case.
-Використайте цикл `for`, щоб ітерувати над `pascal_or_camel_cased_string`. Переконайтесь, що цільова змінна має назву `char`, яка виступає скороченням від character (укр. символ). Наразі додайте інструкцію `pass` до тіла циклу.
+Inside the function, below the list you just created, add a `for` loop to iterate through the `pascal_or_camel_cased_string`. Make sure to name the target variable `char`. For now, add a `pass` statement as a placeholder in the loop body.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
index ddbe0f1060f..9686e632547 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657ef2a86d4e545cec9a85fb.md
@@ -7,9 +7,11 @@ dashedName: step-4
# --description--
-Великі літери у верблюдячому регістрі чи регістрі Паскаля вказують на початок нових слів.
+In both camel case and pascal case, uppercase characters mark the beginning of new words. To convert the input string to snake case, you will need to check if the characters in the input string are uppercase.
-Використайте інструкцію `if` разом з методом рядка `.isupper()` в тілі циклу, щоб знайти символи у верхньому регістрі та перемістіть `pass` до нової інструкції `if`.
+You can use the `.isupper()` string method to check if a character is uppercase. This method returns `True` if the character is uppercase and `False` if it is not.
+
+Inside the `for` loop, add an `if` statement to check if the current character is uppercase. Move the `pass` statement inside the new `if` statement.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
index 02ae4559c35..5afa3cd0b66 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efa642593c5746acc5c81.md
@@ -9,13 +9,7 @@ dashedName: step-5
Перетворіть будь-який символ у верхньому регістрі в тілі інструкції `if` на нижній регістр та додайте перед ним знак підкреслення.
-Використайте метод рядка `.lower()`, щоб перетворити верхній регістр символа в нижній. Потім ви можете додати знак підкреслення за допомогою знака плюс.
-
-```python
-'_' + char.lower()
-```
-
-Призначте змінений символ до змінної під назвою `converted_character` в межах тіла інструкції `if`.
+Використайте метод рядка `.lower()`, щоб перетворити верхній регістр символа в нижній. Then, prepend an underscore to the character. Assign the results to a variable named `converted_character`.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
index d13a9a77091..b8503775dc5 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efce98e958b75df86b305.md
@@ -7,13 +7,11 @@ dashedName: step-6
# --description--
-Використайте метод списку `.append()` так само в межах тіла інструкції `if`, щоб додати змінений символ до списку, який ви створили раніше.
+Within the `if` statement body, you are going to add the converted character to the list you created earlier.
-```py
-snake_cased_char_list.append(converted_character)
-```
+For this, the `.append()` method will be used. This method adds a given object to the end of the list it is invoked on.
-Метод `.append()` додає наданий об’єкт в кінець списку, на якому його викликають.
+Use the `.append()` method on the `snake_cased_char_list` to add the `converted_character` to the list.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
index f44cbc8ad6a..54d2ba76ce8 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657efdcf7fe23b76c0cff9ec.md
@@ -7,11 +7,13 @@ dashedName: step-7
# --description--
-Додайте умову `else` до циклу `for` на тому ж рівні, що й наявна інструкція `if`. Додайте символи, які вже в нижньому регістрі, до списку змінених символів у межах тіла умови `else`.
+You need to handle the characters that are already in lowercase by adding them to the list of converted characters.
+
+Right after the `if` statement within the `for` loop, add an `else` clause and use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
# --hints--
-Додайте умову `else` в межах циклу `for`. Не забудьте двокрапку вкінці.
+You should add an `else` clause inside the `for` loop. Don't forget the colon at the end.
```js
({
@@ -25,7 +27,7 @@ dashedName: step-7
})
```
-Використайте метод `.append()`, щоб додати `char` до змінної `snake_cased_char_list`.
+You should use the `.append()` method to add `char` to the `snake_cased_char_list` variable.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
index 456a87a6923..7bca5b26953 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657effaa2a5e0277d71f9cbe.md
@@ -7,13 +7,18 @@ dashedName: step-8
# --description--
-Під кінець циклу, `snake_cased_char_list` має містити всі перетворені символи в правильному порядку. Використайте метод рядка `.join()`, щоб перетворити список символів в рядок.
+By this point, the variable `snake_cased_char_list` holds the list of converted characters. To combine these characters into a single string, you can utilize the `.join()` method.
+
+The `join` method works by concatenating each element of a list into a string, separated by a designated string, known as the separator.
```py
-''.join(snake_cased_char_list)
+result_string = ''.join(characters)
```
-Таким чином символи зі списку приєднуються до порожнього рядка, на якому викликано метод `.join()`. Збережіть результат в змінній під назвою `snake_cased_string` на тому ж рівні, що й змінна `snake_cased_char_list`.
+The example above joins together the elements of the `characters` list into a single string where each element is concatenated together using an empty string as the separator.
+
+Now, right after the `for` loop, use the `.join()` method to join the elements in `snake_cased_char_list` using an empty string as the separator. Assign the result to a new variable named `snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
index f035a5252da..7da147dc265 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0044be09db790b1eb1c5.md
@@ -7,15 +7,19 @@ dashedName: step-9
# --description--
-Рядки в регістрі Паскаля починаються з великої літери. Оскільки ви змінили регістр всіх таких символів на нижній і поставили перед ними підкреслення, є ймовірність, що перетворений рядок в зміїному регістрі має підкреслення напочатку.
+In pascal case, strings begin with a capital letter. After converting all the characters to lowercase and adding an underscore to them, there's a chance of having an extra underscore at the start of your string.
-Найпростіший спосіб видалити непотрібний символ — використати метод рядка `.strip()` та передати знак підкреслення як аргумент.
+The easiest way to fix this is by using the `.strip()` string method, which removes from a string any leading or trailing characters among a set of characters passed as its argument. For example:
```py
-snake_cased_string.strip('_')
+original_string = "_example_string_"
+
+clean_string = original_string.strip('_')
```
-Переконайтесь, що зберегли рядок в змінній під назвою `clean_snake_cased_string` на тому ж рівні, що й змінна `snake_cased_string`.
+The `strip()` method is applied to `original_string`. This removes any leading and trailing underscore. The result of the example above would be the string `'example_string'`.
+
+Declare a new variable named `clean_snake_cased_string` and assign it the result of the `.strip()` method applied to `snake_cased_string` , passing `'_'` as the argument to the method.
# --hints--
@@ -48,6 +52,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
snake_cased_char_list.append(char)
--fcc-editable-region--
snake_cased_string = ''.join(snake_cased_char_list)
-
--fcc-editable-region--
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
index 995f52d8a35..8a0f38c80ab 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f01ae9aea647b27402d3e.md
@@ -7,7 +7,10 @@ dashedName: step-10
# --description--
-Щоб завершити цю функцію, залишилось лише повернути `clean_snake_cased_string` з функції. Отож, поверніть рядок, додавши інструкцію `return` на тому ж рівні, що й змінна `clean_snake_cased_string`.
+To wrap up the function, return the `clean_snake_cased_string`. This will complete the function and allow you to use it to convert strings from pascal or camel case to snake case.
+
+Add a `return` statement at the end of the function to return the `clean_snake_cased_string`.
+
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
index d79c75953ea..c7e32ee5ed5 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f025ec86c3d7c4177b6be.md
@@ -7,11 +7,13 @@ dashedName: step-11
# --description--
-Оскільки тепер функція завершена, застосуйте її в межах іншої функції. Створіть нову функцію під назвою `main()` на тому ж рівні, що й функція `convert_to_snake_case()`.
+With the function complete, you can now use it inside another function.
+
+Create a new function called `main()` with `pass` as the body of the function.
# --hints--
-Визначте нову функцію під назвою `main()`. Не забудьте двокрапку вкінці та використайте `pass`, щоб заповнити тіло функції.
+You should define a new function named `main()`. Don't forget the colon at the end and use `pass` to fill the function body.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
index f4296e904e3..e0e6f9483bd 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f0353c9523d7d896873ea.md
@@ -7,11 +7,13 @@ dashedName: step-12
# --description--
-Замініть `pass` на виклик `convert_to_snake_case()` в межах функції `main()`. Передайте рядок `'aLongAndComplexString'` як вхідні дані до функції та надрукуйте результат за допомогою функції `print()`.
+Inside the `main()` function, replace the `pass` statement, with a call to the `convert_to_snake_case()` function, passing the string `'aLongAndComplexString'` as input.
+
+To display the output, pass the function call as the argument to the `print()` function.
# --hints--
-Викличте `convert_to_snake_case()` в межах функції `main()` та передайте `'aLongAndComplexString'` як вхідні дані до функції.
+You should call `convert_to_snake_case()` inside the `main()` function and pass `'aLongAndComplexString'` as input to the function.
```js
({
@@ -25,7 +27,7 @@ dashedName: step-12
})
```
-Функція `main` не повинна містити `pass`.
+You should not have `pass` in your `main` function.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
index 623b96465b4..0eabbf6029b 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f04ed0035f47ed04d0f1f.md
@@ -7,21 +7,22 @@ dashedName: step-13
# --description--
-Перш ніж запускати функцію `main()`, вам потрібно переконатися, що файл працює як сценарій. Додайте інструкцію `if` на тому ж рівні, що й дві наявні функції, та перевірте, чи `__name__ == '__main__'`.
+In order to display the output of the `convert_to_snake_case()` function, you need to call the `main()` function.
-Не забудьте використати `pass`, щоб заповнити тіло інструкції `if`.
+At the same level as the two existing functions, add a call to the `main()` function. You should see the given camel or pascal cased string converted to snake case upon execution.
# --hints--
-Напишіть умову `if`, щоб перевірити, чи `__name__ == '__main__'` оцінюється як `True`. Не забудьте двокрапку вкінці та використайте `pass`, щоб заповнити тіло `if`.
+You should add a call to the `main()` function.
```js
({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- assert.match(transformedCode, /\nif\s+__name__\s*==\s*("|')__main__\1\s*:/);
- }
-})
+ test: () => {
+ const pythonCode = `_Node(_code.replace('\\\\r', '')).has_call("main()")`;
+ const result = runPython(pythonCode);
+ assert(result);
+ }
+});
```
# --seed--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
index 4c4ec04b50d..cdffdc57e85 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f425dbab54e11993c80f0.md
@@ -1,6 +1,6 @@
---
id: 657f425dbab54e11993c80f0
-title: Крок 15
+title: Step 14
challengeType: 20
dashedName: step-14
---
@@ -51,7 +51,6 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
index 48f7018a777..6e1c7c81f1f 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4345abe7f2161f99f1ad.md
@@ -1,15 +1,13 @@
---
id: 657f4345abe7f2161f99f1ad
-title: Крок 16
+title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
-Для початку замініть `pass` на змінну `snake_cased_char_list` та призначте до неї порожній список. Використайте квадратні дужки, щоб створити список, але не розміщуйте нічого між дужками.
-
-Розмістіть дужки в окремих рядках, щоб між ними залишався простір, де ви зможете працювати над кодом для розуміння списків.
+Replace the `pass` keyword with the variable `snake_cased_char_list` and assign it an empty list. Use the square brace notation to create the list.
# --hints--
@@ -53,6 +51,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
index 5c655763219..54e06855f9a 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f43d341a0dd17120cdb08.md
@@ -1,34 +1,28 @@
---
id: 657f43d341a0dd17120cdb08
-title: Крок 17
+title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
-В межах місця, яке ви залишили між парою квадратних дужок, можна описати значення, яке ви б хотіли додати до списку на основі наданої умови.
+You will need to convert uppercase characters to lowercase and add an underscore before them.
-```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-]
-```
+Before proceeding to work on the list comprehension, you're going to give your function a return value. In this way you'll be able to check the output.
-Python інтерпретує цей вираз як «додати `'_' + char.lower()` до списку, якщо `char` у верхньому регістрі», що змінить регістр великих літер у вхідному рядку.
-
-Для початку додайте цей рядок між квадратними дужками.
+Use the `return` statement to return the list `snake_cased_char_list` from your function.
# --hints--
-Додайте `'_' + char.lower() if char.isupper()` до квадратних дужок `snake_cased_char_list`.
+You should return the `snake_cased_char_list` list. Ensure the indentation is set correctly.
```js
const transformedCode = code.replace(/\r/g, "");
const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
const { function_body } = convert_to_snake_case;
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*\]/);
+assert.match(function_body, /return\s*snake_cased_char_list/);
```
# --seed--
@@ -49,17 +43,13 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
---fcc-editable-region--
- snake_cased_char_list = [
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
+--fcc-editable-region--
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
index 2e7a16802cc..3efdcd1ab2e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f456223b8c1187b461987.md
@@ -1,35 +1,56 @@
---
id: 657f456223b8c1187b461987
-title: Крок 18
+title: Step 19
challengeType: 20
dashedName: step-19
---
# --description--
-Якщо почати розуміння списку зі схожої інструкції `if`, то Python вимагатиме умову `else` в цьому виразі.
+A list comprehension is a concise way to create lists in Python. A basic list comprehension consists of an expression followed by a `for` clause:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-]
+spam = [i * 2 for i in iterable]
```
-Python інтерпретує оновлений вираз як «додати `'_' + char.lower()` до списку, якщо `char` у верхньому регістрі, в іншому випадку — додати `char`», що стосується як великих, так і малих літер у вхідному рядку.
+The above uses the variable `i` to iterate over `iterable`. Each elements of the resulting list is obtained by evaluating the expression `i * 2` at the current iteration.
-Додайте умову `else` між квадратними дужками.
+In this step, you need to fill the empty list `snake_cased_char_list` using the list comprehension syntax.
+
+Turn your empty list into a list comprehension that converts each character in `pascal_or_camel_cased_string` into a lowercase character and prepends an underscore to it (the code you commented out before may help you write the expression). Use `char` to iterate over `pascal_or_camel_cased_string`.
# --hints--
-Додайте `else char` до квадратних дужок `snake_cased_char_list` після `'_' + char.lower() if char.isupper()`.
+You should turn `snake_cased_char_list` into a list comprehension that iterates over `pascal_or_camel_cased_string`.
```js
-const transformedCode = code.replace(/\r/g, "");
-const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
-const { function_body } = convert_to_snake_case;
+({
+ test: () => assert(runPython(`
+ iters = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_iters()
+ len(iters) == 1 and iters[0].is_equivalent("pascal_or_camel_cased_string")
+ `))
+})
+```
-assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*("|')_\1\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s+char\s*\]/);
+Your list comprehension should use `char` to iterate over `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ targets = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_targets()
+ len(targets) == 1 and targets[0].is_equivalent("char")
+ `))
+})
+```
+
+Your list comprehension should evaluate `'_' + char.lower()` for each `char` in `pascal_or_camel_cased_string`.
+
+```js
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower()")
+ `))
+})
```
# --seed--
@@ -51,17 +72,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
-
- ]
+ snake_cased_char_list = []
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
index f10bc6b576f..a30bf0c9b05 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f465f8e718b19c5105ae5.md
@@ -1,41 +1,32 @@
---
id: 657f465f8e718b19c5105ae5
-title: Крок 19
+title: Step 20
challengeType: 20
dashedName: step-20
---
# --description--
-Останньою частиною головоломки є сам вхідний рядок. Розуміння списку має знати про об’єкт, над яким виконуватиме ітерацію.
-
-У цьому випадку вам потрібно ітерувати над всіма символами рядка.
+List comprehensions accept conditional statements, to evaluate the provided expression only if certain conditions are met:
```py
-snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
-]
+spam = [i * 2 for i in iterable if i > 0]
```
-На цьому все. Ці три рядки коду виконують те саме завдання, що й цикл `for`, над яким ви працювали раніше, але вони чистіші та дещо швидші.
+As you can see from the output, the list of characters generated from `pascal_or_camel_cased_string` has been joined. Since the expression inside the list comprehension is evaluated for each character, the result is a lowercase string with all the characters separated by an underscore.
-Додайте останній рядок коду, щоб ітерувати над символами рядка в розумінні списку та переконайтеся, що написали його в квадратних дужках.
+Follow the example above to add an `if` clause to your list comprehension so that the expression is executed only if the character is uppercase.
# --hints--
-Додайте `for char in pascal_or_camel_cased_string` до квадратних дужок `snake_cased_char_list` після `else char`.
+You should add an `if` clause with the condition `char.isupper()` to your list comprehension.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +snake_cased_char_list\s*=\s*\[\s*'_'\s*\+\s*char\.lower\(\s*\)\s+if\s+char\.isupper\(\s*\)\s*else\s*char\s*for\s+char\s+in\s+pascal_or_camel_cased_string\s*\]/);
- }
+({
+ test: () => assert(runPython(`
+ ifs = _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_ifs()
+ len(ifs) == 1 and ifs[0].is_equivalent("char.isupper()")
+ `))
})
```
@@ -58,18 +49,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
-
- ]
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
index 6e9a78852d7..fea2df988fe 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f47b12c51e41b3149e584.md
@@ -1,33 +1,31 @@
---
id: 657f47b12c51e41b3149e584
-title: Крок 20
+title: Step 21
challengeType: 20
dashedName: step-21
---
# --description--
-Вам досі потрібно об’єднувати елементи списку в рядок, видаляти будь-які зайві підкреслення та повертати рядок. Хоча це можна робити як і раніше, розгляньте коротшу альтернативу.
+Still, the final result is not exactly what you want to achieve. You need to execute a different expression for the characters filtered out by the `if` clause. You'll use an `else` clause for that:
```py
-return ''.join(snake_cased_char_list).strip('_')
+spam = [i * 2 if i > 0 else -1 for i in iterable]
```
-Цей єдиний рядок коду об’єднає список символів у рядок, видалить будь-які зайві підкреслення та поверне отриманий рядок. Додайте цей рядок на тому ж рівні, що й змінна `snake_cased_char_list`, та в межах функції `convert_to_snake_case()`.
+Note that, differently from the `if` clause, the `if`/`else` construct must be placed between the expression and the `for` keyword.
+
+Modify your list comprehension so that when a character is not uppercase it remains unchanged.
# --hints--
-Поверніть `''.join(snake_cased_char_list).strip('_')` в кінці функції `convert_to_snake_case()`.
+You should modify your list comprehension to evaluate the expression `'_' + char.lower()` if `char.isupper()` and char otherwise.
```js
-({
- test: () => {
- const transformedCode = code.replace(/\r/g, "");
- const convert_to_snake_case = __helpers.python.getDef("\n" + transformedCode, "convert_to_snake_case");
- const { function_body } = convert_to_snake_case;
-
- assert.match(function_body, / +return\s+('|")\1\.join\(\s*snake_cased_char_list\s*\)\.strip\(\s*("|')_\2\s*\)/);
- }
+({
+ test: () => assert(runPython(`
+ _Node(_code).find_function("convert_to_snake_case").find_variable("snake_cased_char_list").find_comp_expr().is_equivalent("'_' + char.lower() if char.isupper() else char")
+ `))
})
```
@@ -50,19 +48,12 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
# return clean_snake_cased_string
--fcc-editable-region--
- snake_cased_char_list = [
- '_' + char.lower() if char.isupper()
- else char
- for char in pascal_or_camel_cased_string
- ]
-
+ snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string if char.isupper()]
--fcc-editable-region--
-
-
+ return ''.join(snake_cased_char_list).strip('_')
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
index c65205bff0a..5ea2800bf07 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4a4a5828a01de04b652f.md
@@ -1,6 +1,6 @@
---
id: 657f4a4a5828a01de04b652f
-title: Крок 21
+title: Step 22
challengeType: 20
dashedName: step-22
---
@@ -56,6 +56,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('aLongAndComplexString'))
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
index e00fc62ac73..dfd9383b30f 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-list-comprehension-by-building-a-case-converter-program/657f4add33ea4b1f61ba3dc8.md
@@ -1,6 +1,6 @@
---
id: 657f4add33ea4b1f61ba3dc8
-title: Крок 22
+title: Step 23
challengeType: 20
dashedName: step-23
---
@@ -51,8 +51,7 @@ def main():
--fcc-editable-region--
-if __name__ == '__main__':
- main()
+main()
```
# --solutions--
@@ -71,8 +70,5 @@ def convert_to_snake_case(pascal_or_camel_cased_string):
def main():
print(convert_to_snake_case('IAmAPascalCasedString'))
-
-
-if __name__ == '__main__':
- main()
+main()
```
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f01969115f933073b6be03.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f01969115f933073b6be03.md
index db5675bd4bd..affcaaf678a 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f01969115f933073b6be03.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f01969115f933073b6be03.md
@@ -15,7 +15,7 @@ For now, start the project by declaring an empty class named `Vector`.
# --hints--
-You should declare an empty class named `Vector`.
+Оголосіть порожній клас під назвою `Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).has_class("Vector")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
index 7348a00bfc8..52cadd57005 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f03d9f92eac9183a4d3281.md
@@ -15,13 +15,13 @@ Within the `Vector` class, create an `__init__` method and give it three paramet
# --hints--
-You should define an `__init__` method inside the `Vector` class.
+Визначте метод `__init__` в межах класу `Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("Vector").has_function("__init__")`)) })
```
-Your `__init__` method should take three parameters: `self`, `x`, and `y`.
+Метод `__init__` має приймати три параметри: `self`, `x` та `y`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("Vector").find_function("__init__").has_args("self, x, y")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f055b9190fc41ca35549b8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f055b9190fc41ca35549b8.md
index 62ab349a8db..c618d46a5d0 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f055b9190fc41ca35549b8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f055b9190fc41ca35549b8.md
@@ -15,7 +15,7 @@ For now, assign `x` to the `x` attribute of the `Vector` object.
# --hints--
-You should assign `x` to `self.x`.
+Призначте `x` до `self.x`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f056a405239e1dc4cc2854.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f056a405239e1dc4cc2854.md
index 85c65bb188f..7348664ca92 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f056a405239e1dc4cc2854.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f056a405239e1dc4cc2854.md
@@ -11,7 +11,7 @@ Now, assign `y` to the `y` attribute of the `Vector` object.
# --hints--
-You should assign `y` to `self.y`.
+Призначте `y` до `self.y`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f058e06f34fd1f0ee6e55d.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f058e06f34fd1f0ee6e55d.md
index e249d26b02e..7dfa5dd0794 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f058e06f34fd1f0ee6e55d.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f058e06f34fd1f0ee6e55d.md
@@ -11,7 +11,7 @@ Next, within the `Vector` class, create an empty `norm` method and give it a `se
# --hints--
-Your `Vector` class should have a `norm` method.
+Клас `Vector` повинен мати метод `norm`.
```js
({
@@ -21,7 +21,7 @@ Your `Vector` class should have a `norm` method.
})
```
-Your `norm` method should have a `self` parameter.
+Метод `norm` повинен мати параметр `self`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
index cb82b4aeb92..786d678a6d4 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f06a8e5a57673d700c79c3.md
@@ -11,7 +11,7 @@ Outside the `Vector` class, create an instance of `Vector` passing the integers
# --hints--
-You should declare a variable `v1` and assign it `Vector(2, 3)`.
+Оголосіть змінну `v1` та призначте до неї `Vector(2, 3)`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
index ca901fd9936..84d0fb615bc 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa097f26b510db6c710b.md
@@ -9,13 +9,13 @@ dashedName: step-9
Great, `norm` is working as expected. Now, if you try to print `v1`, you'll get the default string representation of an object (something like `<__main__.Vector object at 0x11eb778>`).
-Inside the `Vector` class, declare an empty `__str__` method to implement a readable string representation. Remember to give it a `self` parameter.
+Inside the `Vector` class, declare an empty `__str__` method to implement a readable string representation. Не забудьте надати йому параметр `self`.
Pay attention to not print `v1` until `__str__` returns a string, otherwise you'll get a `TypeError`, because `__str__` must always return a string.
# --hints--
-You should define a `__str__` method within the `Vector` class.
+Визначте метод `__str__` в межах класу `Vector`.
```js
({
@@ -25,7 +25,7 @@ You should define a `__str__` method within the `Vector` class.
})
```
-Your `__str__` method should have a `self` parameter.
+Метод `__str__` повинен мати параметр `self`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
index 7b588afc9d3..cea0106bd0b 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f3fa60a93b84110b3f1708.md
@@ -26,7 +26,7 @@ assert str(v3) == '(-2, -3.5)'
`) })
```
-You should print `v1`.
+Надрукуйте `v1`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
index c50cbefeb4a..74dc00d7e44 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40401e6ef53173c04e27d.md
@@ -11,7 +11,7 @@ Within your new class, declare an `__init__` method. Give it `self`, `x`, `y`, a
# --hints--
-You should define an `__init__` method inside your `R3Vector` class.
+Визначте метод `__init__` в межах класу `R3Vector`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
index 68340ee6c11..3c08784e33a 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f40fdb3579aa1ced28b2eb.md
@@ -11,7 +11,7 @@ Create an `R3Vector` instance with `2`, `2`, and `3` as the values of `x`, `y`,
# --hints--
-You should declare a variable `v2` and assign it `R3Vector(2, 2, 3)`.
+Оголосіть змінну `v2` та призначте до неї `R3Vector(2, 2, 3)`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("v2").is_equivalent("v2 = R3Vector(2, 2, 3)")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
index ef31cdd6194..68184a2b2be 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4148dea0f802040225e0c.md
@@ -7,7 +7,7 @@ dashedName: step-18
# --description--
-Remove the existing `print` calls. Then, as you did before for `v1`, print `v2` and the value returned by `v2.norm()`.
+Видаліть наявні виклики `print`. Then, as you did before for `v1`, print `v2` and the value returned by `v2.norm()`.
# --hints--
@@ -22,7 +22,7 @@ You should not have `print(v1)` and `print(v1.norm())` in your code.
})
```
-You should print `v2` and `v2.norm()`.
+Надрукуйте `v2` та `v2.norm()`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
index 1a83f17e994..cdad56a7482 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f4520e363e2642f8112e33.md
@@ -11,7 +11,7 @@ As you can see, something is not quite right. The `norm` and `__str__` methods i
Every object in Python has a special attribute named `__dict__`, which is a dictionary that stores the object attributes.
-Remove the existing `print` calls. Then, print the `__dict__` attribute of your `v1` and `v2` vectors to see what they look like.
+Видаліть наявні виклики `print`. Then, print the `__dict__` attribute of your `v1` and `v2` vectors to see what they look like.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f870003444fb1a2ad171f2.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f870003444fb1a2ad171f2.md
index bbb82436c52..fc8da645f25 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f870003444fb1a2ad171f2.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f870003444fb1a2ad171f2.md
@@ -11,13 +11,13 @@ Modify the two `print` calls to print the norm of your vectors and verify that t
# --hints--
-You should print `v1.norm()`.
+Надрукуйте `v1.norm()`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(v1.norm())")`)) })
```
-You should print `v2.norm()`.
+Надрукуйте `v2.norm()`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(v2.norm())")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
index 6a2c44baef5..3594e8e311c 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f8749b13774b1d2e4a7fba.md
@@ -13,13 +13,13 @@ Add a `__repr__` method with a `self` parameter within the `R2Vector` class.
# --hints--
-Your `R2Vector` class should have a `__repr__` method.
+Клас `R2Vector` повинен мати метод `__repr__`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__repr__")`)) })
```
-Your `__repr__` method should have a `self` parameter.
+Метод `__repr__` повинен мати параметр `self`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__repr__").has_args("self")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f876d17832001e8e1abb05.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f876d17832001e8e1abb05.md
index 7f5a3e0f9c9..e8e2905bc2e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f876d17832001e8e1abb05.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f876d17832001e8e1abb05.md
@@ -11,7 +11,7 @@ Declare a variable `arg_list`. Give it the value of a list comprehension that it
# --hints--
-You should declare a variable `arg_list`.
+Оголосіть змінну `arg_list`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__repr__").has_variable("arg_list")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
index 127f701ba31..738c3c05526 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9b17a638f0d0dcce8c354.md
@@ -11,17 +11,17 @@ To create a vector space, you need to define how vectors should behave in severa
The special method `__add__` can be implemented to override what happens by default when two objects are added together using the `+` operator.
-Right now, trying to add two instances of `R2Vector` or `R3Vector` would raise an exception. Create an empty `__add__` method within the `R2Vector` class and give it two parameters: `self`, and `other`.
+Right now, trying to add two instances of `R2Vector` or `R3Vector` would raise an exception. Створіть порожній метод `__add__` в межах класу `R2Vector` і надайте йому два параметри: `self` та `other`.
# --hints--
-You should define an `__add__` method within the `R2Vector` class.
+Визначте метод `__add__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__add__")`)) })
```
-Your `__add__` method should have two parameters, `self` and `other`.
+Метод `__add__` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__add__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9bc10a9fb1612e066e9e8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9bc10a9fb1612e066e9e8.md
index f5d28e43bd6..1e4e3e27783 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9bc10a9fb1612e066e9e8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9bc10a9fb1612e066e9e8.md
@@ -45,7 +45,7 @@ The dictionary comprehension assigned to `kwargs` should use `i` as the key.
})
```
-The dictionary comprehension assigned to `kwargs` should assign the sum of the `i` attribute of `self` and the `i` attribute of `other` to the `i` key for each `i` in `vars(self)`. Use the `getattr()` function for that.
+The dictionary comprehension assigned to `kwargs` should assign the sum of the `i` attribute of `self` and the `i` attribute of `other` to the `i` key for each `i` in `vars(self)`. Для цього використайте функцію `getattr()`.
```js
({ test: () => assert(runPython(`
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
index 689ab778fe5..783e734054e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65f9cb678070ca1668898c70.md
@@ -13,7 +13,7 @@ Now, define an empty `__sub__` method and give two parameters: `self`, and `othe
# --hints--
-You should define a `__sub__` method within the `R2Vector` class.
+Визначте метод `__sub__` в межах класу `R2Vector`.
```js
({
@@ -23,7 +23,7 @@ You should define a `__sub__` method within the `R2Vector` class.
})
```
-Your `__sub__` method should have two parameters, `self` and `other`.
+Метод `__sub__` повинен мати два параметри: `self` та `other`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa8df56a0e2c149b4d24fe.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa8df56a0e2c149b4d24fe.md
index 87ddac5ea5f..800f861f118 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa8df56a0e2c149b4d24fe.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa8df56a0e2c149b4d24fe.md
@@ -11,7 +11,7 @@ Next, check the new vector by printing the following f-string `f'v1 + v2 = {v3}'
# --hints--
-You should print `f'v1 + v2 = {v3}'`.
+Надрукуйте `f'v1 + v2 = {v3}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 + v2 = {v3}')")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9402d1fb5516aa42159d.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9402d1fb5516aa42159d.md
index e526a9cd4cc..416948726bf 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9402d1fb5516aa42159d.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9402d1fb5516aa42159d.md
@@ -23,7 +23,7 @@ You should declare a variable `v4` and assign it the difference between `v1` and
})
```
-You should print `f'v1 - v2 = {v4}'`.
+Надрукуйте `f'v1 - v2 = {v4}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 - v2 = {v4}')")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
index d2df1c3038d..13aef5c6eea 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fa9e1b6c6db919385359ec.md
@@ -9,11 +9,11 @@ dashedName: step-51
The special method `__mul__` can be implemented to specify what should happen when the current instance is multiplied by another object.
-Create an empty `__mul__` method within the `R2Vector` class and give it two parameters: `self`, and `other`.
+Створіть порожній метод `__mul__` в межах класу `R2Vector` і надайте йому два параметри: `self` та `other`.
# --hints--
-You should define a `__mul__` method within the `R2Vector` class.
+Визначте метод `__mul__` в межах класу `R2Vector`.
```js
({
@@ -23,7 +23,7 @@ You should define a `__mul__` method within the `R2Vector` class.
})
```
-Your `__mul__` method should have two parameters, `self` and `other`.
+Метод `__mul__` повинен мати два параметри: `self` та `other`.
```js
({
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
index bf365bd4903..a73f57c5e55 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fc8fa7e7860407ab479bf0.md
@@ -17,7 +17,7 @@ You should declare a new variable `v5` and assign it the scalar multiplication `
({ test: () => assert(runPython(`_Node(_code).find_variable("v5").is_equivalent("v5 = v1 * 3")`)) })
```
-You should print the f-string `f'v1 * 3 = {v5}'`.
+Надрукуйте f-рядок `f'v1 * 3 = {v5}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 * 3 = {v5}')")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
index 034109b8c53..21c06e4ef2d 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd681b20b7e45f55def415.md
@@ -7,7 +7,7 @@ dashedName: step-57
# --description--
-The scalar multiplication works fine. Now, modify the assignment of `v5` to be the dot product `v1 * v2`. Also, update the `print` call.
+The scalar multiplication works fine. Now, modify the assignment of `v5` to be the dot product `v1 * v2`. Також оновіть виклик `print`.
Before doing that, feel free to experiment and multiply `v1` by an object of invalid type to see the error message printed on the console.
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
index f6184775ca4..efa71b0788e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9250db0d6b8198cf29ef.md
@@ -9,17 +9,17 @@ dashedName: step-58
The `__eq__` method can be implemented to specify what should happen in case the comparison operator (`==`) is used to compare an object with something else.
-Within the `R2Vector` class, create an `__eq__` method and give it two parameters: `self` and `other`.
+У межах класу `R2Vector` створіть метод `__eq__` і надайте йому два параметри: `self` та `other`.
# --hints--
-You should define a `__eq__` method within the `R2Vector` class.
+Визначте метод `__eq__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__eq__")`)) })
```
-Your `__eq__` method should take two parameters: `self` and `other`.
+Метод `__eq__` має приймати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__eq__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9aa649f6cc84631882a9.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9aa649f6cc84631882a9.md
index a7f5d701215..454c7ec8bd5 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9aa649f6cc84631882a9.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9aa649f6cc84631882a9.md
@@ -11,13 +11,13 @@ The `__ne__` method is called under the hood when the `!=` operator is used. Def
# --hints--
-You should define a `__ne__` method within the `R2Vector` class.
+Визначте метод `__ne__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__ne__")`)) })
```
-Your `__ne__` method should have two parameters, `self` and `other`.
+Метод `__ne__` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__ne__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
index 9255b41f2c6..2c357fbd843 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/65fd9e2c56ff19862dfb8cbb.md
@@ -9,17 +9,17 @@ dashedName: step-64
The `__lt__` method is called under the hood when the `<` operator is used to compare an object with something else.
-Add an empty `__lt__` method and give it two parameters: `self`, `other`.
+Додайте порожній метод `__lt__` і надайте йому два параметри: `self` та `other`.
# --hints--
-You should define a `__lt__` method within the `R2Vector` class.
+Визначте метод `__lt__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__lt__")`)) })
```
-Your `__lt__` method should have two parameters, `self` and `other`.
+Метод `__lt__` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__lt__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
index 7193db8cba2..3a60ded55c6 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601918b44a11b4a8c986c6a.md
@@ -13,13 +13,13 @@ After the `__lt__` method, in the same way you did for `__lt__`, implement the `
# --hints--
-You should define a `__gt__` method within the `R2Vector` class.
+Визначте метод `__gt__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__gt__")`)) })
```
-Your `__lt__` method should have two parameters, `self` and `other`.
+Метод `__lt__` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__gt__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
index fd051c7fca6..0d3e393752a 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019258a7c71d4ae50da42e.md
@@ -13,13 +13,13 @@ Define a `__le__` method with `self` and `other` as the parameters and make it r
# --hints--
-You should define a `__le__` method within the `R2Vector` class.
+Визначте метод `__le__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__le__")`)) })
```
-Your `__le__` method should have two parameters, `self` and `other`.
+Метод `__le__` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__le__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
index 542035862a5..b9e21d2446a 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019319edb1cb4b57d3a793.md
@@ -13,13 +13,13 @@ Define a `__ge__` method with `self` and `other` as the parameters and make it r
# --hints--
-You should define a `__ge__` method within the `R2Vector` class.
+Визначте метод `__ge__` в межах класу `R2Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").has_function("__ge__")`)) })
```
-Your `__ge__` method should have two parameters, `self` and `other`.
+Метод `__ge__` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R2Vector").find_function("__ge__").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
index fe9c0cfa362..92a3ff666d5 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/660193a2a71faa4bd8f10970.md
@@ -7,7 +7,7 @@ dashedName: step-70
# --description--
-Feel free to play around with the new comparison operations you implemented. Then, remove your last `print` call.
+Feel free to play around with the new comparison operations you implemented. Потім видаліть останній виклик `print`.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
index 2157c6b8a3b..78f8fc804bb 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/66019977710caa516276c0a8.md
@@ -11,17 +11,17 @@ The *cross product*, or *vector product*, is defined between 3-dimensional vecto
The `R3Vector` class inherits from `R2Vector`, meaning it has access to all the methods and properties defined in `R2Vector`. A child class can implement additional features. You already saw a way to change the implementation of a method. Now, you are going to give the child class `R3Vector` a new method instead.
-Within the `R3Vector` class, define a `cross` method and give it two parameters: `self`, and `other`.
+У межах класу `R3Vector` визначте метод `cross` і надайте йому два параметри: `self` та `other`.
# --hints--
-You should define a `cross` method within the `R3Vector` class.
+Визначте метод `cross` в межах класу `R3Vector`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R3Vector").has_function("cross")`)) })
```
-Your `cross` method should have two parameters, `self` and `other`.
+Метод `cross` повинен мати два параметри: `self` та `other`.
```js
({ test: () => assert(runPython(`_Node(_code).find_class("R3Vector").find_function("cross").has_args("self, other")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
index 47d13a7bd4d..5b8e165be3e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/6601ad0fe415985a5c83f3cc.md
@@ -9,11 +9,11 @@ dashedName: step-77
As a final step, call the `print` function and pass it the f-string `f'v1 x v2 = {v6}'` to see the output of the dot product.
-With that, you have completed the vector space project. Well done!
+With that, you have completed the vector space project. Хороша робота!
# --hints--
-You should print `f'v1 x v2 = {v6}'`.
+Надрукуйте `f'v1 x v2 = {v6}'`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(f'v1 x v2 = {v6}')")`)) })
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
index 5ca8b18ffd4..501248390e6 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553ed69ece88d29594748aa.md
@@ -1,6 +1,6 @@
---
id: 6553ed69ece88d29594748aa
-title: Step 52
+title: Крок 52
challengeType: 20
dashedName: step-52
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
index 509855be99c..0cfccaad0eb 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
@@ -1,6 +1,6 @@
---
id: 6553efd6ada3f42aa2d75448
-title: Step 53
+title: Крок 53
challengeType: 20
dashedName: step-53
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
index f8a15f68b89..5030cf284c3 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f3fc92741c2bf8ded140.md
@@ -1,6 +1,6 @@
---
id: 6553f3fc92741c2bf8ded140
-title: Step 54
+title: Крок 54
challengeType: 20
dashedName: step-54
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
index 3fd6e427f16..434f7396fc6 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f4f66099802c6ae94613.md
@@ -1,6 +1,6 @@
---
id: 6553f4f66099802c6ae94613
-title: Step 55
+title: Крок 55
challengeType: 20
dashedName: step-55
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
index ad4fb72f01d..466258b62f6 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f6086add4b2cbb99fd78.md
@@ -1,6 +1,6 @@
---
id: 6553f6086add4b2cbb99fd78
-title: Step 56
+title: Крок 56
challengeType: 20
dashedName: step-56
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
index 2d24fc08b60..73dfb55cb0d 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6553f8c570f9982e013a8886.md
@@ -1,6 +1,6 @@
---
id: 6553f8c570f9982e013a8886
-title: Step 57
+title: Крок 57
challengeType: 20
dashedName: step-57
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
index 70cef98bd1b..d3190031747 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655491bd5b98b813fa5bedca.md
@@ -1,6 +1,6 @@
---
id: 655491bd5b98b813fa5bedca
-title: Step 58
+title: Крок 58
challengeType: 20
dashedName: step-58
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
index 1004d617f04..769d6f33a08 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554930320d70414e7b6acc6.md
@@ -1,6 +1,6 @@
---
id: 6554930320d70414e7b6acc6
-title: Step 59
+title: Крок 59
challengeType: 20
dashedName: step-59
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
index ac5ceeb5c0a..4d862a15d24 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549561463f0016876e852c.md
@@ -1,6 +1,6 @@
---
id: 65549561463f0016876e852c
-title: Step 60
+title: Крок 60
challengeType: 20
dashedName: step-60
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
index fc1f45dec78..aa2d9490b6e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65549f90cf78131c96ebcf28.md
@@ -1,6 +1,6 @@
---
id: 65549f90cf78131c96ebcf28
-title: Step 61
+title: Крок 61
challengeType: 20
dashedName: step-61
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
index c298af7fc32..f7ce45456b4 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a334a40edb1fb4eff827.md
@@ -1,6 +1,6 @@
---
id: 6554a334a40edb1fb4eff827
-title: Step 62
+title: Крок 62
challengeType: 20
dashedName: step-62
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
index 5e42d12224b..ed233b68874 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a49a4f782f208abcc87e.md
@@ -1,6 +1,6 @@
---
id: 6554a49a4f782f208abcc87e
-title: Step 63
+title: Крок 63
challengeType: 20
dashedName: step-63
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
index 7841247c373..972698ea13d 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a57ec0a2c52106e7ee50.md
@@ -1,6 +1,6 @@
---
id: 6554a57ec0a2c52106e7ee50
-title: Step 64
+title: Крок 64
challengeType: 20
dashedName: step-64
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
index 24598e804bf..e8613bc6012 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554a88d5af937226f4a9121.md
@@ -1,6 +1,6 @@
---
id: 6554a88d5af937226f4a9121
-title: Step 65
+title: Крок 65
challengeType: 20
dashedName: step-65
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
index 06736eb0fc2..ef2f13069d6 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ac937a49be2701af4f2f.md
@@ -1,6 +1,6 @@
---
id: 6554ac937a49be2701af4f2f
-title: Step 66
+title: Крок 66
challengeType: 20
dashedName: step-66
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
index df574934ea3..5be063d83f9 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554ad2463b8892748f8efdd.md
@@ -1,6 +1,6 @@
---
id: 6554ad2463b8892748f8efdd
-title: Step 67
+title: Крок 67
challengeType: 20
dashedName: step-67
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
index c48ac3f2236..f7dbc3c3923 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d0332949b133a0b35eaa.md
@@ -1,6 +1,6 @@
---
id: 6554d0332949b133a0b35eaa
-title: Step 68
+title: Крок 68
challengeType: 20
dashedName: step-68
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
index 44c2760e839..4f69c9c53da 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d15c8acb5f34499ad789.md
@@ -1,6 +1,6 @@
---
id: 6554d15c8acb5f34499ad789
-title: Step 69
+title: Крок 69
challengeType: 20
dashedName: step-69
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
index 4bdc1d496d5..cc6fa4b4fb0 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md
@@ -1,6 +1,6 @@
---
id: 6554d25dc5ceaa354307a77e
-title: Step 70
+title: Крок 70
challengeType: 20
dashedName: step-70
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
index 775f753b664..57b9993fa2e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554de295ade563a069936a1.md
@@ -1,6 +1,6 @@
---
id: 6554de295ade563a069936a1
-title: Step 71
+title: Крок 71
challengeType: 20
dashedName: step-71
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
index 966e04e5922..d023e1e83d6 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554dfce1683be3c0c9609a6.md
@@ -1,6 +1,6 @@
---
id: 6554dfce1683be3c0c9609a6
-title: Step 72
+title: Крок 72
challengeType: 20
dashedName: step-72
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
index 61729964d8d..c434f291898 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e0adc7bb193cbfdb36d5.md
@@ -1,6 +1,6 @@
---
id: 6554e0adc7bb193cbfdb36d5
-title: Step 73
+title: Крок 73
challengeType: 20
dashedName: step-73
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
index d42ac8dfeb7..fafe3aa5746 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e2ee23bfd93f2c83640f.md
@@ -1,6 +1,6 @@
---
id: 6554e2ee23bfd93f2c83640f
-title: Step 74
+title: Крок 74
challengeType: 20
dashedName: step-74
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
index f949a598d11..e9c1b1ae776 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554e343caea913ffba7bec6.md
@@ -1,6 +1,6 @@
---
id: 6554e343caea913ffba7bec6
-title: Step 75
+title: Крок 75
challengeType: 20
dashedName: step-75
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
index 43a8c50496b..f2d79c3701e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655516e410b8e30fb4fb64e8.md
@@ -1,6 +1,6 @@
---
id: 655516e410b8e30fb4fb64e8
-title: Step 76
+title: Крок 76
challengeType: 20
dashedName: step-76
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
index 74a3e0a9fe1..7117f23b080 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65551a628bcb7e121e32d04b.md
@@ -1,6 +1,6 @@
---
id: 65551a628bcb7e121e32d04b
-title: Step 79
+title: Крок 79
challengeType: 20
dashedName: step-79
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
index e6a4f04c983..dd253dbb4b8 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555201d9b7fc917399f9f0b.md
@@ -1,6 +1,6 @@
---
id: 6555201d9b7fc917399f9f0b
-title: Step 80
+title: Крок 80
challengeType: 20
dashedName: step-80
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
index 0a53fe9eba8..731d8508c36 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655520c20cb1e6177b0641d6.md
@@ -1,6 +1,6 @@
---
id: 655520c20cb1e6177b0641d6
-title: Step 81
+title: Крок 81
challengeType: 20
dashedName: step-81
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
index 7778940f535..eb643bcf41e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/655522883e66f618e03a9411.md
@@ -1,6 +1,6 @@
---
id: 655522883e66f618e03a9411
-title: Step 82
+title: Крок 82
challengeType: 20
dashedName: step-82
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
index 17e23a6800f..fb62969ac66 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md
@@ -1,6 +1,6 @@
---
id: 6555231eac4d9f19bd3d44b5
-title: Step 83
+title: Крок 83
challengeType: 20
dashedName: step-83
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
index e2ed6e2e717..e65982b8770 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a111190e11f0963949e.md
@@ -1,6 +1,6 @@
---
id: 65552a111190e11f0963949e
-title: Step 84
+title: Крок 84
challengeType: 20
dashedName: step-84
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
index 09a8591efd9..9939b78067f 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md
@@ -1,6 +1,6 @@
---
id: 65552a9593755e1fb2f5ab50
-title: Step 85
+title: Крок 85
challengeType: 20
dashedName: step-85
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
index 820ad829c3a..b02c6984d67 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552b14e803731fe3c1e4ca.md
@@ -1,6 +1,6 @@
---
id: 65552b14e803731fe3c1e4ca
-title: Step 86
+title: Крок 86
challengeType: 20
dashedName: step-86
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
index 67e3ffd8789..bb6a9c9b6e8 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65553159615a8123b190ee43.md
@@ -1,6 +1,6 @@
---
id: 65553159615a8123b190ee43
-title: Step 87
+title: Крок 87
challengeType: 20
dashedName: step-87
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
index 294f60658b9..a94606e8f8e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md
@@ -1,6 +1,6 @@
---
id: 6555d6e12c95701172b55709
-title: Step 77
+title: Крок 77
challengeType: 20
dashedName: step-77
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
index 21418787d2c..666d5b22a64 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d8b0b3d20b128bdadd37.md
@@ -1,6 +1,6 @@
---
id: 6555d8b0b3d20b128bdadd37
-title: Step 78
+title: Крок 78
challengeType: 20
dashedName: step-78
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
index a97af3e5f37..dac90dc2f1a 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555db4a7b788e15795674e5.md
@@ -1,6 +1,6 @@
---
id: 6555db4a7b788e15795674e5
-title: Step 89
+title: Крок 89
challengeType: 20
dashedName: step-89
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
index 159e8fbb201..629e16e700e 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555df0c81300b175308557d.md
@@ -1,6 +1,6 @@
---
id: 6555df0c81300b175308557d
-title: Step 90
+title: Крок 90
challengeType: 20
dashedName: step-90
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
index ae68e06c1e5..4920c29a161 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md
@@ -1,6 +1,6 @@
---
id: 6555e1bfcd374e18c6be8e58
-title: Step 91
+title: Крок 91
challengeType: 20
dashedName: step-91
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
index c36c2d5cdf4..76c0ae28d40 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e3f387381a19d5e00333.md
@@ -1,6 +1,6 @@
---
id: 6555e3f387381a19d5e00333
-title: Step 92
+title: Крок 92
challengeType: 20
dashedName: step-92
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
index 6c8f8970c4b..41e5ca2260b 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e43e783ed31a0532b1b2.md
@@ -1,6 +1,6 @@
---
id: 6555e43e783ed31a0532b1b2
-title: Step 93
+title: Крок 93
challengeType: 20
dashedName: step-93
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
index 0c7bc9ec362..7626745b725 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e547c18a2b1a7b795bd8.md
@@ -1,6 +1,6 @@
---
id: 6555e547c18a2b1a7b795bd8
-title: Step 95
+title: Крок 95
challengeType: 20
dashedName: step-95
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
index db78be78018..2ff3c669a91 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555e5991af57d1ae0e35f0a.md
@@ -1,6 +1,6 @@
---
id: 6555e5991af57d1ae0e35f0a
-title: Step 96
+title: Крок 96
challengeType: 20
dashedName: step-96
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
index da7cf8cda88..e7c8e0d67b3 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a450e8fb2c9d75c7378d28.md
@@ -1,6 +1,6 @@
---
id: 65a450e8fb2c9d75c7378d28
-title: Step 88
+title: Крок 88
challengeType: 20
dashedName: step-88
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
index 53dbb673e44..2062725e3f9 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65a51c9e000b660122b8b29e.md
@@ -1,6 +1,6 @@
---
id: 65a51c9e000b660122b8b29e
-title: Step 94
+title: Крок 94
challengeType: 20
dashedName: step-94
---
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/66605a64a9822f01ec5ae8ce.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/66605a64a9822f01ec5ae8ce.md
index 5734879a4e2..69ec1f6f9ff 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/66605a64a9822f01ec5ae8ce.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/66605a64a9822f01ec5ae8ce.md
@@ -1,25 +1,25 @@
---
id: 66605a64a9822f01ec5ae8ce
-title: Step 50
+title: Крок 50
challengeType: 20
dashedName: step-50
---
# --description--
-In Python, the *scope* of a variable determines where that variable can be accessed:
+*Область* змінної в Python визначає, де можна отримати доступ до цієї змінної:
-- Variables defined outside a function have a *global* scope and they can be accessed from any part of your code.
+- змінні, визначені поза функцією, мають *глобальну* область, і до них можна отримати доступ з будь-якої частини коду;
-- Variables defined inside a function are *local* to that function and cannot be accessed outside of it.
+- змінні, визначені в межах функції, є *локальними* для цієї функції, і до них неможливо отримати доступ поза нею.
-To see this in action, try to print the `alphabet` variable at the end of your code. This will raise a `NameError` exception.
+Щоб побачити це в дії, спробуйте надрукувати змінну `alphabet` у кінці коду. Це видасть виняток `NameError`.
-You should see an error message indicating that `alphabet` is not defined. This is because `alphabet` is defined inside the `caesar` function and is not accessible outside of it.
+Ви повинні побачити повідомлення про помилку, яке вказує на те, що `alphabet` не визначено. Причина в тому, що змінну `alphabet` визначено в межах функції `caesar` та вона недоступна поза нею.
# --hints--
-You should attempt to print the `alphabet` variable outside the caesar function.
+Спробуйте надрукувати змінну `alphabet` поза функцією `caesar`.
```js
assert.match(code, /^print\(\s*alphabet\s*\)/m)
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/666064e915eba7aa1de03f6b.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/666064e915eba7aa1de03f6b.md
index cdd3b73178d..a9abc41c949 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/666064e915eba7aa1de03f6b.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/666064e915eba7aa1de03f6b.md
@@ -1,17 +1,17 @@
---
id: 666064e915eba7aa1de03f6b
-title: Step 51
+title: Крок 51
challengeType: 20
dashedName: step-51
---
# --description--
-Now, fix the error by removing the line that tries to print the `alphabet` variable outside of the `caesar` function.
+Тепер виправте помилку, видаливши рядок, який намагається надрукувати змінну `alphabet` поза функцією `caesar`.
# --hints--
-You should remove the `print(alphabet)` line.
+Видаліть рядок `print(alphabet)`.
```js
({ test: () => assert.isFalse(runPython(`_Node(_code).has_call("print(alphabet)")`)) })
diff --git a/curriculum/challenges/ukrainian/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md b/curriculum/challenges/ukrainian/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
index f8b7d42470c..6cee41b28a2 100644
--- a/curriculum/challenges/ukrainian/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
+++ b/curriculum/challenges/ukrainian/16-the-odin-project/top-learn-css-foundations-projects/css-foundations-exercise-a.md
@@ -11,19 +11,19 @@ dashedName: css-foundations-exercise-a
## Історія користувача
-- You should see a `div` element with some text.
- - It should have a `red` background, `white` text, a font size of `32px`, text center aligned and `bold`.
- - The CSS for the `div` element should be added externally, and using a type selector.
-- You should see a `p` element with some text.
- - It should have a `green` background, `white` text, and a font size of `18px`.
- - The CSS for the `p` element should be added internally, and using a type selector.
-- You should see a `button` element with some text.
- - The `button` element should have an `orange` background and a font size of `18px`.
- - The CSS for the `button` element should be added using inline styles.
+- Ви повинні бачити елемент `div` з деяким текстом.
+ - Він повинен мати червоний (`red`) фон, білий (`white`) текст, шрифт розміром `32px`, вирівняний за центром та жирний (`bold`).
+ - Використайте селектор типу, щоб зовнішньо додати CSS для елемента `div`.
+- Ви повинні бачити елемент `p` з деяким текстом.
+ - Він повинен мати зелений (`green`) фон, білий (`white`) текст та шрифт розміром `18px`.
+ - Використайте селектор типу, щоб внутрішньо додати CSS для елемента `p`.
+- Ви повинні бачити елемент `button` з деяким текстом.
+ - Він повинен мати оранжевий (`orange`) фон та шрифт розміром `18px`.
+ - Використайте вбудовані стилі, щоб додати CSS для елемента `button`.
# --hints--
-You should have one `div` element containing some text.
+Ви повинні мати один елемент `div`, який містить текст.
```js
const divElement = document.querySelector('div');
@@ -32,7 +32,7 @@ assert.isNotNull(divElement);
assert.isAtLeast(divElement?.innerText.length, 1);
```
-You should have an external stylesheet containing the `div` element styles.
+Ви повинні мати зовнішню таблицю стилів, яка містить стилі елемента `div`.
```js
const styleSheet = new __helpers.CSSHelp(document).getStyleSheet();
@@ -43,7 +43,7 @@ assert.isTrue(isExternal);
assert.isNotNull(divStyle);
```
-Your `div` element should not have its CSS added using internal or inline styles.
+Не додавайте CSS до елемента `div`, використовуючи внутрішні або вбудовані стилі.
```js
const styleElement = document.querySelector('style:not([class])');
@@ -52,7 +52,7 @@ assert.isNotTrue(styleElement?.innerText.includes('div'));
assert.isNotTrue(document.querySelector('div')?.hasAttribute('style'));
```
-Your `div` element should have a `background-color` of `red` and a `color` of `white`.
+Елемент `div` повинен мати `background-color` зі значенням `red` та `color` зі значенням `white`.
```js
const divStyle = new __helpers.CSSHelp(document).getStyle('div');
@@ -63,7 +63,7 @@ assert.equal(divBGColor, 'red');
assert.equal(divColor, 'white');
```
-Your `div` element should have `font-weight` set to `bold`, `font-size` set to `32px`, and `text-align` set to `center`.
+Елемент `div` повинен мати `font-weight` зі значенням `bold`, `font-size` зі значенням `32px` та `text-align` зі значенням `center`.
```js
const divStyle = new __helpers.CSSHelp(document).getStyle('div');
@@ -76,7 +76,7 @@ assert.equal(fontSize, '32px');
assert.equal(fontWeight,'bold');
```
-You should have one `p` element and it should contain some text.
+Ви повинні мати один елемент `p`, який містить текст.
```js
const pElement = document.querySelector('p');
@@ -85,7 +85,7 @@ assert.isNotNull(pElement);
assert.isAtLeast(pElement?.innerText.length, 1)
```
-Your `p` element should have its styles added internally using a `style` element.
+Додайте стилі до елемента `p` внутрішньо, використавши елемент `style`.
```js
const styleElement = document.querySelector('style:not([class])');
@@ -99,7 +99,7 @@ if (rules && rules.selectorText === 'p') {
assert.isTrue(isStyled);
```
-Your `p` element should have a `font-size` of `18px` and have `color` set to `white`.
+Елемент `p` повинен мати `font-size` зі значенням `18px` та `color` зі значенням `white`.
```js
const styleElement = document.querySelector('style:not([class])');
@@ -115,7 +115,7 @@ assert.equal(fontSize, "18px");
assert.equal(color, 'white');
```
-You should have one `button` element containing some text.
+Ви повинні мати один елемент `button`, який містить текст.
```js
const btnElement = document.querySelector('button');
@@ -124,19 +124,19 @@ assert.isNotNull(btnElement);
assert.isAtLeast(btnElement?.innerText.length, 1);
```
-Your `button` element should have an inline style.
+Елемент `button` повинен мати вбудований стиль.
```js
assert.isTrue(document.querySelector('button')?.hasAttribute('style'));
```
-Your `button` element should have its `background-color` set to `orange`.
+Елемент `button` повинен мати `background-color` зі значенням `orange`.
```js
assert.equal(document.querySelector('button')?.style.backgroundColor, 'orange')
```
-Your `button` element should have its `font-size` set to `18px`.
+Елемент `button` повинен мати `font-size` зі значенням `18px`.
```js
assert.equal(document.querySelector('button')?.style.fontSize, '18px')
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
index 5e0938a16ee..a1a2fb75857 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6ea501ca10ae78922b0d.md
@@ -7,15 +7,15 @@ dashedName: task-24
# --description--
-Ви вже знаєте, як використовувати `do`, щоб запитати про хобі. А тепер використайте `do` та запитайте про щоденну рутину. Таким чином ви можете дізнатися про діяльність людини під час невимушеної розмови.
+Let's use `do` to ask about daily routines.
-Примітка: в запитанні, коли ви використовуєте допоміжне дієслово `do`, основне дієслово має залишатися в початковій формі. Наприклад:
+When you use `do` as an auxiliary verb in a question, the main verb must stay in its base form. Наприклад:
Ствердження: `She works as a Full Stack dev.`
Запитання: `Does she work as a Full Stack dev?`
-`Work` залишається `work` і не змінюється на `works`, навіть коли запитують про третю особу однини (тобто `he`, `she` або `it`).
+Notice in the example above that `work` doesn't change to `works`, even when asking about a third person singular subject like `he,` `she,` or `it.`
# --question--
@@ -41,7 +41,7 @@ dashedName: task-24
### --feedback--
-Це речення граматично неправильне.
+Remember, for this kind of question you need an auxiliary verb. Also, pay attention to word order.
---
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
index f2c03d3d8ba..b5a99136f5b 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b6f641e5c3ab1afc6efc1.md
@@ -7,15 +7,15 @@ dashedName: task-25
# --description--
-Ви вже навчилися ставити запитання, використовуючи `do`. Також можна утворити заперечення, використовуючи допоміжне дієслово. Щоб утворити заперечне речення, перед основним дієсловом потрібно додати `do` (I, you, we, they) або `does` (he, she, it) та `not`.
+Before you learned to ask questions using `do`, you can also use it to create negative sentences by combining `do` (for `I`, `you`, `we`, `they`) or `does` (for `he`, `she`, `it`) with the word `not` and placing it right before the main verb:
-`I do not work everyday` — (підмет + do + not + основне дієслово)
+`I do not work everyday` - (Subject + `do` + `not` + main verb)
-`It does not function` — (підмет + does + not + основне дієслово)
+`It does not function` - (Subject + `does` + `not` + main verb)
-Зазвичай замість `do not` та `does not` використовують скорочення `don’t` та `doesn’t`.
+Often, to be more practical people abbreviate `do not` to `don't` and `does not` to `doesn’t`.
-Якщо ви використовуєте `don't`, основне дієслово вживається в початковій формі незалежно від особи (так само як і в запитанні). Запам’ятайте, що `don't` використовують з I, you, we та they. Якщо мова про he, she або it, використовуйте `doesn't`, але детальніше про це згодом. Зараз сфокусуємося на використанні `don't.`
+Just like with questions, when you use `don't`, the main verb that comes after it will always be in its base form, no matter who you're talking about.
# --instructions--
@@ -25,7 +25,7 @@ dashedName: task-25
## --sentence--
-`Sophie: That's cool! I like photography, but I _ think of it as a hobby. I play the guitar in my free time.`
+`That's cool! I like photography, but I _ _ of it as a hobby. I play the guitar in my free time.`
## --blanks--
@@ -33,7 +33,15 @@ dashedName: task-25
### --feedback--
-Софі говорить про те, чого вона не робить. В першому пропуску потрібно написати `don't`. Таким чином буде зрозуміло, що вона не вважає фотографію своїм хобі. В другому пропуску — початкову форму дієслова, яке описує, чим вона займається в вільний час, але без `don't`, оскільки це ствердження.
+She is talking about something she doesn't do.
+
+---
+
+`think`
+
+### --feedback--
+
+When after an auxiliary verb, the main verb is not conjugated.
# --scene--
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
index d6deb0a4b3e..f9d7d66b585 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/657b8597aaa5162475812ff8.md
@@ -10,7 +10,7 @@ Tom: Cool! I want to hear you play some day. -->
# --description--
-Якщо ви хочете сказати, що хтось збирається зробити щось в майбутньому, висловити бажання або намір, ви можете використати `want to`. Пам’ятайте, що `want to` не змінюється, навіть коли ви говорите про інших.
+When you want to talk about what someone hopes to do in the future, you can use `want to` to express desire or intention.
# --question--
@@ -20,15 +20,15 @@ Tom: Cool! I want to hear you play some day. -->
## --answers--
-`Yes, he wants to.`
-
----
-
`No, he doesn't want to.`
### --feedback--
-У діалозі сказано, що Том висловлює бажання почути гру Софі.
+Listen again and pay attention to see if Tom is really using a negative sentence.
+
+---
+
+`Yes, he wants to.`
---
@@ -44,11 +44,11 @@ Tom: Cool! I want to hear you play some day. -->
### --feedback--
-`Wanted` — минулий час. Том хоче почути гру Софі зараз.
+`Wanted` is past tense, but Tom is talking about the present.
## --video-solution--
-1
+2
# --scene--
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
index 3d274510221..0e365c444d5 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/657e0d0037192f3d9e3d5417.md
@@ -1,5 +1,5 @@
---
-id: 657e0d0037192f3d9e3d5417
+id: 657e0d0037192f3d9e3d5417
title: Завдання 128
challengeType: 22
dashedName: task-128
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
index 99cf90437ff..291540c80ed 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-describe-your-current-project/655bd2f3caad89436a3dcc04.md
@@ -11,12 +11,10 @@ dashedName: task-14
`Patterns` — це постійні та повторювані способи, якими щось відбувається або робиться. Така закономірність може вказувати на тенденції або поведінку.
-Наприклад, закономірністю в даних про клієнтів може бути те, що в спекотні дні частіше купують морозиво. Це `trend pattern`.
+For example, a `pattern` in customer data might be that more people use bows as accessories. Це `trend pattern`.
Існують також `cycle patterns` (наприклад, кав’ярня продає більше кави вранці).
-Розпізнавання закономірностей допомагає краще розуміти клієнтів.
-
`Patterns` можна відстежити в цифрах (наприклад, продажі зростають щомісяця) або в особливостях поведінки (наприклад, клієнти віддають перевагу покупкам в інтернеті).
# --fillInTheBlank--
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
index 4ca25193e96..ebc69139291 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e07a2fdda8d5ac93d415e.md
@@ -33,7 +33,7 @@ dashedName: task-7
### --feedback--
-Софі описує, що вона робить у своєму розпорядку після першої згаданої діяльності.
+Sophie is describing what she does next in her routine after the first activity she mentioned.
# --scene--
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
index 6e3874e7ed8..4dbc60de3c4 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-a-typical-workday-and-tasks/657e10ccd09f1d7e38f4b560.md
@@ -29,7 +29,7 @@ dashedName: task-14
### --feedback--
-Софі розповідає про те, як дедлайни допомагають їй підтримувати прогрес у досягненні цілей.
+Sophie is talking about how setting deadlines helps her maintain her progress towards her goals.
# --scene--
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
index 44140519c7d..043729f9ae5 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657e786b51f7eac240e92bcc.md
@@ -7,13 +7,19 @@ dashedName: task-31
# --description--
-Фраза `would you like` — ввічливий спосіб запропонувати щось або запитати когось, чи вони щось хочуть. Якщо ви пропонуєте щось, це можна вказати одразу після `would you like`. Наприклад, щоб запропонувати каву, ви можете сказати `Would you like some coffee?`. Якщо ви пропонуєте щось зробити (наприклад, `going shopping`), не забудьте використати `to` між виразом та дією. Наприклад, `Would you like to go shopping?`. Зрештою, якщо ви пропонуєте зробити щось за когось, використайте `me` між `would you like` та `to`. Наприклад, `Would you like me to make some coffee?`.
+Фраза `would you like` — ввічливий спосіб запропонувати щось або запитати когось, чи вони щось хочуть. Якщо ви пропонуєте щось, це можна вказати одразу після `would you like`.
+
+For instance, you might ask `Would you like some coffee?` when offering coffee to a guest.
+
+If you are proposing to do something, such as `going shopping`, remember to include `to` between the expression and the action.
+
+For example: `Would you like to go shopping?`. Finally, if you are asking someone if you should do something for them, use `me` between `would you like` and `to`. For example: `Would you like me to make some coffee?`.
# --question--
## --text--
-В якому реченні правильно використано `would you like`?
+In which sentence is `would you like` used correctly?
## --answers--
@@ -25,7 +31,7 @@ dashedName: task-31
### --feedback--
-Це речення неправильне. Правильно буде `Would you like me to make dinner tonight?`
+This sentence is not correct. A correct usage would be `Would you like me to make dinner tonight?`
---
@@ -33,7 +39,7 @@ dashedName: task-31
### --feedback--
-Це речення неправильне, оскільки `likes` не потребує закінчення `-s`. Правильно буде `Would you like a glass of water?`
+In this context, `like` doesn’t require the ending `-s` The correct form is `Would you like a glass of water?`
---
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
index faabb7b8773..8d7906e3a2f 100644
--- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-talk-about-hobbies-and-interests/657ee4171371e9d4d1402e91.md
@@ -26,7 +26,7 @@ dashedName: task-48
### --feedback--
-Частина виразу, що виражає підтвердження або згоду. Напишіть це слово з великої літери.
+This word is a pronoun. Напишіть це слово з великої літери.
---
@@ -34,7 +34,7 @@ dashedName: task-48
### --feedback--
-Частина виразу, що виражає підтвердження або згоду.
+Forms a common phrase indicating a strong affirmation.
# --scene--