Python Become a MasterChapter 41

Intermediate Level Exercises

Section 1 of 1-~ 12 min read-Synced from Cuantum content

Exercise 1: Web Scraping

Concepts:

  • HTTP requests using the requests module
  • HTML parsing using BeautifulSoup

Description: Web scraping is a common task for many Python programmers. In this exercise, you'll write a script that scrapes data from a website.

Solution:

import requestsfrom bs4 import BeautifulSoup url = 'https://www.example.com'response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser') # Find all links on the pagelinks = soup.find_all('a')for link in links:    print(link.get('href'))

Exercise 2: File I/O

Concepts:

  • Reading and writing files using Python's built-in open() function
  • String manipulation

Description: Working with files is an essential part of any programming language. In this exercise, you'll write a script that reads data from a file and writes data to a file.

Solution:

# Read data from a filewith open('input.txt', 'r') as f:    data = f.read() # Manipulate the datadata = data.upper() # Write data to a filewith open('output.txt', 'w') as f:    f.write(data)

Exercise 3: Data Analysis

Concepts:

  • Reading data from a CSV file using Pandas
  • Data manipulation using Pandas
  • Basic data analysis using Pandas

Description: Python has a vast ecosystem of libraries for data analysis. In this exercise, you'll use the Pandas library to read data from a CSV file and perform some basic data analysis.

Solution:

import pandas as pd # Read data from a CSV filedata = pd.read_csv('data.csv') # Display the first 5 rows of the dataprint(data.head()) # Calculate some basic statisticsprint(data.describe())

Exercise 4: Command-Line Interface

Concepts:

  • Command-line arguments using the argparse module
  • String manipulation

Description: Python can be used to create command-line tools. In this exercise, you'll write a script that accepts command-line arguments and performs a task based on those arguments.

Solution:

import argparse # Create an argument parserparser = argparse.ArgumentParser()parser.add_argument('name', help='Your name')parser.add_argument('age', type=int, help='Your age')args = parser.parse_args() # Print a greetinggreeting = f'Hello, {args.name}! You are {args.age} years old.'print(greeting)

Exercise 5: API Integration

Concepts:

  • HTTP requests using the requests module
  • JSON parsing

Description: Many modern applications have APIs that can be accessed programmatically. In this exercise, you'll write a script that interacts with a RESTful API.

Solution:

import requests # Make a GET request to an APIurl = 'https://api.example.com/users'response = requests.get(url) # Parse the response as JSONdata = response.json() # Display the datafor user in data:    print(user['name'], user['email'])

Exercise 6: Regular Expressions

Concepts:

  • Regular expressions using the re module
  • User input validation

Description: Regular expressions are powerful tools for pattern matching and data validation. In this exercise, you'll write a script that uses regular expressions to validate user input.

Solution:

import re # Define a regular expression pattern for email validationpattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' # Get user inputemail = input('Enter your email address: ') # Validate the input using the regular expressionif re.match(pattern, email):    print('Valid email address')else:    print('Invalid email address')

Exercise 7: Object-Oriented Programming

Concepts:

  • Classes and objects
  • Encapsulation
  • Inheritance

Description: Object-oriented programming is a fundamental concept in Python. In this exercise, you'll write a simple class that demonstrates the principles of object-oriented programming.

Solution:

class Person:    def __init__(self, name, age):        self.name = name        self.age = age     def greet(self):        print(f'Hello, my name is {self.name} and I am {self.age} years old.') class Student(Person):    def __init__(self, name, age, major):        super().__init__(name, age)        self.major = major     def describe(self):        print(f'I am a student majoring in {self.major}.') # Create objects and call methodsperson = Person('Alice', 25)person.greet() student = Student('Bob', 20, 'Computer Science')student.greet()student.describe()

Exercise 8: Concurrency

Concepts:

  • Threading using the threading module
  • Synchronization using locks

Description: Python has powerful concurrency features that allow you to write concurrent and parallel programs. In this exercise, you'll write a script that demonstrates concurrent programming using threads.

Solution:

import threading counter = 0lock = threading.Lock() def increment():    global counter    with lock:        counter += 1 threads = []for i in range(10):    t = threading.Thread(target=increment)    threads.append(t)    t.start() for t in threads:    t.join() print(f'The counter is {counter}.')

Exercise 9: Testing

Concepts:

  • Unit testing using the unittest module
  • Test-driven development

Description: Testing is a crucial part of software development. In this exercise, you'll write unit tests for a simple function.

Solution:

import unittest def is_palindrome(s):    return s == s[::-1] class TestPalindrome(unittest.TestCase):    def test_is_palindrome(self):        self.assertTrue(is_palindrome('racecar'))        self.assertFalse(is_palindrome('hello')) if __name__ == '__main__':    unittest.main()

Exercise 10: Data Visualization

Concepts:

  • Data visualization using Matplotlib
  • Line charts

Description: Data visualization is an essential part of data analysis. In this exercise, you'll use the Matplotlib library to create a simple line chart.

Solution:

import matplotlib.pyplot as plt # Create some datax = [1, 2, 3, 4, 5]y = [2, 4, 6, 8, 10] # Create a line chartplt.plot(x, y) # Add labels and a titleplt.xlabel('X values')plt.ylabel('Y values')plt.title('Line chart') # Display the chartplt.show()

Exercise 11: Database Operations

Concepts:

  • Connecting to a database using the SQLite3 module
  • Creating tables and inserting data
  • Querying data using SQL

Description: Python has a wide variety of libraries for working with databases. In this exercise, you'll write a script that performs some common database operations.

Solution:

import sqlite3 # Connect to the databaseconn = sqlite3.connect('example.db') # Create a tableconn.execute('''CREATE TABLE IF NOT EXISTS users                (id INTEGER PRIMARY KEY,                 name TEXT,                 email TEXT)''') # Insert some dataconn.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', 'alice@example.com'))conn.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Bob', 'bob@example.com')) # Query the datacursor = conn.execute("SELECT id, name, email FROM users")for row in cursor:    print(f'{row[0]} - {row[1]} ({row[2]})') # Close the database connectionconn.close()

Exercise 12: Networking

Concepts:

  • Socket programming using the socket module
  • Server-client architecture

Description: Python has excellent networking capabilities, allowing you to build network applications. In this exercise, you'll write a script that implements a simple server and client.

Solution:

# Server codeimport socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.bind(('localhost', 8000))server_socket.listen(1) while True:    client_socket, address = server_socket.accept()    data = client_socket.recv(1024)    response = data.upper()    client_socket.sendall(response)    client_socket.close() # Client codeimport socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client_socket.connect(('localhost', 8000))client_socket.sendall(b'Hello, server!')response = client_socket.recv(1024)print(response)client_socket.close()

Exercise 13: Data Science

Concepts:

  • Data manipulation using NumPy and Pandas
  • Data analysis using Pandas

Description: Python is a popular language for data science due to its powerful libraries. In this exercise, you'll use the NumPy and Pandas libraries to perform some data analysis.

Solution:

import numpy as npimport pandas as pd # Create some datadata = {'x': np.arange(10),        'y': np.random.randn(10)} # Create a DataFrame from the datadf = pd.DataFrame(data) # Calculate some statisticsprint(df.mean())print(df.std()) # Create a new column based on a calculationdf['z'] = df['x'] * df['y'] # Display the DataFrameprint(df)

Exercise 14: Web Development

Concepts:

  • Web development using the Flask framework
  • HTTP methods and routing

Description: Python can be used to build web applications using a variety of web frameworks. In this exercise, you'll write a simple Flask web application.

Solution:

from flask import Flask, request app = Flask(__name__) @app.route('/', methods=['GET'])def home():    return 'Hello, world!' @app.route('/greet', methods=['POST'])def greet():    name = request.form.get('name')    return f'Hello, {name}!' if __name__ == '__main__':    app.run()

Exercise 15: Asynchronous Programming

Concepts:

  • Asynchronous programming using asyncio
  • Coroutines

Description: Python has powerful features for asynchronous programming, allowing you to write efficient and scalable programs. In this exercise, you'll write a script that demonstrates asynchronous programming using asyncio.

Solution:

import asyncio async def coroutine():    print('Coroutine started')    await asyncio.sleep(1)    print('Coroutine ended') loop = asyncio.get_event_loop()loop.run_until_complete(coroutine())loop.close()

This script defines a coroutine using the async keyword. The coroutine sleeps for one second using the asyncio.sleep() function. The asyncio.geteventloop() function is used to create an event loop, and the loop.rununtilcomplete() method is used to run the coroutine until it completes. Finally, the event loop is closed using the loop.close() method.

Note that the above code demonstrates only the basic concepts of asynchronous programming with asyncio. More complex programs may require additional concepts and techniques, such as event loops, futures, and callbacks.

Exercise 16: Image Processing

Concepts:

  • Image processing using the Pillow library
  • Image manipulation and conversion

Description: Python has many libraries for working with images. In this exercise, you'll use the Pillow library to perform some basic image processing tasks.

Solution:

from PIL import Image # Open an image fileimage = Image.open('image.jpg') # Display information about the imageprint(image.format)print(image.size)print(image.mode) # Convert the image to grayscalegrayscale_image = image.convert('L')grayscale_image.show() # Resize the imageresized_image = image.resize((300, 300))resized_image.show() # Save the image in a different formatresized_image.save('image.png')

Exercise 17: Email Sending

Concepts:

  • Email sending using the smtplib library
  • SMTP servers and email authentication

Description: Python has libraries for sending email programmatically. In this exercise, you'll write a script that sends an email using the smtplib library.

Solution:

import smtplib sender_email = 'your_email@example.com'sender_password = 'your_password'receiver_email = 'recipient_email@example.com'message = 'Hello, world!' with smtplib.SMTP('smtp.gmail.com', 587) as server:    server.starttls()    server.login(sender_email, sender_password)    server.sendmail(sender_email, receiver_email, message)

Exercise 18: Web API Integration

Concepts:

  • RESTful APIs and HTTP requests
  • Web API integration using the requests library

Description: Python can be used to integrate with many different web APIs. In this exercise, you'll write a script that interacts with a RESTful API using the requests library.

Solution:

import requests response = requests.get('https://api.example.com/users')data = response.json() for user in data:    print(user['name'], user['email'])

Exercise 19: Data Encryption

Concepts:

  • Data encryption using the cryptography library
  • Symmetric and asymmetric encryption

Description: Python has built-in libraries for encrypting and decrypting data. In this exercise, you'll write a script that encrypts and decrypts some data using the cryptography library.

Solution:

from cryptography.fernet import Fernetfrom cryptography.hazmat.primitives import hashesfrom cryptography.hazmat.primitives.asymmetric import rsa, paddingfrom cryptography.hazmat.primitives.serialization import load_pem_private_key, load_pem_public_key # Symmetric encryptionkey = Fernet.generate_key()fernet = Fernet(key)plaintext = b'This is a secret message'ciphertext = fernet.encrypt(plaintext)decrypted_plaintext = fernet.decrypt(ciphertext)print(decrypted_plaintext) # Asymmetric encryptionprivate_key = rsa.generate_private_key(    public_exponent=65537,    key_size=2048)public_key = private_key.public_key() plaintext = b'This is a secret message'ciphertext = public_key.encrypt(    plaintext,    padding.OAEP(        mgf=padding.MGF1(algorithm=hashes.SHA256()),        algorithm=hashes.SHA256(),        label=None    )) decrypted_plaintext = private_key.decrypt(    ciphertext,    padding.OAEP(        mgf=padding.MGF1(algorithm=hashes.SHA256()),        algorithm=hashes.SHA256(),        label=None    ))print(decrypted_plaintext)

Exercise 20: GUI Programming

Concepts:

  • GUI programming using the Tkinter library
  • Widgets and event handling

Description: Python has libraries for building graphical user interfaces (GUIs). In this exercise, you'll write a script that uses the Tkinter library to create a simple GUI.

Solution:

import tkinter as tk def button_clicked():    label.config(text='Hello, world!') root = tk.Tk() label = tk.Label(root, text='Welcome to my GUI')label.pack() button = tk.Button(root, text='Click me!', command=button_clicked)button.pack() root.mainloop()

This script creates a window using the tkinter.Tk() method. It then creates a Label widget and a Button widget and packs them into the window using the pack() method. Finally, it enters the main event loop using the mainloop() method.

When the button is clicked, the button_clicked() function is called, which updates the text of the label widget using the config() method.

Exercise 21: File I/O

Concepts:

  • File I/O in Python
  • Reading and writing files

Description: Python has built-in support for reading and writing files. In this exercise, you'll write a script that reads from and writes to a file.

Solution:

# Write to a filewith open('example.txt', 'w') as file:    file.write('Hello, world!\n')    file.write('How are you today?\n') # Read from a filewith open('example.txt', 'r') as file:    for line in file:        print(line.strip())

Exercise 22: Logging

Concepts:

  • Logging in Python
  • Log levels and handlers

Description: Python has built-in support for logging. In this exercise, you'll write a script that logs some messages to a file.

Solution:

import logging logging.basicConfig(filename='example.log', level=logging.DEBUG) logging.debug('This is a debug message')logging.info('This is an info message')logging.warning('This is a warning message')logging.error('This is an error message')logging.critical('This is a critical message')

Exercise 23: Web Scraping

Concepts:

  • Web scraping using BeautifulSoup
  • HTML parsing and navigation

Description: Python can be used for web scraping, which involves extracting data from websites. In this exercise, you'll use the BeautifulSoup library to scrape data from a website.

Solution:

import requestsfrom bs4 import BeautifulSoup response = requests.get('https://en.wikipedia.org/wiki/Python_(programming_language)')soup = BeautifulSoup(response.text, 'html.parser')print(soup.title.string) links = soup.find_all('a')for link in links:    print(link.get('href'))

Exercise 24: Concurrency with asyncio

Concepts:

  • Asynchronous programming using asyncio
  • Coroutines and event loops

Description: Python has powerful support for asynchronous programming using the asyncio library. In this exercise, you'll write a script that demonstrates the use of asyncio for concurrent programming.

Solution:

import asyncio async def coroutine(id):    print(f'Coroutine {id} started')    await asyncio.sleep(1)    print(f'Coroutine {id} ended') async def main():    tasks = []    for i in range(10):        tasks.append(asyncio.create_task(coroutine(i)))    await asyncio.gather(*tasks) asyncio.run(main())

Exercise 25: Data Analysis with Pandas

Concepts:

  • Data analysis with Pandas
  • Loading and manipulating data with DataFrames

Description: Pandas is a powerful library for data analysis and manipulation in Python. In this exercise, you'll use Pandas to perform some data analysis tasks.

Solution:

import pandas as pd # Load data from a CSV filedata = pd.read_csv('example.csv') # Print the first five rows of the dataprint(data.head()) # Calculate some statistics on the dataprint(data.describe()) # Group the data by a column and calculate some statisticsgrouped_data = data.groupby('category')print(grouped_data.mean())

In this script, we load data from a CSV file into a Pandas DataFrame. We then print the first five rows of the data using the head() method, and calculate some statistics on the data using the describe() method.

Finally, we group the data by the category column using the groupby() method and calculate some statistics on each group using the mean() method.

Exercise 26: Regular Expressions

Concepts:

  • Regular expressions in Python
  • Pattern matching and substitution

Description: Regular expressions are a powerful tool for searching and manipulating text. In this exercise, you'll write a script that uses regular expressions to search for patterns in text.

Solution:

import re text = 'The quick brown fox jumps over the lazy dog' # Search for a pattern in the textpattern = r'\b\w{4}\b'matches = re.findall(pattern, text)print(matches) # Substitute a pattern in the textpattern = r'\bthe\b'replaced_text = re.sub(pattern, 'a', text, flags=re.IGNORECASE)print(replaced_text)

Exercise 27: Database ORM

Concepts:

  • Object-relational mapping using SQLAlchemy
  • Creating tables and querying data

Description: Python has many object-relational mapping (ORM) libraries for working with databases. In this exercise, you'll write a script that uses the SQLAlchemy ORM to interact with a database.

Solution:

from sqlalchemy import create_engine, Column, Integer, Stringfrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_base # Define a database engineengine = create_engine('sqlite:///example.db') # Define a session factorySession = sessionmaker(bind=engine) # Define a declarative baseBase = declarative_base() # Define a model classclass User(Base):    __tablename__ = 'users'     id = Column(Integer, primary_key=True)    name = Column(String)    email = Column(String) # Create the tableBase.metadata.create_all(engine) # Add some datasession = Session()session.add(User(name='Alice', email='alice@example.com'))session.add(User(name='Bob', email='bob@example.com'))session.commit() # Query the datausers = session.query(User).all()for user in users:    print(user.name, user.email) 

Exercise 28: Web Scraping with Selenium

Concepts:

  • Web scraping with Selenium
  • Browser automation and DOM manipulation

Description: Selenium is a popular library for web scraping that allows you to control a web browser programmatically. In this exercise, you'll write a script that uses Selenium to scrape data from a website.

Solution:

from selenium import webdriver driver = webdriver.Chrome() driver.get('https://en.wikipedia.org/wiki/Python_(programming_language)') heading = driver.find_element_by_tag_name('h1')print(heading.text) links = driver.find_elements_by_tag_name('a')for link in links:    print(link.get_attribute('href')) driver.close()

Exercise 29: Natural Language Processing

Concepts:

  • Natural language processing using the NLTK library
  • Tokenization, stemming, and POS tagging

Description: Python has many libraries for natural language processing (NLP). In this exercise, you'll use the NLTK library to perform some basic NLP tasks.

Solution:

import nltkfrom nltk.tokenize import word_tokenizefrom nltk.stem import PorterStemmerfrom nltk import pos_tag nltk.download('punkt')nltk.download('averaged_perceptron_tagger') text = 'The quick brown fox jumped over the lazy dogs' # Tokenize the texttokens = word_tokenize(text)print(tokens) # Stem the tokensstemmer = PorterStemmer()stemmed_tokens = [stemmer.stem(token) for token in tokens]print(stemmed_tokens) # Perform part-of-speech tagging on the tokenspos_tags = pos_tag(tokens)print(pos_tags)

Exercise 30: Machine Learning

Concepts:

  • Machine learning using scikit-learn
  • Data preparation, model training, and prediction

Description: Python has many libraries for machine learning, including scikit-learn. In this exercise, you'll use scikit-learn to train a simple machine learning model.

Solution:

import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegression # Load data from a CSV filedata = pd.read_csv('example.csv') # Prepare the dataX = data['x'].values.reshape(-1, 1)y = data['y'].values.reshape(-1, 1) # Split the data into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # Train the modelmodel = LinearRegression()model.fit(X_train, y_train) # Make predictions on the test sety_pred = model.predict(X_test) # Evaluate the modelscore = model.score(X_test, y_test)print(score)

In this script, we load data from a CSV file into a Pandas DataFrame. We then prepare the data by splitting it into input (X) and output (y) variables, and splitting it into training and testing sets using the traintestsplit() method.

We then train a linear regression model using the training data, and make predictions on the testing data using the predict() method. Finally, we evaluate the performance of the model using the score() method, which calculates the coefficient of determination (R^2) for the model.

Exercise 31: Image Recognition with Deep Learning

Concepts:

  • Deep learning with Keras
  • Convolutional neural networks and image recognition

Description: Deep learning is a powerful technique for image recognition. In this exercise, you'll use the Keras library to train a deep learning model to recognize images.

Solution:

import numpy as npfrom keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Dense, Flatten, Conv2D, MaxPooling2Dfrom keras.utils import to_categorical # Load the MNIST dataset(X_train, y_train), (X_test, y_test) = mnist.load_data() # Preprocess the dataX_train = X_train.reshape(-1, 28, 28, 1) / 255.0X_test = X_test.reshape(-1, 28, 28, 1) / 255.0y_train = to_categorical(y_train)y_test = to_categorical(y_test) # Define the model architecturemodel = Sequential()model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))model.add(MaxPooling2D((2, 2)))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D((2, 2)))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(Flatten())model.add(Dense(64, activation='relu'))model.add(Dense(10, activation='softmax')) # Compile the modelmodel.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Train the modelmodel.fit(X_train, y_train, epochs=5, batch_size=64) # Evaluate the modelloss, accuracy = model.evaluate(X_test, y_test)print(accuracy)

Exercise 32: Web APIs with Flask

Concepts:

  • Web APIs with Flask
  • RESTful architecture and HTTP methods

Description: Flask is a lightweight web framework for Python. In this exercise, you'll write a simple Flask application that exposes a web API.

Solution:

from flask import Flask, request app = Flask(__name__) @app.route('/hello', methods=['GET'])def hello():    name = request.args.get('name')    if name:        return f'Hello, {name}!'    else:        return 'Hello, world!' if __name__ == '__main__':    app.run()

Exercise 33: GUI Programming with PyQt

Concepts:

  • GUI programming with PyQt
  • Widgets and event handling

Description: PyQt is a powerful library for building graphical user interfaces (GUIs) with Python. In this exercise, you'll write a script that uses PyQt to create a simple GUI.

Solution:

import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton class MyWindow(QWidget):    def __init__(self):        super().__init__()         self.label = QLabel('Enter your name:', self)        self.label.move(50, 50)         self.textbox = QLineEdit(self)        self.textbox.move(50, 80)         self.button = QPushButton('Say hello', self)        self.button.move(50, 110)        self.button.clicked.connect(self.button_clicked)         self.setWindowTitle('Hello, world!')        self.setGeometry(100, 100, 200, 150)     def button_clicked(self):        name = self.textbox.text()        self.label.setText(f'Hello, {name}!') app = QApplication(sys.argv)window = MyWindow()window.show()sys.exit(app.exec_())

Exercise 34: Web Scraping with Beautiful Soup and Requests

Concepts:

  • Web scraping with Beautiful Soup and Requests
  • HTML parsing and navigation

Description: Beautiful Soup and Requests are popular libraries for web scraping. In this exercise, you'll write a script that uses these libraries to scrape data from a website.

Solution:

import requestsfrom bs4 import BeautifulSoup url = 'https://en.wikipedia.org/wiki/Python_(programming_language)' response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser') title = soup.find('h1', {'id': 'firstHeading'}).textprint(title) content = soup.find('div', {'id': 'mw-content-text'}).textprint(content[:100])

Exercise 35: Data Visualization with Matplotlib

Concepts:

  • Data visualization with Matplotlib
  • Line plots and labels

Description: Matplotlib is a popular library for data visualization in Python. In this exercise, you'll write a script that uses Matplotlib to create a simple line plot.

Solution:

import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25] plt.plot(x, y)plt.xlabel('x')plt.ylabel('y')plt.title('A Simple Line Plot')plt.show()

Exercise 36: Data Analysis with NumPy

Concepts:

  • Data analysis with NumPy
  • Creating and manipulating arrays

Description: NumPy is a powerful library for numerical computing in Python. In this exercise, you'll write a script that uses NumPy to perform some basic data analysis tasks.

Solution:

import numpy as np # Create a 2D arraydata = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Print the arrayprint(data) # Calculate some statistics on the arrayprint(np.mean(data))print(np.median(data))print(np.std(data)) # Reshape the arrayreshaped_data = data.reshape(1, 9)print(reshaped_data)

Exercise 37: Object-Oriented Programming

Concepts:

  • Object-oriented programming in Python
  • Classes, objects, and inheritance

Description: Python is an object-oriented programming language. In this exercise, you'll write a script that demonstrates the use of object-oriented programming in Python.

Solution:

class Shape:    def __init__(self, x, y):        self.x = x        self.y = y     def move(self, dx, dy):        self.x += dx        self.y += dy class Rectangle(Shape):    def __init__(self, x, y, width, height):        super().__init__(x, y)        self.width = width        self.height = height     def area(self):        return self.width * self.height class Circle(Shape):    def __init__(self, x, y, radius):        super().__init__(x, y)        self.radius = radius     def area(self):        return 3.14159 * self.radius ** 2 rect = Rectangle(0, 0, 10, 5)print(rect.area())rect.move(1, 1)print(rect.x, rect.y) circ = Circle(0, 0, 5)print(circ.area())circ.move(2, 2)print(circ.x, circ.y)

In this script, we define a Shape class that has an x and y coordinate, and a move() method that moves the shape by a specified amount in the x and y directions.

We then define a Rectangle class that inherits from Shape, and adds a width and height attribute, as well as an area() method that calculates the area of the rectangle.

We also define a Circle class that inherits from Shape, and adds a radius attribute, as well as an area() method that calculates the area of the circle.

Finally, we create instances of the Rectangle and Circle classes, and call their area() and move() methods.

Exercise 38: Regular Expressions

Concepts:

  • Regular expressions in Python
  • Searching for patterns in text

Description: Regular expressions are a powerful tool for text processing in Python. In this exercise, you'll write a script that uses regular expressions to search for patterns in a text file.

Solution:

import re with open('example.txt', 'r') as f:    data = f.read() pattern = r'\d{3}-\d{2}-\d{4}'matches = re.findall(pattern, data) for match in matches:    print(match)

In this script, we open a text file and read its contents into a variable. We then define a regular expression pattern that matches a social security number in the format XXX-XX-XXXX.

We use the findall() function from the re module to find all occurrences of the pattern in the text, and print them out.

Exercise 39: File I/O

Concepts:

  • File I/O in Python
  • Reading and writing text files

Description: File I/O is a common task in Python programming. In this exercise, you'll write a script that reads data from a file, performs some processing, and writes the results to another file.

Solution:

with open('input.txt', 'r') as f:    data = f.readlines() # Process the dataoutput = []for line in data:    line = line.strip()    words = line.split()    words.reverse()    output.append(' '.join(words)) # Write the results to a filewith open('output.txt', 'w') as f:    for line in output:        f.write(line + '\n')

In this script, we open an input file and read its contents into a list of strings. We then process the data by splitting each line into words, reversing the order of the words, and joining them back together into a single string.

We write the resulting strings to an output file, with each string on a separate line.

Exercise 40: Data Manipulation with Pandas

Concepts:

  • Data manipulation with Pandas
  • Reading and filtering data

Description: Pandas is a powerful library for data manipulation in Python. In this exercise, you'll write a script that uses Pandas to load, process, and analyze a dataset.

Solution:

import pandas as pd # Load the data from a CSV filedata = pd.read_csv('example.csv') # Filter the data to include only rows where the value is greater than 5filtered_data = data[data['value'] > 5] # Calculate the mean and standard deviation of the filtered datamean = filtered_data['value'].mean()std = filtered_data['value'].std() print(f'Mean: {mean}')print(f'Standard deviation: {std}')

In this script, we load a dataset from a CSV file into a Pandas DataFrame. We then filter the data to include only rows where the value is greater than 5.

We calculate the mean and standard deviation of the filtered data using the mean() and std() methods of the DataFrame, and print out the results.