feat(curriculum): add steps for employee profile generator workshop (#64896)

Co-authored-by: Ritam Pal <ritamjunior26@example.com>
Co-authored-by: Dario <105294544+Dario-DC@users.noreply.github.com>
This commit is contained in:
Ritam Pal
2026-02-09 22:18:03 +05:30
committed by GitHub
parent fb6c5d9ec1
commit 229635e880
21 changed files with 1027 additions and 0 deletions
+6
View File
@@ -3657,6 +3657,12 @@
"title": "Introduction to Strings",
"intro": ["In these lessons, you will learn about strings in Python."]
},
"workshop-employee-profile-generator": {
"title": "Build an Employee Profile Generator",
"intro": [
"In this workshop, you will practice the fundamentals of string manipulation in Python by building a tool that generates formatted employee badges and analyzes employee codes."
]
},
"lecture-numbers-and-mathematical-operations": {
"title": "Numbers and Mathematical Operations",
"intro": [
@@ -0,0 +1,51 @@
---
id: 694bf3af05d10fd89dab05cc
title: Step 2
challengeType: 20
dashedName: step-2
---
# --description--
In Python, you can combine strings using the `+` operator. This is called concatenation. Here is an example:
```python
greeting = 'Hello' + 'World'
print(greeting) # Output: HelloWorld
```
Create a variable `full_name` by concatenating `first_name` and `last_name`. Then print `full_name`.
# --hints--
You should have a variable named `full_name`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("full_name")`)) })
```
You should assign a string formed by concatenating `first_name` and `last_name` to your `full_name` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("full_name").is_equivalent("full_name = first_name + last_name")`)) })
```
You should print the `full_name` variable.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(full_name)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
print(first_name)
print(last_name)
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,36 @@
---
id: 694bf6ea530e19a9c48c59f0
title: Step 3
challengeType: 20
dashedName: step-3
---
# --description--
If you concatenate two strings like `'John' + 'Doe'`, the result is `'JohnDoe'` with no space. To fix this, you need to concatenate a string containing a space (`' '`) between them.
Update your `full_name` variable so it concatenates `first_name`, a space, and `last_name`.
# --hints--
You should add a space (`' '`) between `first_name` and `last_name`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("full_name").is_equivalent("full_name = first_name + ' ' + last_name")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
print(first_name)
print(last_name)
--fcc-editable-region--
full_name = first_name + last_name
--fcc-editable-region--
print(full_name)
```
@@ -0,0 +1,48 @@
---
id: 694bf6eb530e19a9c48c59f1
title: Step 5
challengeType: 20
dashedName: step-5
---
# --description--
Now, your address seems incomplete. You also want to add the apartment number where the employee lives, so you should modify the variable.
When you want to add content to the end of an existing string variable, you can use the **augmented assignment** operator ,`+=`. This is shorter than writing `var = var + 'new text'`. For example:
```py
greeting = 'Hello'
greeting += ' World'
print(greeting) # Hello World
```
Remember that strings are immutable, therefore this operation does not change the original string. Instead it creates a new string and reassigns it to the variable.
Use the `+=` operator to add the string `, Apartment 4B` to your `address` variable.
# --hints--
You should use the `+=` operator to add the string `, Apartment 4B` to the `address` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_aug_variable("address").is_equivalent("address += ', Apartment 4B'")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
print(first_name)
print(last_name)
full_name = first_name + ' ' + last_name
print(full_name)
address = '123 Main Street'
--fcc-editable-region--
--fcc-editable-region--
print(address)
```
@@ -0,0 +1,43 @@
---
id: 694bf6eb530e19a9c48c59f2
title: Step 11
challengeType: 20
dashedName: step-11
---
# --description--
Now complete the sentence by concatenating the string ` years old` to the end of `employee_info`. Remember to include a space at the beginning of your string.
Finally, print `employee_info`.
# --hints--
You should concatenate `' years old'` to the end of the `employee_info` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_info").is_equivalent("employee_info = full_name + ' is ' + str(employee_age) + ' years old'")`)) })
```
You should print `employee_info`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(employee_info)")`)) })
```
# --seed--
## --seed-contents--
```py
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
--fcc-editable-region--
employee_info = full_name + ' is ' + str(employee_age)
--fcc-editable-region--
```
@@ -0,0 +1,64 @@
---
id: 694bf6eb530e19a9c48c59f3
title: Step 12
challengeType: 20
dashedName: step-12
---
# --description--
Now you're going to use the `str()` function one more time. Just like with age, you must convert any numeric variable to a string before concatenating it with other text.
Create a variable named `experience_years` and assign it the integer `5`.
Then, create a variable `experience_info`. Assign it a string formed by concatenating `'Experience: '`, the `experience_years` variable (converted to a string), and `' years'`. Print the result to the terminal.
# --hints--
You should have a variable named `experience_years`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("experience_years")`)) })
```
You should assign the integer `5` to your `experience_years` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("experience_years").is_equivalent("experience_years = 5")`)) })
```
You should have a variable named `experience_info`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("experience_info")`)) })
```
You should assign a string formed by concatenating `'Experience: '`, `str(experience_years)`, and `' years'` to your `experience_info` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("experience_info").is_equivalent("experience_info = 'Experience: ' + str(experience_years) + ' years'")`)) })
```
You should print `experience_info`.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(experience_info)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,54 @@
---
id: 694bf6eb530e19a9c48c59f4
title: Step 13
challengeType: 20
dashedName: step-13
---
# --description--
Concatenating many strings using `+` and converting numbers using `str()` can get messy and hard to read.
Python 3.6 introduced **f-strings** to solve this. By adding the letter `f` before the opening quote, you can put variables and expressions inside replacement fields represented represented by curly braces `{}`. For example:
```python
name = 'John'
print(f'Hello {name}') # Output: Hello John
```
Create a variable `employee_card` and assign it an f-string that displays `Employee:` followed by a space and the value of the `full_name` variable.
# --hints--
You should have a variable named `employee_card`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("employee_card")`)) })
```
Your `employee_card` variable should have the value `f'Employee: {full_name}'`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_card").is_equivalent("employee_card = f'Employee: {full_name}'")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,80 @@
---
id: 694bf6eb530e19a9c48c59f5
title: Step 16
challengeType: 20
dashedName: step-16
---
# --description--
When working with strings, you'll often need to extract a specific portion of a string. This is called **slicing**.
The syntax is `string[start:stop]`, where:
* `start` is the index where the slice begins (**inclusive**).
* `stop` is the index where the slice ends (**exclusive**).
For example, if `text = 'Python'`, then `text[0:2]` gives `'Py'`.
Define `employee_code` as `'DEV-2026-JD-001'`. After that, create a variable `department` and assign it the slice of `employee_code` from index `0` to `3`. Then print `department` to the terminal.
# --hints--
You should have a variable named `employee_code`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("employee_code")`)) })
```
You should assign the string `DEV-2026-JD-001` to your `employee_code` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_code").is_equivalent("employee_code = 'DEV-2026-JD-001'")`)) })
```
You should have a variable named `department`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("department")`)) })
```
You should slice the first three characters of `employee_code` and assign them to your `department` variable.
```js
({ test: () => runPython(`
dep = _Node(_code).find_variable("department")
assert dep.is_equivalent("department = employee_code[0:3]") or dep.is_equivalent("department = employee_code[:3]")
`) })
```
You should print `department` to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(department)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
years_experience = 5
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
position = 'Data Analyst'
salary = 75000
employee_card = f'Employee: {full_name} | Age: {employee_age} | Position: {position} | Salary: ${salary}'
print(employee_card)
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,83 @@
---
id: 694bf6eb530e19a9c48c59f6
title: Step 17
challengeType: 20
dashedName: step-17
---
# --description--
You can slice from any part of the string, not just the beginning. And it is helpful in many cases.
Create a variable `year_code` and assign it the slice of `employee_code` from index `4` to `8`. This will extract `2026`.
Then create a variable `initials` and assign it the slice of `employee_code` from index `9` to `11`. This will extract `JD`.
Finally, print both variables to the terminal.
# --hints--
You should have a variable named `year_code`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("year_code")`)) })
```
You should slice `employee_code` from index `4` to `8` and assign the result to your `year_code` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("year_code").is_equivalent("year_code = employee_code[4:8]")`)) })
```
You should have a variable named `initials`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("initials")`)) })
```
You should slice `employee_code` from index `9` to `11` and assign the result to your `initials` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("initials").is_equivalent("initials = employee_code[9:11]")`)) })
```
You should print `year_code` to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(year_code)")`)) })
```
You should print `initials` to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(initials)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
years_experience = 5
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
position = 'Data Analyst'
salary = 75000
employee_card = f'Employee: {full_name} | Age: {employee_age} | Position: {position} | Salary: ${salary}'
print(employee_card)
employee_code = 'DEV-2026-JD-001'
department = employee_code[0:3]
print(department)
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,98 @@
---
id: 694bf6eb530e19a9c48c59f7
title: Step 18
challengeType: 20
dashedName: step-18
---
# --description--
You can also use negative numbers to slice from the end of a string. For example, `-1` refers to the last character, `-2` refers to the second-to-last character, and so on.
To get the last three characters of a string, you can use `string[-3:]`. Note how the stop parameter is omitted after the colon. This means the slicing should proceed up to the string boundary.
Create a variable named `last_three`. Use negative indexing to extract the last three characters from `employee_code` (which represent the ID number). Finally, print `last_three` to the terminal.
With that, the employee card workshop is complete.
# --hints--
You should have a variable named `last_three`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("last_three")`)) })
```
You should slice the last three characters of `employee_code` using negative indexing and assign them your `last_three` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("last_three").is_equivalent("last_three = employee_code[-3:]")`)) })
```
You should print `last_three` to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(last_three)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
years_experience = 5
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
position = 'Data Analyst'
salary = 75000
employee_card = f'Employee: {full_name} | Age: {employee_age} | Position: {position} | Salary: ${salary}'
print(employee_card)
employee_code = 'DEV-2026-JD-001'
department = employee_code[0:3]
print(department)
year_code = employee_code[4:8]
print(year_code)
initials = employee_code[9:11]
print(initials)
--fcc-editable-region--
--fcc-editable-region--
```
# --solutions--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
position = 'Data Analyst'
salary = 75000
employee_card = f'Employee: {full_name} | Age: {employee_age} | Position: {position} | Salary: ${salary}'
print(employee_card)
employee_code = 'DEV-2024-JD-001'
department = employee_code[0:3]
print(department)
year_code = employee_code[4:8]
initials = employee_code[9:11]
print(year_code)
print(initials)
last_three = employee_code[-3:]
print(last_three)
```
@@ -0,0 +1,65 @@
---
id: 695c96f82af4fb78e59fa9ed
title: Step 1
challengeType: 20
dashedName: step-1
---
# --description--
Strings are sequences of characters used to store text data. As you might recall from previous lessons, you can create a string by enclosing text inside either single (`'`) or double (`"`) quotes. For example:
```python
greeting = 'Hello'
print(greeting) # Output: Hello
```
Create a variable `first_name` which stores the string `John` and a variable `last_name` which stores the string `Doe`. Then print `first_name` and `last_name`.
# --hints--
You should have a variable named `first_name`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("first_name")`)) })
```
You should assign the string `John` to your `first_name` variable. Remember to enclose the text between either single or double quotes.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("first_name").is_equivalent("first_name = 'John'")`)) })
```
You should have a variable named `last_name`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("last_name")`)) })
```
You should assign the string `Doe` to your `last_name` variable. Remember to enclose the text between either single or double quotes.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("last_name").is_equivalent("last_name = 'Doe'")`)) })
```
You should print your `first_name` variable to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(first_name)")`)) })
```
You should print your `last_name` variable to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(last_name)")`)) })
```
# --seed--
## --seed-contents--
```python
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,47 @@
---
id: 695c9c7c61d446f1451e0ae7
title: Step 4
challengeType: 20
dashedName: step-4
---
# --description--
Next, create a variable `address` to store the employee's address. Assign it the string `123 Main Street`, and finally print `address`.
# --hints--
You should have a variable named `address`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("address")`)) })
```
You should assign the string `123 Main Street` to your `address` variable. Remember to enclose the text between either single or double quotes.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("address").is_equivalent("address = '123 Main Street'")`)) })
```
You should print the `address` variable.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(address)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
print(first_name)
print(last_name)
full_name = first_name + ' ' + last_name
print(full_name)
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,41 @@
---
id: 695c9f21a8b1d53cf1b97841
title: Step 7
challengeType: 20
dashedName: step-7
---
# --description--
Now create a variable named `employee_age` and assign it the integer `28`.
# --hints--
You should have a variable named `employee_age`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("employee_age")`)) })
```
You should assign the integer `28` to your `employee_age` variable. Do not surround the text with quotes.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_age").is_equivalent("employee_age = 28")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,45 @@
---
id: 695df6480de23758af5a29cd
title: Step 8
challengeType: 20
dashedName: step-8
---
# --description--
Now, you want to create a string that displays the employee's age.
Start by creating a variable `employee_info` and assign it the result of concatenating:
- the `full_name` variable.
- a string consisting of the characters `is` preceded and followed by a space.
# --hints--
You should have a variable named `employee_info`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("employee_info")`)) })
```
You should assign `full_name + ' is '` to your `employee_info` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_info").is_equivalent("employee_info = full_name + ' is '")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
--fcc-editable-region--
--fcc-editable-region--
```
@@ -0,0 +1,43 @@
---
id: 695ea1e55c0e619e597fc5c9
title: Step 10
challengeType: 20
dashedName: step-10
---
# --description--
As you can see Python raised a `TypeError: can only concatenate str (not "int") to str`. This happens because Python does not allow you to concatenate text (strings) and numbers (integers) directly.
To fix this, you must convert the number to a string first using the `str()` function, which returns the string version of an object:
```py
my_num = str(42)
print(type(my_num)) # <class 'str'>
```
Update your `employee_info` assignment to convert `employee_age` to a string using `str(employee_age)`.
# --hints--
You should modify the assignment of your `employee_info` variable by converting `employee_age` into a string with `str(employee_age)`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_info").is_equivalent("employee_info = full_name + ' is ' + str(employee_age)")`)) })
```
# --seed--
## --seed-contents--
```python
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
--fcc-editable-region--
employee_info = full_name + ' is ' + employee_age
--fcc-editable-region--
```
@@ -0,0 +1,38 @@
---
id: 695fcfbba648b3a96a9495a4
title: Step 6
challengeType: 20
dashedName: step-6
---
# --description--
The output in the terminal is getting crowded. Before you continue, it's time to clean it up.
Remove all the `print()` statements from your code.
# --hints--
You should not have any `print` calls in your code.
```js
({ test: () => assert(runPython(`len(_Node(_code).find_calls("print")) == 0`)) })
```
# --seed--
## --seed-contents--
```py
first_name = 'John'
last_name = 'Doe'
--fcc-editable-region--
print(first_name)
print(last_name)
full_name = first_name + ' ' + last_name
print(full_name)
address = '123 Main Street'
address += ', Apartment 4B'
print(address)
--fcc-editable-region--
```
@@ -0,0 +1,37 @@
---
id: 695fd3dde03273875e5d6709
title: Step 9
challengeType: 20
dashedName: step-9
---
# --description--
Now try to concatenate `employee_age` to the end of your `employee_info` string.
Once you've done so, you'll see a `TypeError` in the terminal. In the next step, you'll work on fixing it.
# --hints--
You should concatenate `employee_age` to the end of `employee_info`.
```js
const regex = /^employee_info\s*=\s*full_name\s*\+\s*(["']) is \1\s*\+\s*employee_age\s*$/m;
assert.match(__helpers.python.removeComments(code), regex);
```
# --seed--
## --seed-contents--
```py
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
--fcc-editable-region--
employee_info = full_name + ' is '
--fcc-editable-region--
```
@@ -0,0 +1,76 @@
---
id: 69727ea5c9606bedfe36d3d2
title: Step 15
challengeType: 20
dashedName: step-15
---
# --description--
Now it's time to add the final details to the card.
Create a variable named `position` with the value of the string `Data Analyst` and a variable named `salary` with the value of the integer `75000`.
Then, update your `employee_card` f-string to include the position and salary. It should follow this exact format: `Employee: [full_name] | Age: [employee_age] | Position: [position] | Salary: $[salary]`. Replace the placeholders with the corresponding variables.
Finally, print `employee_card` to see the result.
# --hints--
You should have a variable named `position`.
```js
({ test: () => assert(runPython(`_Node(_code).has_variable("position")`)) })
```
You should assign the string `Data Analyst` to your `position` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("position").is_equivalent("position = 'Data Analyst'")`)) })
```
You should have a variable named `salary`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("salary").is_equivalent("salary = 75000")`)) })
```
You should assign the integer `75000` to your `salary` variable.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("salary").is_equivalent("salary = 75000")`)) })
```
You should update `employee_card` to use the f-string `f'Employee: {full_name} | Age: {employee_age} | Position: {position} | Salary: ${salary}'`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_card").is_equivalent("employee_card = f'Employee: {full_name} | Age: {employee_age} | Position: {position} | Salary: \${salary}'")`)) })
```
You should print `employee_card` to the terminal.
```js
({ test: () => assert(runPython(`_Node(_code).has_call("print(employee_card)")`))})
```
# --seed--
## --seed-contents--
```py
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
--fcc-editable-region--
employee_card = f'Employee: {full_name} | Age: {employee_age}'
--fcc-editable-region--
```
@@ -0,0 +1,41 @@
---
id: 6980d3ecfe800d8a54130f30
title: Step 14
challengeType: 20
dashedName: step-14
---
# --description--
Currently, `employee_card` only shows the employee's name. Now you're going to add more information to it.
Update the `employee_card` assignment to include the employee's age. The final string should look like this: `Employee: [name] | Age: [age]` with `[name]` replaced with the employee's name, and `[age]` replaced with the employee's age.
# --hints--
You should update `employee_card` to use the f-string `f'Employee: {full_name} | Age: {employee_age}'`.
```js
({ test: () => assert(runPython(`_Node(_code).find_variable("employee_card").is_equivalent("employee_card = f'Employee: {full_name} | Age: {employee_age}'")`)) })
```
# --seed--
## --seed-contents--
```py
first_name = 'John'
last_name = 'Doe'
full_name = first_name + ' ' + last_name
address = '123 Main Street'
address += ', Apartment 4B'
employee_age = 28
employee_info = full_name + ' is ' + str(employee_age) + ' years old'
print(employee_info)
experience_years = 5
experience_info = 'Experience: ' + str(experience_years) + ' years'
print(experience_info)
--fcc-editable-region--
employee_card = f'Employee: {full_name}'
--fcc-editable-region--
```
@@ -0,0 +1,30 @@
{
"name": "Build an Employee Profile Generator",
"isUpcomingChange": false,
"dashedName": "workshop-employee-profile-generator",
"helpCategory": "Python",
"blockLayout": "challenge-grid",
"challengeOrder": [
{ "id": "695c96f82af4fb78e59fa9ed", "title": "Step 1" },
{ "id": "694bf3af05d10fd89dab05cc", "title": "Step 2" },
{ "id": "694bf6ea530e19a9c48c59f0", "title": "Step 3" },
{ "id": "695c9c7c61d446f1451e0ae7", "title": "Step 4" },
{ "id": "694bf6eb530e19a9c48c59f1", "title": "Step 5" },
{ "id": "695fcfbba648b3a96a9495a4", "title": "Step 6" },
{ "id": "695c9f21a8b1d53cf1b97841", "title": "Step 7" },
{ "id": "695df6480de23758af5a29cd", "title": "Step 8" },
{ "id": "695fd3dde03273875e5d6709", "title": "Step 9" },
{ "id": "695ea1e55c0e619e597fc5c9", "title": "Step 10" },
{ "id": "694bf6eb530e19a9c48c59f2", "title": "Step 11" },
{ "id": "694bf6eb530e19a9c48c59f3", "title": "Step 12" },
{ "id": "694bf6eb530e19a9c48c59f4", "title": "Step 13" },
{ "id": "6980d3ecfe800d8a54130f30", "title": "Step 14" },
{ "id": "69727ea5c9606bedfe36d3d2", "title": "Step 15" },
{ "id": "694bf6eb530e19a9c48c59f5", "title": "Step 16" },
{ "id": "694bf6eb530e19a9c48c59f6", "title": "Step 17" },
{ "id": "694bf6eb530e19a9c48c59f7", "title": "Step 18" }
],
"blockLabel": "workshop",
"usesMultifileEditor": true,
"hasEditableBoundaries": true
}
@@ -10,6 +10,7 @@
"lecture-understanding-variables-and-data-types",
"workshop-report-card-printer",
"lecture-introduction-to-python-strings",
"workshop-employee-profile-generator",
"lecture-numbers-and-mathematical-operations",
"lecture-booleans-and-conditionals",
"workshop-movie-ticket-booking-calculator",