」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用這些專案涵蓋所有 Python 基礎知識 |從測驗到密碼管理器。

使用這些專案涵蓋所有 Python 基礎知識 |從測驗到密碼管理器。

發佈於2024-11-08
瀏覽:900

Cover All Python Fundamentals with these rojects | From Quizzes to Password Manager.

Making projects is the best way to take what you learn and put it into action. While these projects may seem simple and easy, they play a crucial role in building a strong foundation in Python programming. I've created these projects to cover most of the fundamentals in Python, ensuring that anyone can learn and improve their coding skills through hands-on practice.

1. Quiz Game

What is it? A simple quiz game where the computer asks questions and the player answers them.

Concepts used:

  • Lists and tuples
  • Random module
  • Loops
  • Conditional statements
  • User input handling
  • Score tracking

How it works: The game starts by welcoming the player and asking if they want to play. It then presents a series of randomized questions from a predefined list. The player's answers are checked, and their score is updated accordingly. The game provides feedback on each answer and displays the final score at the end.

import random  # Import the random module for shuffling

print("Welcome to the Quiz Game")  # Print welcome message
wanna_play = input("Do you want to play the game (yes/no): ").lower()  # Ask if the user wants to play
if wanna_play != 'yes':  # If user does not want to play, quit
    quit()
print("Okay, then! Let's play")  # Print message to start the game

# Creating a list of tuples containing questions and answers 
question_answer_pairs = [
    ("What does CPU stand for?", "Central Processing Unit"),
    ("Which programming language is known as the 'mother of all languages'?", "C"),
    ("What does HTML stand for?", "HyperText Markup Language"),
    # ... (more questions)
]

# Shuffle the list of tuples to ensure random order
random.shuffle(question_answer_pairs)

score = 0

# Iterate through the shuffled list of tuples 
for question, correct_answer in question_answer_pairs:
    user_answer = input(f"{question} ").strip()  # Ask the question and get user input
    if user_answer.lower() == correct_answer.lower():  # Check if the answer is correct
        print("Correct answer")
        score  = 1  # Increase score for a correct answer
    else:
        print(f"Incorrect answer. The correct answer is: {correct_answer}")
        score -= 1  # Decrease score for an incorrect answer
    print(f"Current Score: {score}")

# Print the final score
print(f"Quiz over! Your final score is {score}/{len(question_answer_pairs)}")

2. Number Guessing Game (Computer Guesses)

What is it? A number guessing game where the computer tries to guess a number chosen by the user.

Concepts used:

  • Functions
  • Loops
  • Conditional statements
  • User input handling
  • Binary search algorithm

How it works: The user defines a range and chooses a number within that range. The computer then uses a binary search approach to guess the number, with the user providing feedback on whether the guess is too high, too low, or correct. The game continues until the computer guesses correctly or determines that the number is outside the specified range.

def guess_number():
    """
    Function where the computer attempts to guess a number chosen by the user within a specified range.

    The user defines the lower and upper bounds of the range and provides a number for the computer to guess.
    The computer uses a binary search approach to guess the number and the user provides feedback to guide it.
    """
    # Get the lower bound of the range from the user
    low = int(input("Enter the lower range: "))
    # Get the upper bound of the range from the user
    high = int(input("Enter the higher range: "))

    # Check if the provided range is valid
    if low >= high:
        print("Invalid range. The higher range must be greater than the lower range.")
        return  # Exit the function if the range is invalid

    # Get the number from the user that the computer will attempt to guess
    Your_number = int(input(f"Enter your number for the computer to guess between {low} and {high}: "))

    # Check if the number entered by the user is within the specified range
    if Your_number  high:
        print("The number you entered is out of the specified range.")
        return  # Exit the function if the number is out of the range

    # Initialize the computer's guess variable
    computer_guess = None

    # Loop until the computer guesses the correct number
    while computer_guess != Your_number:
        # Compute the computer's guess as the midpoint of the current range
        computer_guess = (low   high) // 2
        print(f"The computer guesses: {computer_guess}")

        # Get feedback from the user about the computer's guess
        feedback = input(f"Is {computer_guess} too low, too high, or correct? (Enter 'h' for higher, 'l' for lower, 'c' for correct): ").strip().lower()

        # Process the user's feedback to adjust the guessing range
        if feedback == 'c':
            if computer_guess == Your_number:
                print("The computer guessed your number correctly! Congrats!")
                return  # Exit the function once the correct number is guessed
            else:
                continue  
        elif feedback == 'h':
            high = computer_guess - 1  # If the guess is too high, lower the upper range
        elif feedback == 'l':
            low = computer_guess   1  # If the guess is too low, increase the lower range
        else:
            print("Invalid feedback, please enter 'h', 'l', or 'c'.")  # Handle invalid feedback

# Call the function to start the guessing game
guess_number()

3. Number Guessing Game (User Guesses)

What is it? A number guessing game where the user tries to guess a randomly generated number.

Concepts used:

  • Functions
  • Random module
  • Loops
  • Conditional statements
  • Exception handling
  • User input validation

How it works: The computer generates a random number within a specified range. The user then makes guesses, and the program provides feedback on whether the guess is too high or too low. The game continues until the user guesses the correct number or decides to quit.

import random  # Import the random module to use its functions for generating random numbers

def guess_random_number(number):
    """
    Function to allow the user to guess a random number between 1 and the specified `number`.
    This function generates a random integer between 1 and the provided `number` (inclusive).
    It then repeatedly prompts the user to guess the random number, providing feedback on whether
    the guess is too high or too low, until the correct number is guessed. The function handles
    invalid inputs by catching exceptions and informing the user to enter a valid integer.
    """
    # Generate a random number between 1 and the specified `number` (inclusive)
    random_number = random.randint(1, number)
    guess = None  # Initialize the variable `guess` to None before starting the loop

    # Loop until the user guesses the correct number
    while guess != random_number:
        try:
            # Prompt the user to enter a number between 1 and `number`
            guess = int(input(f"Enter a number between 1 and {number}: "))

            # Provide feedback based on whether the guess is too low or too high
            if guess  random_number:
                print("Too high, guess a smaller number.")

        except ValueError:
            # Handle the case where the user inputs something that isn't an integer
            print("Invalid input. Please enter a valid integer.")

    # Congratulate the user once they guess the correct number
    print("You have guessed the random number correctly. Congrats!")

# Call the function with an upper limit of 10
guess_random_number(10)

4. Hangman Game

What is it? A classic word guessing game where the player tries to guess a hidden word letter by letter.

Concepts used:

  • Importing modules
  • Random selection from a list
  • String manipulation
  • Loops
  • Conditional statements
  • List comprehension

How it works: The game selects a random word from a predefined list. The player then guesses letters one at a time. Correct guesses reveal the letter's position in the word, while incorrect guesses reduce the player's remaining lives. The game ends when the player guesses the entire word or runs out of lives.

import random
from word_list import words  # Import the words from word_list.py file

def hangman():
    random_word = random.choice(words)  # Generate the random word
    print(random_word)  # Print the chosen word for testing purposes; remove in production

    word_display = ["_"] * len(random_word)  # Create blank lines "_" equal to the length of the word
    guessed_letters = []  # Empty list to store the letters that have been guessed
    lives = 5  # Number of lives for the player

    print("Welcome to Hangman!")  # Print welcome statement
    print(" ".join(word_display))  # Display the current state of the word

    while lives > 0:  # The game continues to run as long as the player has more than 0 lives
        user_guess = input("Enter a single letter for your guess: ").lower()  # Ask the player to input a letter

        # Check whether the player entered a valid input
        if len(user_guess) != 1 or not user_guess.isalpha():
            print("Invalid input. Please enter a single letter.")
            continue

        # Check if the letter has already been guessed
        if user_guess in guessed_letters:
            print(f"You've already guessed '{user_guess}'. Try another guess.")
            continue

        # Add the guessed letter to the guessed_letters list
        guessed_letters.append(user_guess)

        # Check if the guessed letter is in the random_word
        if user_guess in random_word:
            # Update word_display with the correctly guessed letter
            for index, letter in enumerate(random_word):
                if letter == user_guess:
                    word_display[index] = user_guess
            print("Good guess!")
        else:
            lives -= 1  # Reduce the number of remaining lives by 1 for an incorrect guess
            print(f"Wrong guess! Remaining lives: {lives}")

        # Display the current state of the word
        print(" ".join(word_display))

        # Check if the player has guessed all letters
        if "_" not in word_display:
            print("Congratulations, you guessed the word!")
            break

    else:
        # This runs if no lives are left
        print(f"You have run out of lives. The word was: {random_word}")

hangman()  # Function to start the game

5.Rock Paper Scissors

What is it? A classic "Rock, Paper, Scissors" game where the user plays against the computer.

Concepts used:

  • Loops
  • Conditional statements
  • Functions
  • Random module
  • User input handling

How it works: The user chooses either rock, paper, or scissors, while the computer randomly picks one of the options as well. The program then compares the choices, determines the winner, and asks the user if they want to play again.

import random  # Import the random module to generate random choices for the computer.

def playGame():
    while True:  # Infinite loop to keep the game running until the user decides to stop.
        # Ask the user to enter their choice and convert it to lowercase.
        user_choice = input("Enter 'r' for rock, 'p' for paper, 's' for scissors: ").strip().lower()

        # Check if the user input is valid (i.e., 'r', 'p', or 's').
        if user_choice not in ['r', 'p', 's']:
            print("Invalid Input. Please try again.")
            continue  # If the input is invalid, restart the loop.

        print(f"You chose {user_choice}")  # Display the user's choice.

        # Computer randomly picks one of the choices ('r', 'p', 's').
        computer_choice = random.choice(['r', 'p', 's'])
        print(f"The computer chose {computer_choice}")  # Display the computer's choice.

        # Check if the user's choice is the same as the computer's choice.
        if user_choice == computer_choice:
            print("It's a tie.")  # It's a tie if both choices are the same.
        elif _iswinner(user_choice, computer_choice):
            print("You won!")  # The user wins if their choice beats the computer's choice.
        else:
            print("You lost.")  # The user loses if the computer's choice beats theirs.

        # Ask the user if they want to play again.
        play_again = input("Do you want to play again? Enter 'yes' or 'no': ").strip().lower()

        # If the user doesn't enter 'yes', end the game.
        if play_again != 'yes':
            print("Thank you for playing!")  # Thank the user for playing.
            break  # Exit the loop and end the game.

def _iswinner(user, computer):
    # Determine if the user's choice beats the computer's choice.
    # Rock ('r') beats Scissors ('s'), Scissors ('s') beat Paper ('p'), Paper ('p') beats Rock ('r').
    if (user == "r" and computer == "s") or (user == "p" and computer == "r") or (user == "s" and computer == "p"):
        return True  # Return True if the user wins.

# Start the game by calling the playGame function.
playGame()

6. 2 User Tick Tack Toe

What is it Tic-Tac-Toe is a classic two-player game where players take turns marking spaces on a 3x3 grid. The goal is to be the first to get three of their marks in a row, either horizontally, vertically, or diagonally. The game ends when one player achieves this, or when all spaces on the grid are filled without a winner, resulting in a draw.

*Concepts used: *

  • Function Definition and Calling
  • Data Structures (2D List)
  • Loops (for, while)
  • Conditional Statements (if, else)
  • Input Handling and Validation
  • Game State Management
  • String Formatting
  • Exception Handling
def print_board(board):
    """Prints the game board in a structured format with borders."""
    print("\n --- --- --- ")  # Print the top border of the board
    for row in board:
        # print each row with cell values separated by borders
        print("| "   " | ".join(row)   " |")
        # print the border after each row
        print(" --- --- --- ")

def check_winner(board):
    """Checks for a winner or a draw."""
    # define all possible winning lines: rows, columns, and diagonals
    lines = [
        [board[0][0], board[0][1], board[0][2]],  # Row 1
        [board[1][0], board[1][1], board[1][2]],  # Row 2
        [board[2][0], board[2][1], board[2][2]],  # Row 3
        [board[0][0], board[1][0], board[2][0]],  # Column 1
        [board[0][1], board[1][1], board[2][1]],  # Column 2
        [board[0][2], board[1][2], board[2][2]],  # Column 3
        [board[0][0], board[1][1], board[2][2]],  # Diagonal from top-left to bottom-right
        [board[0][2], board[1][1], board[2][0]]   # Diagonal from top-right to bottom-left
    ]

    # Check each line to see if all three cells are the same and not empty
    for line in lines:
        if line[0] == line[1] == line[2] and line[0] != ' ':
            return line[0]  # Return the player ('X' or 'O') who has won

    # Check if all cells are filled and there is no winner
    if all(cell != ' ' for row in board for cell in row):
        return 'Draw'  # Return 'Draw' if the board is full and no winner

    return None  # Return None if no winner and the game is not a draw

def main():
    """Main function to play the Tic Tac Toe game."""
    # Initialize the board with empty spaces
    board = [[' ' for _ in range(3)] for _ in range(3)]
    current_player = 'X'  # Start with player 'X'

    while True:
        print_board(board)  # Print the current state of the board

        try:
            # Prompt the current player for their move
            move = input(f"Player {current_player}, enter your move (1-9): ")
            move = int(move)  # Convert the input to an integer

            # Check if the move is valid (between 1 and 9)
            if move  9:
                print("Invalid move, try again.")
                continue  # Ask for a new move

        except ValueError:
            # Handle cases where the input is not an integer
            print("Invalid move, try again.")
            continue  # Ask for a new move

        # Convert the move number to board coordinates (row, col)
        row, col = divmod(move - 1, 3)

        # Check if the cell is already occupied
        if board[row][col] != ' ':
            print("Cell already occupied. Choose a different cell.")
            continue  # Ask for a new move

        # Place the current player's mark on the board
        board[row][col] = current_player

        # Check if there is a winner or if the game is a draw
        winner = check_winner(board)

        if winner:
            print_board(board)  # Print the final board state
            if winner == 'Draw':
                print("The game is a draw!")
            else:
                print(f"Player {winner} wins!")  # Announce the winner
            break  # End the game

        # Switch players
        current_player = 'O' if current_player == 'X' else 'X'

if __name__ == "__main__":
    main()  # Start the game

7. Password Manager

What is it? A simple password manager that allows users to store and retrieve encrypted passwords.

Concepts used:

  • File I/O operations
  • Encryption using the cryptography library
  • Functions
  • Exception handling
  • User input handling
  • Loops

How it works: The program uses the Fernet symmetric encryption from the cryptography library to securely store passwords. Users can add new passwords or view existing ones. Passwords are stored in an encrypted format in a text file, and decrypted when viewed.

from cryptography.fernet import Fernet

# The write_key function generates an encryption key and saves it to a file.
# It's currently commented out, but you need to run it once to create the 'key.key' file.
'''
def write_key():
    key = Fernet.generate_key()
    with open("key.key", "wb") as key_file:
        key_file.write(key)
'''

def load_key():
    """This function loads the encryption key from the 'key.key' file."""
    file = open("key.key", "rb")
    key = file.read()
    file.close()
    return key

# Load the key and create a Fernet object
key = load_key()
fer = Fernet(key)

def view():
    """Function to view stored passwords in the 'passwords.txt' file"""
    with open('passwords.txt', 'r') as f:
        for line in f.readlines():
            data = line.rstrip()
            user, passw = data.split("|")
            decrypted_password = fer.decrypt(passw.encode()).decode()
            print("User:", user, "| Password:", decrypted_password)

def add():
    """Function to add new account names and passwords to the 'passwords.txt' file"""
    name = input('Account Name: ')
    pwd = input("Password: ")
    with open('passwords.txt', 'a') as f:
        encrypted_password = fer.encrypt(pwd.encode()).decode()
        f.write(name   "|"   encrypted_password   "\n")

# Main loop to ask the user what they want to do: view passwords, add new passwords, or quit
while True:
    mode = input(
        "Would you like to add a new password or view existing ones (view, add), press q to quit? ").lower()

    if mode == "q":
        break
    if mode == "view":
        view()
    elif mode == "add":
        add()
    else:
        print("Invalid mode.")
        continue

Thanks for stopping and reading the blog.
Github Repo : https://github.com/iamdipsan/Python-Projects

版本聲明 本文轉載於:https://dev.to/dipsankadariya/cover-all-python-fundamentals-with-these-7-projects-from-quizzes-to-password-manager-4ocp?1如有侵犯,請聯絡study_golang @163.com刪除
最新教學 更多>
  • `console.log`顯示修改後對象值異常的原因
    `console.log`顯示修改後對象值異常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    程式設計 發佈於2025-05-01
  • input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It?

output: 解決“Warning: mysqli_query() 參數應為 mysqli 而非 resource”錯誤的解析與修復方法
    input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It? output: 解決“Warning: mysqli_query() 參數應為 mysqli 而非 resource”錯誤的解析與修復方法
    mysqli_query()期望參數1是mysqli,resource給定的,嘗試使用mysql Query進行執行MySQLI_QUERY_QUERY formation,be be yessqli:sqli:sqli:sqli:sqli:sqli:sqli: mysqli,給定的資源“可能發...
    程式設計 發佈於2025-05-01
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-05-01
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-05-01
  • 為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    class'ziparchive'在Linux Server上安裝Archive_zip時找不到錯誤 commant in lin ins in cland ins in lin.11 on a lin.1 in a lin.11錯誤:致命錯誤:在... cass中找不到類z...
    程式設計 發佈於2025-05-01
  • 同實例無需轉儲複製MySQL數據庫方法
    同實例無需轉儲複製MySQL數據庫方法
    在同一實例上複製一個MySQL數據庫而無需轉儲在同一mySQL實例上複製數據庫,而無需創建InterMediate sqql script。以下方法為傳統的轉儲和IMPORT過程提供了更簡單的替代方法。 直接管道數據 MySQL手動概述了一種允許將mysqldump直接輸出到MySQL cli...
    程式設計 發佈於2025-05-01
  • 如何使用Regex在PHP中有效地提取括號內的文本
    如何使用Regex在PHP中有效地提取括號內的文本
    php:在括號內提取文本在處理括號內的文本時,找到最有效的解決方案是必不可少的。一種方法是利用PHP的字符串操作函數,如下所示: 作為替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式來搜索特...
    程式設計 發佈於2025-05-01
  • 如何在GO編譯器中自定義編譯優化?
    如何在GO編譯器中自定義編譯優化?
    在GO編譯器中自定義編譯優化 GO中的默認編譯過程遵循特定的優化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    程式設計 發佈於2025-05-01
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-05-01
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-05-01
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-05-01
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-05-01
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-05-01
  • Python元類工作原理及類創建與定制
    Python元類工作原理及類創建與定制
    python中的metaclasses是什麼? Metaclasses負責在Python中創建類對象。就像類創建實例一樣,元類也創建類。他們提供了對類創建過程的控制層,允許自定義類行為和屬性。 在Python中理解類作為對象的概念,類是描述用於創建新實例或對象的藍圖的對象。這意味著類本身是使用...
    程式設計 發佈於2025-05-01
  • CSS直接定位文本節點及克服限制方法
    CSS直接定位文本節點及克服限制方法
    用CSS來定位文本節點:限制和解決方案遇到涉及文本節點的測試用例時,識別此限制至關重要。如CSS規範中概述的匿名框,從封閉的非匿名盒中接收其屬性。但是,它們保留了非屬性屬性的初始值。 如果在HTML標籤中包裝文本節點是不切實際的,則另一種方法是設置容器樣式。對於可以針對目標的文本,您可以根據需要覆...
    程式設計 發佈於2025-05-01

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3