10 Python Projects with Code - CRUDPRO

10 Python Projects with Code

10 Python Projects with Code

"10 Proyek Python dengan Kode untuk Meningkatkan Keterampilan Pemrograman Anda & Dapat Disertakan dalam Resume Anda."

10 Python Projects with Code

Pendahuluan:

Python merupakan bahasa pemrograman yang serbaguna dan dikenal karena kesederhanaan dan keterbacaannya. Bahasa ini banyak digunakan dalam pengembangan web, analisis data, pembelajaran mesin, dan otomatisasi. Salah satu cara terbaik untuk meningkatkan keterampilan pemrograman Python adalah dengan mengerjakan proyek-proyek praktis. Dalam artikel ini, kami akan menjelajahi sepuluh proyek Python yang dilengkapi dengan kode, yang akan membantu Anda meningkatkan kemampuan pemrograman Anda. Proyek-proyek ini mencakup berbagai topik dan tingkat kesulitan, sehingga memungkinkan Anda untuk berkembang sebagai seorang pengembang Python. Mari kita mulai eksplorasi proyek-proyek menarik ini!

1. Penyingkat URL:

Penyingkat URL merupakan alat praktis untuk mengubah tautan situs web yang panjang menjadi tautan yang lebih pendek. Dalam proyek ini, Anda akan membuat sebuah penyingkat URL menggunakan Python dan Flask, sebuah kerangka kerja web yang populer. Dengan memanfaatkan fitur-fitur Flask, Anda akan belajar bagaimana mengelola permintaan HTTP, membuat kode pendek yang unik, dan mengarahkan pengguna ke URL asli.

from flask import Flask, redirect, render_template, request
    import string
    import random
    
    app = Flask(__name__)
    
    # Dictionary to store the mappings of short codes to original URLs
    url_mapping = {}
    
    
    def generate_short_code():
        """Generate a random short code."""
        characters = string.ascii_letters + string.digits
        short_code = ''.join(random.choice(characters) for _ in range(6))
        return short_code
    
    
    @app.route('/', methods=['GET', 'POST'])
    def home():
        if request.method == 'POST':
            original_url = request.form['url']
            short_code = generate_short_code()
    
            url_mapping[short_code] = original_url
    
            short_url = request.host_url + short_code
            return render_template('index.html', short_url=short_url)
    
        return render_template('index.html')
    
    
    @app.route('/<short_code>')
    def redirect_to_original_url(short_code):
        if short_code in url_mapping:
            original_url = url_mapping[short_code]
            return redirect(original_url)
        else:
            return "Short URL not found."
    
    
    if __name__ == '__main__':
        app.run(debug=True)

2. Pembuat Teks Gambar:

Pembuat teks gambar adalah aplikasi menarik yang menggunakan teknik pembelajaran mendalam. Dalam proyek ini, Anda akan menggunakan Python dan library TensorFlow untuk membuat generator keterangan gambar. Dengan menggabungkan kemampuan visi komputer dan pemrosesan bahasa alami, program Anda akan mampu menghasilkan deskripsi yang mendetail untuk gambar secara otomatis.

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import os

# Load the pre-trained InceptionV3 model
inception_model = tf.keras.applications.InceptionV3(include_top=True, weights='imagenet')

# Load the tokenizer
tokenizer = tf.keras.preprocessing.text.Tokenizer()
tokenizer_path = 'tokenizer.pkl'
tokenizer = tf.keras.preprocessing.text.tokenizer_from_json(tokenizer_path)

# Define the maximum sequence length (number of words) for captions
max_sequence_length = 20

# Load the pre-trained caption generation model
model_path = 'caption_generator_model.h5'
model = tf.keras.models.load_model(model_path)

# Load the word-to-index and index-to-word mappings
word_to_index = tokenizer.word_index
index_to_word = {index: word for word, index in word_to_index.items()}

# Load the pre-trained InceptionV3 model
inception_model = tf.keras.applications.InceptionV3(include_top=True, weights='imagenet')

def preprocess_image(image_path):
    """Preprocess the image for input to the InceptionV3 model."""
    img = Image.open(image_path)
    img = img.resize((299, 299))
    img = np.array(img)
    img = img / 255.0
    img = img.reshape(1, 299, 299, 3)
    return img

def generate_caption(image_path):
    """Generate a caption for the given image."""
    img = preprocess_image(image_path)
    features = inception_model.predict(img)
    features = features.reshape(1, -1)
    
    start_token = tokenizer.word_index['<start>']
    end_token = tokenizer.word_index['<end>']
    
    caption = []
    input_sequence = [start_token]
    for _ in range(max_sequence_length):
        sequence = np.array(input_sequence)
        y_pred = model.predict([features, sequence])
        y_pred = np.argmax(y_pred)
        
        if index_to_word[y_pred] == '<end>':
            break
        
        caption.append(index_to_word[y_pred])
        input_sequence.append(y_pred)
    
    generated_caption = ' '.join(caption)
    return generated_caption

# Path to the image for caption generation
image_path = 'example_image.jpg'

# Generate caption for the image
caption = generate_caption(image_path)
print('Generated Caption:', caption)

# Display the image
img = Image.open(image_path)
plt.imshow(img)
plt.axis('off')
plt.show(

3. Aplikasi Prakiraan Cuaca:

Membangun aplikasi prakiraan cuaca akan memberikan Anda pengalaman berharga dalam bekerja dengan API. Dalam proyek ini, Anda akan menggunakan Python dan API OpenWeatherMap untuk mengambil data cuaca untuk lokasi tertentu dan menampilkannya kepada pengguna. Proyek ini akan melibatkan pembuatan permintaan HTTP, mem-parsing respons JSON, dan menyajikan data dengan interface yang mudah digunakan.

import requests
import json

def get_weather_data(api_key, city):
    """Get weather data for a specific city using the OpenWeatherMap API."""
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": city,
        "appid": api_key,
        "units": "metric"
    }
    response = requests.get(base_url, params=params)
    data = response.json()
    return data

def display_weather(data):
    """Display weather information."""
    if data["cod"] != "404":
        city = data["name"]
        country = data["sys"]["country"]
        temperature = data["main"]["temp"]
        description = data["weather"][0]["description"]
        humidity = data["main"]["humidity"]
        wind_speed = data["wind"]["speed"]

        print(f"Weather in {city}, {country}:")
        print(f"Temperature: {temperature}°C")
        print(f"Description: {description}")
        print(f"Humidity: {humidity}%")
        print(f"Wind Speed: {wind_speed} km/h")
    else:
        print("City not found. Please try again.")

def main():
    # API key from OpenWeatherMap
    api_key = "YOUR_API_KEY"

    # Get the city name from the user
    city = input("Enter the city name: ")

    # Get weather data for the city
    weather_data = get_weather_data(api_key, city)

    # Display weather information
    display_weather(weather_data)

if __name__ == "__main__":
    main()

4. Pemutar Musik:

Membuat pemutar musik menggunakan Python merupakan cara terbaik untuk menggali interface pengguna grafis (GUI). Anda dapat menggunakan library Tkinter untuk merancang sebuah pemutar musik sederhana yang memungkinkan pengguna untuk menjelajahi library musik mereka, memutar lagu, menjeda, menghentikan, dan mengatur volume. Proyek ini akan membantu Anda memperoleh pemahaman tentang pemrograman berbasis peristiwa dan pengembangan GUI.

import tkinter as tk
import os
from pygame import mixer

class MusicPlayer:
    def __init__(self, root):
        self.root = root
        self.root.title("Music Player")
        self.root.geometry("300x100")

        # Initialize Pygame mixer
        mixer.init()

        # Create a variable to store the current playing status
        self.playing = False

        # Create a variable to store the current selected song
        self.current_song = None

        # Create the UI elements
        self.label = tk.Label(root, text="Music Player")
        self.label.pack()

        self.play_button = tk.Button(root, text="Play", command=self.play_music)
        self.play_button.pack()

        self.stop_button = tk.Button(root, text="Stop", command=self.stop_music)
        self.stop_button.pack()

        self.browse_button = tk.Button(root, text="Browse", command=self.browse_music)
        self.browse_button.pack()

    def play_music(self):
        if self.current_song:
            if not self.playing:
                mixer.music.load(self.current_song)
                mixer.music.play()
                self.play_button.config(text="Pause")
                self.playing = True
            else:
                mixer.music.pause()
                self.play_button.config(text="Play")
                self.playing = False

    def stop_music(self):
        mixer.music.stop()
        self.play_button.config(text="Play")
        self.playing = False

    def browse_music(self):
        self.current_song = tk.filedialog.askopenfilename(initialdir=os.getcwd(), title="Select Song",
                                                         filetypes=(("Audio Files", "*.mp3"), ("All Files", "*.*")))
        self.label.config(text=os.path.basename(self.current_song))

if __name__ == '__main__':
    root = tk.Tk()
    music_player = MusicPlayer(root)
    root.mainloop()

5. Pemecah Sudoku:

Memecahkan teka-teki Sudoku adalah sebuah tantangan klasik dalam pemrograman yang menguji kemampuan Anda dalam memecahkan masalah. Dalam proyek ini, Anda akan membuat sebuah pemecah Sudoku menggunakan Python dan algoritme backtracking. Anda akan belajar bagaimana merepresentasikan teka-teki, mengimplementasikan pemecah, dan memvisualisasikan solusi menggunakan interface grafis.

def is_valid(board, row, col, num):
    # Check if the number already exists in the row
    for i in range(9):
        if board[row][i] == num:
            return False

    # Check if the number already exists in the column
    for i in range(9):
        if board[i][col] == num:
            return False

    # Check if the number already exists in the 3x3 grid
    start_row = (row // 3) * 3
    start_col = (col // 3) * 3
    for i in range(3):
        for j in range(3):
            if board[start_row + i][start_col + j] == num:
                return False

    return True

def solve_sudoku(board):
    for row in range(9):
        for col in range(9):
            if board[row][col] == 0:
                for num in range(1, 10):
                    if is_valid(board, row, col, num):
                        board[row][col] = num

                        if solve_sudoku(board):
                            return True

                        board[row][col] = 0

                return False

    return True

def print_board(board):
    for row in range(9):
        for col in range(9):
            print(board[row][col], end=" ")
        print()

# Example Sudoku board (0 represents empty cells)
board = [
    [5, 3, 0, 0, 7, 0, 0, 0, 0],
    [6, 0, 0, 1, 9, 5, 0, 0, 0],
    [0, 9, 8, 0, 0, 0, 0, 6, 0],
    [8, 0, 0, 0, 6, 0, 0, 0, 3],
    [4, 0, 0, 8, 0, 3, 0, 0, 1],
    [7, 0, 0, 0, 2, 0, 0, 0, 6],
    [0, 6, 0, 0, 0, 0, 2, 8, 0],
    [0, 0, 0, 4, 1, 9, 0, 0, 5],
    [0, 0, 0, 0, 8, 0, 0, 7, 9]
]

if solve_sudoku(board):
    print("Sudoku solved:")
    print_board(board)
else:
    print("No solution exists for the given Sudoku board.")

6. Erosion Web dengan BeautifulSoup:

Erosion web melibatkan ekstraksi data dari situs web, dan ini merupakan keterampilan yang berharga di berbagai bidang. Dalam proyek ini, Anda akan menggunakan library Python dan BeautifulSoup untuk Erosion data dari situs web pilihan Anda. Anda akan belajar cara menavigasi struktur HTML, mengekstrak informasi spesifik, dan menyimpannya ke dalam file atau database.

import requests
from bs4 import BeautifulSoup

# Send a GET request to the website
url = 'https://example.com'
response = requests.get(url)

# Create a BeautifulSoup object
soup = BeautifulSoup(response.text, 'html.parser')

# Find and extract specific elements from the webpage
title = soup.title.text
paragraphs = soup.find_all('p')

# Print the extracted data
print('Title:', title)
print('Paragraphs:')
for p in paragraphs:
    print(p.text)

7. Obrolan:

Membangun chatbot adalah sebuah proyek menarik yang menggabungkan pemrosesan bahasa alami dan pembelajaran mesin. Anda dapat menggunakan Python dan library seperti NLTK atau spaCy untuk membuat chatbot yang mampu memahami permintaan pengguna dan memberikan respons yang relevan. Proyek ini akan memperkenalkan Anda pada teknik-teknik seperti preprocessing teks, pengenalan maksud, dan pembuatan respons.

import random

# List of sample responses
responses = [
    "Hello!",
    "Hi there!",
    "Greetings!",
    "Nice to meet you!",
    "How can I assist you?",
    "I'm here to help!",
    "How are you today?",
]

def get_random_response():
    """Return a random response from the list of sample responses."""
    return random.choice(responses)

def chat():
    """Main function to handle the chatbot conversation."""
    print("Chatbot: " + get_random_response())

    while True:
        user_input = input("User: ")
        
        # Check if the user wants to end the conversation
        if user_input.lower() == "bye":
            print("Chatbot: Goodbye!")
            break
        
        # Generate and print a random response
        print("Chatbot: " + get_random_response())

if __name__ == "__main__":
    print("Chatbot: Hello! How can I assist you?")
    chat()

8. Pengelola Kata Sandi:

Pengelola kata sandi adalah alat yang berguna untuk menyimpan dan mengelola kata sandi dengan aman. Dalam proyek ini, Anda akan mengembangkan sebuah pengelola kata sandi menggunakan library Python dan kriptografi. Program yang Anda buat akan memungkinkan pengguna untuk menyimpan kata sandi mereka, menghasilkan kata sandi yang kuat, dan mengenkripsi data guna menjaga keamanan.

import hashlib
import getpass

passwords = {}

def get_hashed_password(password):
    """Generate a SHA-256 hashed password."""
    sha256_hash = hashlib.sha256()
    sha256_hash.update(password.encode('utf-8'))
    return sha256_hash.hexdigest()

def create_password():
    """Create a new password entry."""
    website = input("Enter the website: ")
    username = input("Enter your username: ")
    password = getpass.getpass("Enter your password: ")
    hashed_password = get_hashed_password(password)
    passwords[website] = (username, hashed_password)
    print("Password created successfully.")

def retrieve_password():
    """Retrieve a password from the password manager."""
    website = input("Enter the website: ")
    if website in passwords:
        username, hashed_password = passwords[website]
        password = getpass.getpass("Enter your password: ")
        if hashed_password == get_hashed_password(password):
            print(f"Username: {username}")
            print(f"Password: {password}")
        else:
            print("Incorrect password.")
    else:
        print("Website not found in the password manager.")

def main():
    while True:
        print("1. Create a new password")
        print("2. Retrieve a password")
        print("3. Quit")
        choice = input("Enter your choice (1-3): ")

        if choice == "1":
            create_password()
        elif choice == "2":
            retrieve_password()
        elif choice == "3":
            break
        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

9. Penganalisis Harga Saham:

Menganalisis harga saham merupakan hal yang penting bagi investor dan trader. Dalam proyek ini, Anda akan membuat sebuah penganalisis harga saham menggunakan Python dan API Yahoo Finance. Anda akan mengambil data historis saham, menghitung berbagai indikator keuangan, dan memvisualisasikan hasilnya menggunakan grafik. Proyek ini akan meningkatkan keterampilan Anda dalam analisis dan visualisasi data.

import yfinance as yf
import matplotlib.pyplot as plt

def analyze_stock(symbol, start_date, end_date):
    # Fetch the stock data from Yahoo Finance
    stock_data = yf.download(symbol, start=start_date, end=end_date)

    # Calculate the daily returns
    stock_data['Daily Return'] = stock_data['Close'].pct_change()

    # Plot the closing price and daily returns
    plt.figure(figsize=(10, 5))
    plt.subplot(2, 1, 1)
    plt.plot(stock_data['Close'])
    plt.title('Stock Price')
    plt.ylabel('Price')

    plt.subplot(2, 1, 2)
    plt.plot(stock_data['Daily Return'])
    plt.title('Daily Returns')
    plt.ylabel('Return')

    plt.tight_layout()
    plt.show()

# Example usage
symbol = 'AAPL'  # Stock symbol (e.g., Apple Inc.)
start_date = '2022-01-01'  # Start date of the analysis
end_date = '2022-12-31'  # End date of the analysis

analyze_stock(symbol, start_date, end_date)

10. Pengirim Email Otomatis:

Mengotomatiskan tugas-tugas berulang adalah salah satu aplikasi umum Python yang berguna. Dalam proyek ini, Anda akan membuat sebuah pengirim email otomatis yang mampu mengirim email yang dipersonalisasi kepada daftar penerima. Anda akan menggunakan library email bawaan Python untuk menulis dan mengirim email secara terprogram. Proyek ini akan memberikan pemahaman tentang protokol email, penanganan lampiran, dan pengiriman email dalam jumlah besar.

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

def send_email(sender_email, sender_password, recipient_email, subject, message):
    # Create a multipart message
    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = recipient_email
    msg['Subject'] = subject

    # Add the message body
    msg.attach(MIMEText(message, 'plain'))

    # Setup the SMTP server
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587

    try:
        # Start the SMTP server connection
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()

        # Login to the email account
        server.login(sender_email, sender_password)

        # Send the email
        server.sendmail(sender_email, recipient_email, msg.as_string())

        print('Email sent successfully!')
    except Exception as e:
        print('An error occurred while sending the email:', str(e))
    finally:
        # Terminate the SMTP server connection
        server.quit()

# Example usage
sender_email = '[email protected]'  # Your Gmail email address
sender_password = 'your-password'  # Your Gmail password
recipient_email = '[email protected]'  # Email address of the recipient
subject = 'Automated Email'  # Email subject
message = 'Hello, this is an automated email.'  # Email message

send_email(sender_email, sender_password, recipient_email, subject, message)

Kesimpulan:

Melakukan proyek-proyek Python dengan menggunakan kode merupakan cara efektif untuk meningkatkan keterampilan pemrograman Anda. Dalam posting blog ini, kami telah menjelajahi sepuluh proyek yang beragam, mencakup bidang pengembangan web, analisis data, pembelajaran mesin, dan otomatisasi. Dengan menyelesaikan proyek-proyek ini, Anda akan mendapatkan pengalaman praktis dan mengembangkan pemahaman yang lebih mendalam tentang Python beserta library. Jadi, pilihlah proyek yang menarik minat Anda, telusuri kode-kodenya, dan berikan sentuhan kreativitas Anda dalam membangun aplikasi praktis dengan Python. Selamat berkoding!