Emoji Print
It is easy to add an emoji to a message in code. However, using the emoji library or other libraries often requires you to install code on your machine. Before using a library, that is not part of Python distribution, you must install with pip
# terminal command to install library
$ pip install emoji
Collecting emoji
Downloading emoji-2.5.1.tar.gz (356 kB)
...
Successfully installed emoji-2.5.1
#!pip install emoji
from emoji import emojize
print(emojize(":thumbs_up: Python is awesome! :grinning_face:"))
Extracting Data
Web sites become a lot more interesting when you are working with data, not trying to create it. Here is some code using a library called newspaper, this extracts a couple of writeups from the CNN Entertainment site.
- Learn more on newspaper3k
- Learn about library for wikipedia
Explanation of code (1):
This Python script utilizes the newspaper3k library to scrape and summarize articles from two specified URLs. It also employs the IPython.display module to present the article’s title and text within a Jupyter Notebook.
The code imports necessary libraries, including newspaper3k for web scraping, Article for article representation, and IPython.display for content display.
A list named urls contains the URLs of the articles to be processed.
A loop iterates through each URL in the urls list.
For each URL, an Article object is created, and the web page’s HTML content is downloaded and parsed.
Using display(Markdown()), the code presents the article’s title and text in Markdown format within the Jupyter Notebook.
A newline character is printed to separate the displayed content for clarity.
Explanation of code (2):
This Python script uses the wikipedia library to search for and display summaries of Wikipedia pages for two specified terms: “Python (programming language)” and “JavaScript.” It prints each term and displays its Wikipedia summary in a Jupyter Notebook using Markdown formatting.
#!pip install newspaper3k
from newspaper import Article
from IPython.display import display, Markdown
urls = ["http://cnn.com/2023/03/29/entertainment/the-mandalorian-episode-5-recap/index.html",
"https://www.cnn.com/2023/06/09/entertainment/jurassic-park-anniversary/index.html"]
for url in urls:
article = Article(url)
article.download()
article.parse()
# Jupyter Notebook Display
# print(article.title)
display(Markdown(article.title)) # Jupyter display only
display(Markdown(article.text)) # Jupyter display only
print("\n")
#!pip install wikipedia
import wikipedia
from IPython.display import display, Markdown # add for Jupyter
terms = ["Python (programming language)", "JavaScript"]
for term in terms:
# Search for a page
result = wikipedia.search(term)
# Get the summary of the first result
summary = wikipedia.summary(result[0])
print(term)
# print(summary) # console display
display(Markdown(summary)) # Jupyter display
Inspecting a Function
The inspect module can give you the output of what’s inside many Python functions/objects. This can help you explore code behind what you are using.
- Inspect documentation.
import inspect
from newspaper import Article
# inspect newspaper Article function
print(inspect.getsource(Article))
Python Data Types
Dynamic typing means that the type of the variable is determined only during runtime. Strong typing means that variables do have a type and that the type matters when performing operations. In the illustration below there are two functions
- mean… shows types required prior to calling average function
- average, average2… calculates the average of a list of numbers
Python has types. In the language you can use type hints, but most coders do not use them. In other languages like Java and ‘C’ you must specify types.
Exaplanation of code:
This Python script defines a mean() function to calculate the mean (average) of a list of scores. It supports both single scores and lists of scores. The function offers two calculation methods: one using a for loop and the other using the built-in sum() function. The result is rounded to two decimal places. The script provides examples of using the function with single scores, lists of scores, and handles “bad data” within the list by printing an error message and exiting when non-numeric values are encountered.
import sys
from typing import Union
# Define types for mean function, trying to analyze input possibilities
Number = Union[int, float] # Number can be either int or float type
Numbers = list[Number] # Numbers is a list of Number types
Scores = Union[Number, Numbers] # Scores can be single or multiple
def mean(scores: Scores, method: int = 1) -> float:
"""
Calculate the mean of a list of scores.
Average and Average2 are hidden functions performing mean algorithm
If a single score is provided in scores, it is returned as the mean.
If a list of scores is provided, the average is calculated and returned.
"""
def average(scores):
"""Calculate the average of a list of scores using a Python for loop with rounding."""
sum = 0
len = 0
for score in scores:
if isinstance(score, Number):
sum += score
len += 1
else:
print("Bad data: " + str(score) + " in " + str(scores))
sys.exit()
return sum / len
def average2(scores):
"""Calculate the average of a list of scores using the built-in sum() function with rounding."""
return sum(scores) / len(scores)
# test to see if scores is a list of numbers
if isinstance(scores, list):
if method == 1:
# long method
result = average(scores)
else:
# built in method
result = average2(scores)
return round(result + 0.005, 2)
return scores # case where scores is a single valu
# try with one number
singleScore = 100
print("Print test data: " + str(singleScore)) # concat data for single line
print("Mean of single number: " + str(mean(singleScore)))
print()
# define a list of numbers
testScores = [90.5, 100, 85.4, 88]
print("Print test data: " + str(testScores))
print("Average score, loop method: " + str(mean(testScores)))
print("Average score, function method: " + str(mean(testScores, 2)))
print()
badData = [100, "NaN", 90]
print("Print test data: " + str(badData))
print("Mean with bad data: " + str(mean(badData)))
Hacks
Here is a summary of some of the things learned above.
- Formatting messages with emoji
- Exploring data with newspaper and wikipedia libraries
- Finding code on how the library we used was made
- Learning about data types while writing an algorithm for mean
Part of Project Based learning is the idea of combining concepts to form something more interesting. Make a plan, form some ideas, brainstorm ideas with pair. Produce something that is interesting and challenging. Samples…
- Could I get input from user to look up wikipedia information? Python input, Article on Input
- What could I learn in Python about Stats to get Machine Learning Read? Stats Calculations
- Could I add emoji to an extracted article? String Find, String Methods