使用這些專案涵蓋所有 Python 基礎知識 |從測驗到密碼管理器。
製作專案是將所學知識付諸實踐的最佳方式。雖然這些項目看起來簡單易行,但它們在奠定 Python 程式設計的堅實基礎方面發揮著至關重要的作用。我創建了這些專案來涵蓋 Python 的大部分基礎知識,確保任何人都可以透過實踐練習來學習和提高他們的編碼技能。
1. 問答遊戲
這是什麼? 一個簡單的問答遊戲,電腦提出問題,玩家回答。
使用的概念:
- 列表和元組
- 隨機模組
- 循環
- 條件語句
- 使用者輸入處理
- 分數追蹤
工作原理:遊戲開始時歡迎玩家並詢問他們是否想玩。然後它會從預先定義的列表中提出一系列隨機問題。玩家的答案將被檢查,他們的分數也會隨之更新。遊戲會針對每個答案提供回饋,並在最後顯示最終分數。
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. 猜數字遊戲(電腦猜)
這是什麼? 一種猜數字遊戲,電腦嘗試猜測使用者選擇的數字。
使用的概念:
- 功能
- 循環
- 條件語句
- 使用者輸入處理
- 二分查找演算法
工作原理:使用者定義一個範圍並選擇該範圍內的數字。然後,電腦使用二分搜尋方法來猜測數字,使用者提供關於猜測是否過高、過低或正確的回饋。遊戲繼續進行,直到電腦猜對或確定數字超出指定範圍。
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 < low or 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. 猜數字遊戲(使用者猜測)
這是什麼? 一種猜數字遊戲,使用者試著猜測隨機產生的數字。
使用的概念:
- 功能
- 隨機模組
- 循環
- 條件語句
- 異常處理
- 使用者輸入驗證
工作原理:電腦產生指定範圍內的隨機數。然後用戶進行猜測,程式會提供有關猜測是否過高或過低的回饋。遊戲將繼續,直到用戶猜出正確的數字或決定退出。
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 low, guess a greater number.") elif 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. 劊子手遊戲
這是什麼? 一款經典的猜詞遊戲,玩家嘗試逐個字母猜測隱藏的單字。
使用的概念:
- 導入模組
- 從清單中隨機選擇
- 字串操作
- 循環
- 條件語句
- 列表理解
工作原理:遊戲從預定義清單中隨機選擇一個單字。然後玩家一次猜測一個字母。正確的猜測會揭示字母在單字中的位置,而錯誤的猜測會減少玩家的剩餘生命。當玩家猜出整個單字或生命耗盡時,遊戲結束。
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.石頭剪刀布
這是什麼? 一款經典的「石頭、剪刀、布」遊戲,使用者可以與電腦對戰。
使用的概念:
- 循環
- 條件語句
- 功能
- 隨機模組
- 使用者輸入處理
工作原理:使用者選擇石頭、布或剪刀,而電腦也會隨機選擇其中一個選項。然後程式會比較選擇,確定獲勝者,並詢問使用者是否想再玩一次。
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 使用者井字釘
它是什麼 Tic-Tac-Toe 是一款經典的兩人遊戲,玩家輪流在 3x3 網格上標記空格。目標是成為第一個在水平、垂直或對角線上連續獲得三個分數的人。當一名玩家達到這一目標時,或者當網格上的所有空格都填滿而沒有獲勝者時,遊戲結束,導致平局。
*使用的概念:*
- 函數定義與呼叫
- 資料結構(二維列表)
- 循環(for、while)
- 條件語句(if、else)
- 輸入處理與驗證
- 遊戲狀態管理
- 字串格式
- 異常處理
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 < 1 or 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. 密碼管理器
它是什麼? 一個簡單的密碼管理器,允許使用者儲存和檢索加密的密碼。
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
以上是使用這些專案涵蓋所有 Python 基礎知識 |從測驗到密碼管理器。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優
