使用这些项目涵盖所有 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.性能优化:通过异步编程、缓存和代码优
