Skip to content

Commit a13daf1

Browse files
committed
Sample code for the article on string formatting
1 parent ed5aeeb commit a13daf1

File tree

3 files changed

+112
-0
lines changed

3 files changed

+112
-0
lines changed

python-string-formatting/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Python String Formatting: Available Tools and Their Features
2+
3+
This folder provides the code examples for the Real Python tutorial [Python String Formatting: Available Tools and Their Features](https://realpython.com/python-string-formatting/).
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
student = {
2+
"name": "John Doe",
3+
"subjects": [
4+
{
5+
"name": "Mathematics",
6+
"grade": 88,
7+
"comment": "Excellent improvement.",
8+
},
9+
{
10+
"name": "Science",
11+
"grade": 92,
12+
"comment": "Outstanding performance.",
13+
},
14+
{
15+
"name": "History",
16+
"grade": 78,
17+
"comment": "Needs to participate more.",
18+
},
19+
{"name": "Art", "grade": 85, "comment": "Very creative."},
20+
],
21+
}
22+
23+
24+
# def build_student_report(student):
25+
# report_header = f"Progress Report. Student: {student['name']}"
26+
27+
# total = sum(subject["grade"] for subject in student["subjects"])
28+
# average = total / len(student["subjects"])
29+
# average_report = f"Average: {average:.2f} / 100\n"
30+
31+
# subject_report = "Course Details:\n"
32+
# for subject in student["subjects"]:
33+
# subject_report += (
34+
# f"{subject['name']:<15} "
35+
# f"Grade: {subject['grade']:3} "
36+
# f"Comment: {subject['comment']}\n"
37+
# )
38+
39+
# report = f"""
40+
# {report_header}
41+
# {average_report}
42+
# {subject_report}
43+
# Thank you for reviewing the progress report.
44+
# """
45+
46+
# return report
47+
48+
49+
def build_student_report(student):
50+
report_header = f"Progress Report. Student: {student['name']}"
51+
52+
total = sum(subject["grade"] for subject in student["subjects"])
53+
average = total / len(student["subjects"])
54+
average_report = f"Average: {average:.2f} / 100\n"
55+
56+
subject_report = "Course Details:\n"
57+
detail_template = "{name:<15} Grade: {grade:3} Comment: {comment}\n"
58+
for subject in student["subjects"]:
59+
subject_report += detail_template.format(**subject)
60+
61+
report = f"""
62+
{report_header}
63+
{average_report}
64+
{subject_report}
65+
Thank you for reviewing the progress report.
66+
"""
67+
68+
return report
69+
70+
71+
print(build_student_report(student))
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
REPORT_TEMPLATE = """
2+
Monthly Sales Report
3+
--------------------
4+
Report Date Range: {start_date} to {end_date}
5+
6+
Number of Transactions: {sep:.>20} {transactions:,}
7+
Average Transaction Value: {sep:.>11} ${avg_transaction:,.2f}
8+
9+
Total Sales: {sep:.>23} ${total_sales:,.2f}
10+
"""
11+
12+
13+
def build_sales_report(sales_data, report_template=REPORT_TEMPLATE):
14+
total_sales = sum(sale["amount"] for sale in sales_data)
15+
transactions = len(sales_data)
16+
avg_transaction = total_sales / transactions
17+
18+
report = report_template.format(
19+
sep=".",
20+
start_date=sales_data[0]["date"],
21+
end_date=sales_data[-1]["date"],
22+
total_sales=total_sales,
23+
transactions=transactions,
24+
avg_transaction=avg_transaction,
25+
)
26+
27+
return report
28+
29+
30+
sales_data = [
31+
{"date": "2024-04-01", "amount": 100},
32+
{"date": "2024-04-02", "amount": 200},
33+
{"date": "2024-04-03", "amount": 300},
34+
{"date": "2024-04-04", "amount": 400},
35+
{"date": "2024-04-05", "amount": 500},
36+
]
37+
38+
print(build_sales_report(sales_data))

0 commit comments

Comments
 (0)