diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 94cd922b40e..e3bb3aabdea 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -3799,9 +3799,9 @@ "title": "Placeholder - Waiting for title", "intro": [""] }, - "lab-placeholder-loops-and-sequences": { - "title": "Placeholder - waiting for title", - "intro": [""] + "lab-number-pattern-generator": { + "title": "Build a Number Pattern Generator", + "intro": ["In this lab you will build a number pattern generator."] }, "review-loops-and-sequences": { "title": "Loops and Sequences Review", @@ -3998,10 +3998,7 @@ "In this workshop, you'll implement the merge sort algorithm to sort a list of random numbers." ] }, - "lab-quick-sort": { - "title": "Build a Quick Sort", - "intro": [""] - }, + "lab-quick-sort": { "title": "Build a Quick Sort", "intro": [""] }, "lab-selection-sort": { "title": "Implement the Selection Sort Algorithm", "intro": [ diff --git a/client/src/pages/learn/full-stack-developer/lab-number-pattern-generator/index.md b/client/src/pages/learn/full-stack-developer/lab-number-pattern-generator/index.md new file mode 100644 index 00000000000..5693b50410b --- /dev/null +++ b/client/src/pages/learn/full-stack-developer/lab-number-pattern-generator/index.md @@ -0,0 +1,9 @@ +--- +title: Introduction to the Build a Number Pattern Generator +block: lab-number-pattern-generator +superBlock: full-stack-developer +--- + +## Introduction to the Build a Number Pattern Generator + +In this lab you will build a number pattern generator. diff --git a/curriculum/challenges/_meta/lab-number-pattern-generator/meta.json b/curriculum/challenges/_meta/lab-number-pattern-generator/meta.json new file mode 100644 index 00000000000..bb54b8e842b --- /dev/null +++ b/curriculum/challenges/_meta/lab-number-pattern-generator/meta.json @@ -0,0 +1,15 @@ +{ + "name": "Build a Number Pattern Generator", + "blockLayout": "link", + "blockType": "lab", + "isUpcomingChange": true, + "dashedName": "lab-number-pattern-generator", + "superBlock": "full-stack-developer", + "challengeOrder": [ + { + "id": "6842a6cd9836f0114a5b7a8a", + "title": "Build a Number Pattern Generator" + } + ], + "helpCategory": "Python" +} diff --git a/curriculum/challenges/english/25-front-end-development/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md b/curriculum/challenges/english/25-front-end-development/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md new file mode 100644 index 00000000000..9eee40de51e --- /dev/null +++ b/curriculum/challenges/english/25-front-end-development/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md @@ -0,0 +1,131 @@ +--- +id: 6842a6cd9836f0114a5b7a8a +title: Build a Number Pattern Generator +challengeType: 27 +dashedName: build-a-number-pattern-generator +--- + +# --description-- + +In this lab you will practice the basics of Python by building a small app that creates a number pattern. + +Fulfill the user stories below and get all the tests to pass to complete the lab. + +**User Stories:** + +1. You should define a function named `number_pattern` that takes a single parameter `n` (representing a positive integer). +1. `number_pattern` should use a `for` loop. +1. `number_pattern(n)` should return a string with all the integers starting from 1 up to `n` (included) separated by a space. For example, `number_pattern(4)` should return the string `1 2 3 4`. +1. If the argument passed to the function is not an integer value, the function should return `Argument must be an integer value.`. +1. If the argument passed to the function is less than 1, the function should return `Argument must be an integer greater than 0.`. + +# --hints-- + +You should have a `number_patter` function. + +```js +({ + test: () => runPython(` + assert _Node(_code).has_function('number_pattern') + `) +}) +``` + +The `number_pattern` function should have one parameter named `n`. + +```js +({ + test: () => runPython(` + assert _Node(_code).find_function('number_pattern').has_args('n') + `) +}) +``` + +`number_pattern(4)` should return `1 2 3 4`. + +```js +({ + test: () => runPython(` + assert number_pattern(4) == '1 2 3 4' + `) +}) +``` + +`number_pattern(12)` should return `1 2 3 4 5 6 7 8 9 10 11 12`. + +```js +({ + test: () => runPython(` + assert number_pattern(12) == '1 2 3 4 5 6 7 8 9 10 11 12' + `) +}) +``` + +`number_pattern` should return a space separated list of numbers for any positive integer. + +```js +({ + test: () => runPython(` + from random import randint + n = randint(1,65) + ls = ' '.join(map(lambda n: str(n), list(range(1, n+1)))) + assert number_pattern(n) == ls + + n2 = randint(34,122) + ls2 = ' '.join(map(lambda n: str(n), list(range(1, n2+1)))) + assert number_pattern(n2) == ls2 + + `) +}) +``` + +`number_pattern` should return `Argument must be an integer value.` when passed a value that is not an integer. + +```js +({ + test: () => runPython(` + string = 'Argument must be an integer value.' + assert number_pattern('a') == string + assert number_pattern(3.5) == string + assert number_pattern(lambda n: n) == string + `) +}) +``` + +`number_pattern` should return `Argument must be an integer greater than 0.` when passed a non-positive integer. + +```js +({ + test: () => runPython(` + from random import randint + string = 'Argument must be an integer greater than 0.' + assert number_pattern(0) == string + assert number_pattern(-1185) == string + assert number_pattern(-45) == string + assert number_pattern(randint(-9999999, 0)) == string + `) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +``` + +# --solutions-- + +```py +def number_pattern(n): + result = "1" + if isinstance(n, int): + if n > 0: + for i in range(2, n + 1): + result += f" {i}" + return result + return "Argument must be an integer greater than 0." + return "Argument must be an integer value." + +``` diff --git a/curriculum/superblock-structure/full-stack.json b/curriculum/superblock-structure/full-stack.json index 5946ed03154..7ed7e2caed2 100644 --- a/curriculum/superblock-structure/full-stack.json +++ b/curriculum/superblock-structure/full-stack.json @@ -1194,7 +1194,7 @@ "blocks": [ { "dashedName": "lecture-working-with-loops-and-sequences" }, { "dashedName": "workshop-placeholder-loops-and-sequences" }, - { "dashedName": "lab-placeholder-loops-and-sequences" }, + { "dashedName": "lab-number-pattern-generator" }, { "dashedName": "review-loops-and-sequences" }, { "dashedName": "quiz-loops-and-sequences" } ]