from emoji import emojize
print(emojize(":thumbs_up: I love CSP :winking_face_with_tongue:"))

👍 I love CSP 😜
import wikipedia 
from IPython.display import display, Markdown # add for Jupyter

terms = ["United States", "Tetris"]
for term in terms:
    # Search for a page 
    result = wikipedia.search(term)
    # Get the summary of the first result
    summary = wikipedia.summary(result[5])
    print(term) 
    # print(summary) # console display
    display(Markdown(summary)) # Jupyter display
United States

The term “United States,” when used in the geographical sense, refers to the contiguous United States (sometimes referred to as the Lower 48), the state of Alaska, the island state of Hawaii, the five insular territories of Puerto Rico, Northern Mariana Islands, U.S. Virgin Islands, Guam, and American Samoa, and minor outlying possessions. The United States shares land borders with Canada and Mexico and maritime borders with Russia, Cuba, The Bahamas, and many other countries, mainly in the Caribbeanin addition to Canada and Mexico. The northern border of the United States with Canada is the world’s longest bi-national land border.

Tetris

Tetris was a puzzle video game developed by EA Mobile and published by Electronic Arts for iOS, Android, BlackBerry OS, and Windows Phone. The game featured gameplay like other Tetris titles, with a new soundtrack. The game reached 100 million paid downloads by 2010, making it the best-selling paid mobile game of all time, and third best-selling game of all time altogether. It was discontinued and rendered inoperative in 2020 after EA’s license expired.

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)))

Print test data: 100
Mean of single number: 100

Print test data: [90.5, 100, 85.4, 88]
Average score, loop method: 90.98
Average score, function method: 90.98

Print test data: [100, 'NaN', 90]
Bad data: NaN in [100, 'NaN', 90]



An exception has occurred, use %tb to see the full traceback.


SystemExit



/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py:3465: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)