Sao chép và dán mã Python phức tạp nhất

Ngày nay, chúng ta đang chứng kiến ​​việc áp dụng Trí tuệ nhân tạo (AI), Học máy (ML) và Khoa học dữ liệu ngày càng phát triển trong phần lớn các lĩnh vực kinh doanh. Một trong những điểm chung chính của các trường này là chúng sử dụng ngôn ngữ lập trình Python theo cách này hay cách khác

Trở thành bậc thầy về Python có thể mở ra nhiều cánh cửa trong sự nghiệp của bạn, cho phép bạn có được một số cơ hội việc làm tốt nhất trên hành tinh. Bất kể khả năng Python hiện tại của bạn như thế nào, biết cách xây dựng các dự án Python là một cách chắc chắn để nâng cao kỹ năng và xây dựng danh mục đầu tư của bạn

Và mặc dù sách về Python và các hướng dẫn về Python cực kỳ hữu ích, nhưng không gì bằng việc bạn phải nhúng tay vào viết mã thực tế và thử các ý tưởng dự án Python

Trong bài viết này, chúng tôi đã liệt kê 30 dự án Python thú vị, từ các dự án Python đơn giản cho người mới bắt đầu đến các ý tưởng dự án Python trung cấp và nâng cao, mà bạn có thể sử dụng để thử thách bản thân hoặc cải thiện kỹ năng lập trình Python của mình.

Dự án Python cho người mới bắt đầu

1. Trình tạo Mad Libs

Đây là một trong những dự án Python dành cho người mới bắt đầu thú vị nhất, chưa kể nó cho phép bạn thực hành cách sử dụng chuỗi, biến và nối

Mad Libs Generator thu thập và thao tác dữ liệu đầu vào của người dùng dưới dạng tính từ, đại từ và động từ. Chương trình lấy dữ liệu này và sắp xếp nó để xây dựng một câu chuyện

Mã nguồn

'''
Mad Libs Generator
-------------------------------------------------------------
'''

# Questions for the user to answer

noun = input('Choose a noun: ')

p_noun = input('Choose a plural noun: ')

noun2 = input('Choose a noun: ')

place = input('Name a place: ')

adjective = input('Choose an adjective (Describing word): ')

noun3 = input('Choose a noun: ')

# Print a story from the user input

print('------------------------------------------')

print('Be kind to your', noun, '- footed', p_noun)

print('For a duck may be somebody\'s', noun2, ',')

print('Be kind to your', p_noun, 'in', place)

print('Where the weather is always', adjective, '. \n')

print('You may think that is this the', noun3, ',')

print('Well it is.')

print('------------------------------------------')

2. đoán số

Dự án Python mới bắt đầu này là một trò chơi thú vị tạo ra một số ngẫu nhiên (trong một phạm vi nhất định) mà người dùng phải đoán sau khi nhận được gợi ý. Đối với mỗi lần đoán sai của người dùng, họ sẽ nhận được thêm gợi ý, nhưng với cái giá là giảm điểm số cuối cùng của họ

Chương trình này là một cách tuyệt vời để thử nghiệm với thư viện chuẩn của Python, vì nó sử dụng mô-đun ngẫu nhiên của Python để tạo các số ngẫu nhiên. Bạn cũng có thể thực hành một số câu lệnh điều kiện, định dạng in và các hàm do người dùng xác định

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

3. Oẳn tù tì

Chương trình Oẳn tù tì này mô phỏng trò chơi phổ biến toàn cầu với các hàm và câu điều kiện. Vì vậy, cách nào tốt hơn để có được những khái niệm quan trọng này dưới vành đai của bạn?

Là một trong nhiều dự án mã hóa Python nhập các thư viện bổ sung, chương trình này sử dụng các mô-đun ngẫu nhiên, os và re của thư viện chuẩn

Hãy xem đoạn mã bên dưới và bạn sẽ thấy rằng ý tưởng dự án Python này yêu cầu người dùng thực hiện bước đầu tiên bằng cách chuyển một ký tự để đại diện cho oẳn tù tì hoặc kéo. Sau khi đánh giá chuỗi đầu vào, logic có điều kiện sẽ kiểm tra người chiến thắng

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()

4. Máy tạo xúc xắc cuộn

Là một trong những dự án Python đáng tin cậy nhất dành cho người mới bắt đầu viết mã, chương trình này mô phỏng việc tung một hoặc hai viên xúc xắc. Đây cũng là một cách tuyệt vời để củng cố kiến ​​thức của bạn về các hàm, vòng lặp và câu điều kiện do người dùng định nghĩa

Là một trong những dự án Python dễ dàng, đây là một chương trình khá đơn giản sử dụng mô-đun ngẫu nhiên của Python để tái tạo bản chất ngẫu nhiên của việc tung xúc xắc. Bạn cũng sẽ nhận thấy rằng chúng tôi sử dụng mô-đun os để xóa màn hình sau khi bạn tung xúc xắc

Lưu ý rằng bạn có thể thay đổi giá trị xúc xắc tối đa thành bất kỳ số nào, cho phép bạn mô phỏng xúc xắc đa diện thường được sử dụng trong nhiều trò chơi bàn cờ và nhập vai

Mã nguồn

'''
Dice Roll Generator
-------------------------------------------------------------
'''


import random
import os


def num_die():
  while True:
      try:
          num_dice = input('Number of dice: ')
          valid_responses = ['1', 'one', 'two', '2']
          if num_dice not in valid_responses:
              raise ValueError('1 or 2 only')
          else:
              return num_dice
      except ValueError as err:
          print(err)


def roll_dice():
   min_val = 1
   max_val = 6
   roll_again = 'y'

   while roll_again.lower() == 'yes' or roll_again.lower() == 'y':
       os.system('cls' if os.name == 'nt' else 'clear')
       amount = num_die()

       if amount == '2' or amount == 'two':
           print('Rolling the dice...')
           dice_1 = random.randint(min_val, max_val)
           dice_2 = random.randint(min_val, max_val)

           print('The values are:')
           print('Dice One: ', dice_1)
           print('Dice Two: ', dice_2)
           print('Total: ', dice_1 + dice_2)

           roll_again = input('Roll Again? ')
       else:
           print('Rolling the die...')
           dice_1 = random.randint(min_val, max_val)
           print(f'The value is: {dice_1}')

           roll_again = input('Roll Again? ')


if __name__ == '__main__':
   roll_dice()

5. Trò chơi treo cổ

Đây là một ý tưởng dự án Python thú vị để mô phỏng trò chơi đoán từ, Hangman. Chúng tôi đã sử dụng danh sách các từ được xác định trước cho khía cạnh đoán nhưng vui lòng cải thiện điều này bằng cách sử dụng API từ điển của bên thứ ba

Dự án Python này sử dụng các vòng lặp, hàm và định dạng chuỗi để in tiến trình treo cổ. Nó cũng cho phép bạn thử nghiệm với các mô-đun ngẫu nhiên, thời gian và hệ điều hành của thư viện tiêu chuẩn

Cụ thể, chúng tôi đã sử dụng mô-đun ngẫu nhiên để chọn từ để đoán, mô-đun os để xóa màn hình và mô-đun thời gian của. chức năng ngủ () để giới thiệu tạm dừng để tăng cường luồng trò chơi

Mã nguồn

'''
Hangman Game
-------------------------------------------------------------
'''


import random
import time
import os


def play_again():
  question = 'Do You want to play again? y = yes, n = no \n'
  play_game = input(question)
  while play_game.lower() not in ['y', 'n']:
      play_game = input(question)

  if play_game.lower() == 'y':
      return True
  else:
      return False


def hangman(word):
  display = '_' * len(word)
  count = 0
  limit = 5
  letters = list(word)
  guessed = []
  while count < limit:
      guess = input(f'Hangman Word: {display} Enter your guess: \n').strip()
      while len(guess) == 0 or len(guess) > 1:
          print('Invalid input. Enter a single letter\n')
          guess = input(
              f'Hangman Word: {display} Enter your guess: \n').strip()

      if guess in guessed:
          print('Oops! You already tried that guess, try again!\n')
          continue

      if guess in letters:
          letters.remove(guess)
          index = word.find(guess)
          display = display[:index] + guess + display[index + 1:]

      else:
          guessed.append(guess)
          count += 1
          if count == 1:
              time.sleep(1)
              print('   _____ \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '__|__\n')
              print(f'Wrong guess: {limit - count} guesses remaining\n')

          elif count == 2:
              time.sleep(1)
              print('   _____ \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '__|__\n')
              print(f'Wrong guess: {limit - count} guesses remaining\n')

          elif count == 3:
              time.sleep(1)
              print('   _____ \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |      \n'
                    '  |      \n'
                    '  |      \n'
                    '__|__\n')
              print(f'Wrong guess: {limit - count} guesses remaining\n')

          elif count == 4:
              time.sleep(1)
              print('   _____ \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |     O \n'
                    '  |      \n'
                    '  |      \n'
                    '__|__\n')
              print(f'Wrong guess: {limit - count} guesses remaining\n')

          elif count == 5:
              time.sleep(1)
              print('   _____ \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |     | \n'
                    '  |     O \n'
                    '  |    /|\ \n'
                    '  |    / \ \n'
                    '__|__\n')
              print('Wrong guess. You\'ve been hanged!!!\n')
              print(f'The word was: {word}')

      if display == word:
          print(f'Congrats! You have guessed the word \'{word}\' correctly!')
          break


def play_hangman():
   print('\nWelcome to Hangman\n')
   name = input('Enter your name: ')
   print(f'Hello {name}! Best of Luck!')
   time.sleep(1)
   print('The game is about to start!\nLet\'s play Hangman!')
   time.sleep(1)
   os.system('cls' if os.name == 'nt' else 'clear')

   words_to_guess = [
       'january', 'border', 'image', 'film', 'promise', 'kids',
       'lungs', 'doll', 'rhyme', 'damage', 'plants', 'hello', 'world'
   ]
   play = True
   while play:
       word = random.choice(words_to_guess)
       hangman(word)
       play = play_again()

   print('Thanks For Playing! We expect you back again!')
   exit()


if __name__ == '__main__':
  play_hangman()

6. Trình kiểm tra độ mạnh mật khẩu

Dự án Python này cho phép bạn kiểm tra xem mật khẩu của mình có đủ mạnh không

Nó thực hiện điều này bằng cách kiểm tra số lượng chữ cái, số, ký tự đặc biệt và ký tự khoảng trắng trong một mật khẩu nhất định và tạo điểm dựa trên những kết quả này. Vì vậy, đây là một cách tuyệt vời khác để tìm hiểu về câu lệnh điều kiện, hàm và định dạng chuỗi

Chúng tôi cũng sử dụng các mô-đun chuỗi và getpass từ thư viện chuẩn Python. Điều này cho phép chúng tôi truy cập đầy đủ các ký tự chuỗi để so sánh với thành phần ký tự của mật khẩu, trong khi. Hàm getpass() cho phép chúng ta ẩn mật khẩu khi nhập

Mã nguồn

'''
Password Strength Checker
-------------------------------------------------------------
'''


import string
import getpass


def check_password_strength():
   password = getpass.getpass('Enter the password: ')
   strength = 0
   remarks = ''
   lower_count = upper_count = num_count = wspace_count = special_count = 0

   for char in list(password):
       if char in string.ascii_lowercase:
           lower_count += 1
       elif char in string.ascii_uppercase:
           upper_count += 1
       elif char in string.digits:
           num_count += 1
       elif char == ' ':
           wspace_count += 1
       else:
           special_count += 1

   if lower_count >= 1:
       strength += 1
   if upper_count >= 1:
       strength += 1
   if num_count >= 1:
       strength += 1
   if wspace_count >= 1:
       strength += 1
   if special_count >= 1:
       strength += 1

   if strength == 1:
       remarks = ('That\'s a very bad password.'
           ' Change it as soon as possible.')
   elif strength == 2:
       remarks = ('That\'s a weak password.'
           ' You should consider using a tougher password.')
   elif strength == 3:
       remarks = 'Your password is okay, but it can be improved.'
   elif strength == 4:
       remarks = ('Your password is hard to guess.'
           ' But you could make it even more secure.')
   elif strength == 5:
       remarks = ('Now that\'s one hell of a strong password!!!'
           ' Hackers don\'t have a chance guessing that password!')

   print('Your password has:-')
   print(f'{lower_count} lowercase letters')
   print(f'{upper_count} uppercase letters')
   print(f'{num_count} digits')
   print(f'{wspace_count} whitespaces')
   print(f'{special_count} special characters')
   print(f'Password Score: {strength / 5}')
   print(f'Remarks: {remarks}')


def check_pwd(another_pw=False):
   valid = False
   if another_pw:
       choice = input(
           'Do you want to check another password\'s strength (y/n) : ')
   else:
       choice = input(
           'Do you want to check your password\'s strength (y/n) : ')

   while not valid:
       if choice.lower() == 'y':
           return True
       elif choice.lower() == 'n':
           print('Exiting...')
           return False
       else:
           print('Invalid input...please try again. \n')


if __name__ == '__main__':
   print('===== Welcome to Password Strength Checker =====')
   check_pw = check_pwd()
   while check_pw:
       check_password_strength()
       check_pw = check_pwd(True)

7. Số thành Từ

Ý tưởng dự án Python này chuyển đổi một số nguyên được cung cấp thông qua đầu vào của người dùng thành các từ tương đương của nó. Chương trình này được thiết lập để hỗ trợ các số có tối đa 12 chữ số, nhưng vui lòng sửa đổi chương trình để xử lý các số lớn hơn (gợi ý. yêu cầu các câu lệnh và vòng lặp có điều kiện)

Là một ví dụ dễ hiểu về các dự án Python cơ bản, chương trình đơn giản nhưng hiệu quả này có thể nâng cao kỹ năng của bạn với các vòng lặp, đầu vào của người dùng và các câu lệnh có điều kiện, chưa kể đến các bộ dữ liệu và danh sách Python

Bạn cũng sẽ có thể thử nghiệm với một số phép toán có thể mới đối với bạn, chẳng hạn như toán tử modulo (%) để trả về phần còn lại từ phép chia số nguyên

Mã nguồn

'''
Numbers To Words
-------------------------------------------------------------
'''


ones = (
   'Zero', 'One', 'Two', 'Three', 'Four',
   'Five', 'Six', 'Seven', 'Eight', 'Nine'
   )

twos = (
   'Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen',
    'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen'
   )

tens = (
   'Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty',
    'Seventy', 'Eighty', 'Ninety', 'Hundred'
   )

suffixes = (
   '', 'Thousand', 'Million', 'Billion'
   )

def fetch_words(number, index):
   if number == '0': return 'Zero'

   number = number.zfill(3)
   hundreds_digit = int(number[0])
   tens_digit = int(number[1])
   ones_digit = int(number[2])

   words = '' if number[0] == '0' else ones[hundreds_digit]
  
   if words != '':
       words += ' Hundred '

   if tens_digit > 1:
       words += tens[tens_digit - 2]
       words += ' '
       words += ones[ones_digit]
   elif(tens_digit == 1):
       words += twos[((tens_digit + ones_digit) % 10) - 1]
   elif(tens_digit == 0):
       words += ones[ones_digit]

   if(words.endswith('Zero')):
       words = words[:-len('Zero')]
   else:
       words += ' '

   if len(words) != 0:
       words += suffixes[index]
      
   return words


def convert_to_words(number):
   length = len(str(number))
   if length > 12:
       return 'This program supports a maximum of 12 digit numbers.'

   count = length // 3 if length % 3 == 0 else length // 3 + 1
   copy = count
   words = []

   for i in range(length - 1, -1, -3):
       words.append(fetch_words(
           str(number)[0 if i - 2 < 0 else i - 2 : i + 1], copy - count))
      
       count -= 1

   final_words = ''
   for s in reversed(words):
       final_words += (s + ' ')

   return final_words

if __name__ == '__main__':
   number = int(input('Enter any number: '))
   print('%d in words is: %s' %(number, convert_to_words(number)))

8. TIC Tac Toe

Tic-Tac-Toe là một trò chơi hai người chơi cổ điển bao gồm một lưới chín ô vuông. Mỗi người chơi luân phiên đánh dấu khoảng trống của mình bằng chữ O hoặc chữ X và bất kỳ người chơi nào đánh dấu được ba chữ O hoặc X theo đường chéo, chiều ngang hoặc chiều dọc sẽ thắng. Mỗi người chơi cũng phải chặn đối thủ của họ trong khi cố gắng tạo chuỗi của họ

Đây là một trong những dự án Python thú vị nhất và cũng là duy nhất dành cho người mới bắt đầu vì nó sử dụng lập trình hướng đối tượng để tạo một lớp mới gọi là TicTacToe. Chúng tôi sử dụng điều này để thể hiện các tính năng của trò chơi thông qua các thuộc tính và phương thức của lớp

Nghiên cứu kỹ các phương pháp này để xem cách chúng ta có thể sử dụng lập trình hướng đối tượng để gói gọn các hành vi khác nhau cần thiết để mô phỏng trò chơi này

Một số khía cạnh mới của ý tưởng dự án Python dành cho người mới bắt đầu này bao gồm các vòng lặp lồng nhau để kiểm tra các cột, hàng và đường chéo của lưới để biết trạng thái chiến thắng, cùng với kiểu dữ liệu tập hợp Python, được sử dụng để chứa các giá trị duy nhất. Chương trình này cũng sử dụng mô-đun ngẫu nhiên Python để chọn một người chơi ngẫu nhiên để bắt đầu trò chơi, nhưng điều này bây giờ quen thuộc hơn với bạn

Mã nguồn

'''
Tic Tac Toe
-------------------------------------------------------------
'''


import random


class TicTacToe:

   def __init__(self):
       self.board = []

   def create_board(self):
       for i in range(3):
           row = []
           for j in range(3):
               row.append('-')
           self.board.append(row)

   def get_random_first_player(self):
       return random.randint(0, 1)

   def fix_spot(self, row, col, player):
       self.board[row][col] = player

   def has_player_won(self, player):
       n = len(self.board)
       board_values = set()

       # check rows
       for i in range(n):
           for j in range(n):
               board_values.add(self.board[i][j])

           if board_values == {player}:
               return True
           else:
               board_values.clear()

       # check cols
       for i in range(n):
           for j in range(n):
               board_values.add(self.board[j][i])

           if board_values == {player}:
               return True
           else:
               board_values.clear()

       # check diagonals
       for i in range(n):
           board_values.add(self.board[i][i])
       if board_values == {player}:
           return True
       else:
           board_values.clear()
      
       board_values.add(self.board[0][2])
       board_values.add(self.board[1][1])
       board_values.add(self.board[2][0])
       if board_values == {player}:
           return True
       else:
           return False

   def is_board_filled(self):
       for row in self.board:
           for item in row:
               if item == '-':
                   return False
       return True

   def swap_player_turn(self, player):
       return 'X' if player == 'O' else 'O'

   def show_board(self):
       for row in self.board:
           for item in row:
               print(item, end=' ')
           print()

   def start(self):
       self.create_board()
       player = 'X' if self.get_random_first_player() == 1 else 'O'
       game_over = False

       while not game_over:
           try:
               self.show_board()
               print(f'\nPlayer {player} turn')

               row, col = list(
                   map(int, input(
                       'Enter row & column numbers to fix spot: ').split()))
               print()

               if col is None:
                   raise ValueError(
                       'not enough values to unpack (expected 2, got 1)')

               self.fix_spot(row - 1, col - 1, player)

               game_over = self.has_player_won(player)
               if game_over:
                   print(f'Player {player} wins the game!')
                   continue

               game_over = self.is_board_filled()
               if game_over:
                   print('Match Draw!')
                   continue

               player = self.swap_player_turn(player)

           except ValueError as err:
               print(err)

       print()
       self.show_board()


if __name__ == '__main__':
  tic_tac_toe = TicTacToe()
  tic_tac_toe.start()

9. Máy tính

Là một trong những dự án Python đơn giản, chương trình này tạo ra một ứng dụng máy tính cơ bản với các hàm cộng, trừ, nhân và chia

Đây là một trong những dự án thực hành Python tuyệt vời để học cách sử dụng vòng lặp, hàm, câu lệnh điều kiện, đầu vào của người dùng và định dạng chuỗi. Chúng tôi cũng đã sử dụng mô-đun Python os để xóa màn hình sau khi người dùng hoàn thành các thao tác tính toán của họ

Mã mẫu

________số 8

10. Đồng hồ đếm ngược và hẹn giờ

Ý tưởng dự án Python này thật thú vị. Ở đây, chúng tôi đã tạo đồng hồ đếm ngược hỏi người dùng trong một số giây thông qua đầu vào của người dùng và sau đó đồng hồ đếm ngược từng giây cho đến khi hiển thị thông báo

Chúng tôi đã sử dụng mô-đun thời gian của Python. hàm sleep() để tạm dừng trong khoảng thời gian 1 giây. Chúng tôi kết hợp điều này với một số định dạng chuỗi tiện lợi để tạo màn hình đếm ngược

Mã nguồn

'''
Countdown Timer
-------------------------------------------------------------
'''


import time


def countdown(user_time):
   while user_time >= 0:
       mins, secs = divmod(user_time, 60)
       timer = '{:02d}:{:02d}'.format(mins, secs)
       print(timer, end='\r')
       time.sleep(1)
       user_time -= 1
   print('Lift off!')


if __name__ == '__main__':
   user_time = int(input("Enter a time in seconds: "))
   countdown(user_time)

11. Thuật toán tìm kiếm nhị phân

Đó là một nghi thức vượt qua đối với tất cả các lập trình viên tham vọng giải quyết Tìm kiếm nhị phân trong một trong các dự án lập trình Python của họ vào một thời điểm nào đó

Dự án Python cho tìm kiếm nhị phân này nhận một danh sách (mảng) được sắp xếp, sau đó liên tục so sánh giá trị tìm kiếm với phần giữa của mảng

Tùy thuộc vào việc giá trị tìm kiếm nhỏ hơn hay lớn hơn giá trị ở giữa, danh sách được chia (chiến lược phân chia và chinh phục) để giảm không gian tìm kiếm, phù hợp với giá trị tìm kiếm nhất định. Sự phân chia liên tục này dẫn đến độ phức tạp thời gian logarit

Nếu bạn nhìn vào mã bên dưới, bạn sẽ thấy rằng chúng tôi đã triển khai hai giải pháp. vòng lặp có điều kiện và đệ quy. Cả hai cách tiếp cận đều tao nhã, vì vậy hãy thoải mái thử nghiệm từng cách

Nếu bạn chưa quen với đệ quy, thì đây là phần giới thiệu tuyệt vời vì nó minh họa cách chúng tôi 'giảm' kích thước của vấn đề với mỗi lệnh gọi đệ quy, cụ thể là bằng cách tách danh sách sang một bên của phần tử ở giữa hiện tại

Chúng tôi cũng đã định nghĩa trường hợp cơ sở đệ quy là điểm khi phần tử ở giữa bằng phần tử tìm kiếm. Trong trường hợp này, đệ quy sẽ dừng và trả về giá trị True thông qua ngăn xếp cuộc gọi

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

0

12. Hợp nhất thuật toán sắp xếp

Sắp xếp hợp nhất là một thách thức mã hóa phổ biến khác mà các lập trình viên đầy tham vọng phải đối mặt khi tìm kiếm những việc cần làm trong Python

Chiến lược chia để trị này sử dụng phép chia để tách danh sách các số thành các phần bằng nhau và sau đó chúng được sắp xếp đệ quy trước khi được kết hợp lại để tạo danh sách được sắp xếp

Nếu bạn vừa hoàn thành ví dụ Tìm kiếm nhị phân, bạn có thể nhận thấy một số điểm tương đồng với phép chia và giảm kích thước bài toán. Bạn nói đúng, điều đó có nghĩa là bạn có thể đã nhận ra rằng chúng ta cần sử dụng đệ quy

Việc triển khai Sắp xếp hợp nhất Python này sử dụng đệ quy để xử lý quá trình phân chia và chinh phục. Việc giảm kích thước vấn đề liên tục cho phép giải quyết vấn đề khi đạt đến trường hợp cơ sở đệ quy, cụ thể là khi kích thước vấn đề là một phần tử hoặc ít hơn

Về bản chất, chương trình Python này tiếp tục phân chia đệ quy danh sách cho đến khi gặp trường hợp cơ sở. Tại thời điểm này, nó bắt đầu sắp xếp các phần nhỏ hơn của vấn đề, dẫn đến các mảng được sắp xếp nhỏ hơn được kết hợp lại để cuối cùng tạo ra một mảng được sắp xếp đầy đủ. Nếu bạn đã quen thuộc với ký hiệu Big O, bạn sẽ tò mò muốn biết rằng Sắp xếp Hợp nhất có Big O là (n logn)

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

1

13. Tạo mật khẩu

Đây là một dự án Python thú vị sử dụng các mô-đun chuỗi và bí mật để tạo mật khẩu mạnh và an toàn, giống như bạn có thể làm với các trình quản lý mật khẩu phổ biến

Mô-đun chuỗi lấy tất cả các chữ cái, chữ số và ký tự đặc biệt có thể có, trong khi mô-đun bí mật cho phép chúng tôi lấy mật khẩu bảo mật bằng mật mã

Mã cho dự án này tương đối đơn giản vì nó sử dụng một vòng lặp để liên tục tạo mật khẩu cho đến khi nó chứa ít nhất một ký tự đặc biệt và hai chữ số. Tất nhiên, bạn có thể sửa đổi điều này để phù hợp với các quy tắc mật khẩu siêu mạnh của riêng bạn

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

2

14. Chuyển đổi tiền tệ

Đây là một trong một số ý tưởng dự án Python yêu cầu chúng tôi cài đặt thư viện Python mới, trong trường hợp này là mô-đun yêu cầu. Điều này không được bao gồm trong thư viện chuẩn Python, vì vậy hãy sử dụng lệnh pip được hiển thị trong mã nguồn để cài đặt nó trên hệ thống của bạn

Với mô-đun yêu cầu, chúng tôi có thể tạo các yêu cầu HTTP tới Fixer API, cho phép chúng tôi chuyển đổi một loại tiền tệ này sang loại tiền tệ khác. Bạn có thể nhận thấy rằng chúng tôi đang sử dụng API của bên thứ 3, vì vậy bạn cần đăng ký để nhận khóa API miễn phí. Sau đó, bạn có thể nhập khóa API của mình vào trường được hiển thị trong mã nguồn và bạn sẽ sẵn sàng sử dụng

Dự án này cho phép bạn thực hành thêm với các vòng lặp và đầu vào của người dùng, nhưng nó mở rộng về điều này với các yêu cầu HTTP để truy xuất dữ liệu API ở định dạng JSON

Nếu bạn không quen với JSON, thì nó rất giống với từ điển Python, nghĩa là chúng ta có thể truy cập các cặp khóa-giá trị để tìm nạp dữ liệu mà chúng ta đang theo dõi. Trong trường hợp này, chúng tôi đang tìm kiếm kết quả chuyển đổi tiền tệ từ lệnh gọi API

Xem các tài liệu trên trang Fixer API để biết thêm chi tiết về các dữ liệu khác nhau mà bạn có thể truy xuất

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

3

15. Gửi thư sinh nhật tự động

Dự án Python này sử dụng các mô-đun smtplib, EmailMessage và datetime tiêu chuẩn, ngoài pandas và openpyxl (những thứ này cần được cài đặt pip, như được hiển thị bên dưới) để gửi email sinh nhật tự động

Chương trình này đọc từ một trang tính excel chứa tất cả thông tin chi tiết về bạn bè của bạn (xem định dạng trang tính excel trong mã nguồn bên dưới). Sau đó, nó sẽ gửi cho họ một email nếu hôm nay là ngày trọng đại của họ, trước khi ghi chú vào bảng tính của bạn để nói rằng họ đã nhận được email của mình

Chúng tôi đã sử dụng các mô-đun smtplib và EmailMessage để tạo kết nối SSL tới tài khoản email và tin nhắn của chúng tôi. Sau đó, chúng tôi đã sử dụng khung dữ liệu gấu trúc để lưu trữ dữ liệu kiểu bảng tính trong chương trình Python (một kỹ năng cần thiết cho các nhà khoa học dữ liệu). Cuối cùng, chúng tôi đã sử dụng định dạng ngày với mô-đun datetime. hàm strftime()

Vì vậy, rất nhiều kỹ năng mới để nắm bắt

Lưu ý quan trọng. kể từ tháng 5 năm 2022, Google đã thắt chặt các hạn chế đối với 'ứng dụng kém an toàn' truy cập Gmail. Bạn sẽ cần làm theo một số bước bổ sung để sử dụng mã này với tài khoản Gmail của mình. Nhưng đừng lo lắng, chúng rất dễ thực hiện và chúng tôi đã liệt kê chúng cho bạn

  • Truy cập trang 'quản lý tài khoản' cho tài khoản google của bạn
  • Nhấp vào Bảo mật
  • Kích hoạt 2FA (sử dụng bất kỳ phương pháp nào bạn thích)
  • Nhấp vào 'Mật khẩu ứng dụng'
  • Nhấp vào 'Chọn ứng dụng' và chọn 'Thư'
  • Nhấp vào 'Chọn thiết bị' và chọn 'Khác (tên tùy chỉnh)', nhập 'Ứng dụng sinh nhật Python'
  • Nhấp vào 'Tạo', sau đó lưu mật khẩu này

Giờ đây, bạn có thể sử dụng mật khẩu ứng dụng này trong mã bên dưới để truy cập tài khoản Gmail của mình mà không gặp sự cố nào

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

4

16. Xếp hàng

Dự án Python này tạo một lớp mới để triển khai Hàng đợi. Đây là cấu trúc dữ liệu phổ biến trong khoa học máy tính khi bạn cần xử lý các tình huống Nhập trước xuất trước (FIFO), chẳng hạn như hàng đợi tin nhắn, tác vụ CPU, v.v.

Mã đơn giản và cung cấp thêm một số thực hành với lập trình hướng đối tượng. Kiểm tra hàng đợi để tìm hiểu cách thức hoạt động của nó và sau đó bạn sẽ sẵn sàng sử dụng cấu trúc dữ liệu này trong các dự án khác của mình

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

5

17. Tam giác Pascal

Dự án Python này in ra Tam giác Pascal bằng cách sử dụng các câu lệnh và vòng lặp có điều kiện. Nó cũng sử dụng mô-đun toán học và hàm giai thừa của thư viện tiêu chuẩn để đánh giá phương trình 'số tổ hợp' được sử dụng để tạo các giá trị trong tam giác

Thử nghiệm với số hạt giống cho tam giác để kiểm tra cách sử dụng phương trình 'tổ hợp' để tạo ra các giá trị liên tiếp trong tam giác.  

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

6

18. bài xì dách

Là một trong những dự án Python thú vị nhất, điều này sẽ thu hút bất kỳ ai thích trò chơi bài, vì chúng tôi sẽ mô phỏng Blackjack. Đây là một trò chơi bài siêu phổ biến với các quy tắc tương đối đơn giản. điều quan trọng nhất là bạn cần 21 để giành chiến thắng hoặc bạn cần điểm cao hơn người chia bài mà không bị phá sản

Đây là dự án lớn nhất trong danh sách cho đến nay. Nó kết hợp hầu hết các kỹ năng mà chúng ta đã đề cập trong các dự án trước, bao gồm tạo lớp, vòng lặp, câu lệnh điều kiện, nhập mô-đun, chấp nhận đầu vào của người dùng và định dạng chuỗi

Dành thời gian của bạn để làm việc qua các phần khác nhau của mã này và liên hệ nó với các dự án trước đó để xem các kỹ thuật khác nhau hoạt động cùng nhau như thế nào. Không có gì bạn chưa từng thấy trước đây;

Và chúng ta nên nói, cố gắng đừng dành cả ngày để chơi với nó. Nhưng chúng tôi hoàn toàn hiểu nếu bạn làm

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

7

19. Bot Reddit

Dự án Python này tạo bot reddit tự động với một số mô-đun mới, cụ thể là praw và enchant (xem các lệnh cài đặt pip)

Đây là một khái niệm khá đơn giản vì chương trình kiểm tra mọi bình luận trong một subreddit đã chọn, sau đó trả lời bất kỳ bình luận nào có chứa 'cụm từ kích hoạt' được xác định trước. Để làm điều này, chúng tôi sử dụng mô-đun praw để tương tác với reddit và mê hoặc để tạo các từ tương tự cho nhận xét, cho phép chúng tôi đưa ra câu trả lời thích hợp

Ý tưởng này thực sự hữu ích nếu bạn đang tìm kiếm các dự án Python để học cách trả lời các câu hỏi trong subreddit của riêng bạn. Bạn chỉ cần mở rộng mã này để bao gồm các câu trả lời tự động cho các câu hỏi được xác định trước (có thể bạn đã nhận thấy mã này được sử dụng bởi những người khác trên reddit. ).  

Lưu ý quan trọng. Bạn sẽ cần kiểm tra để nắm giữ client_id, client_secret, tên người dùng, mật khẩu và user_agent. Bạn sẽ cần thông tin này để đưa ra nhận xét cho reddits qua giao diện API

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

8

20. Trình tạo Fibonacci

Các số Fibonacci có thể là một trong những số quan trọng nhất trong cuộc sống của chúng ta vì chúng xuất hiện rất thường xuyên trong tự nhiên

Mã Python bên dưới tạo các số Fibonacci đến một độ dài nhất định bằng cách sử dụng đệ quy (vâng, nhiều đệ quy hơn. ). Để ngăn thời gian tính toán vượt quá tầm kiểm soát, chúng tôi đã triển khai tính năng ghi nhớ vào bộ đệm các giá trị khi chúng tôi tính toán chúng

Bạn sẽ nhận thấy rằng đối với thuật toán đệ quy này, trường hợp cơ sở được đặt để kiểm tra xem giá trị chuỗi Fibonacci đã cho đã được lưu trong bộ đệm chưa. Nếu đúng như vậy, nó sẽ trả về this (là phép toán có độ phức tạp thời gian không đổi), giúp tiết kiệm một lượng lớn thời gian tính toán

Mã nguồn

'''
Number Guessing Game
-------------------------------------------------------------
'''

import random

attempts_list = []


def show_score():
  if not attempts_list:
      print('There is currently no high score, it\'s yours for the taking!')

  else:
      print(f'The current high score is {min(attempts_list)} attempts')


def start_game():
   attempts = 0
   rand_num = random.randint(1, 10)
   print('Hello traveler! Welcome to the game of guesses!')
   player_name = input('What is your name? ')
   wanna_play = input(
       f'Hi, {player_name}, would you like to play the guessing game?'
       '(Enter Yes/No): ')

   if wanna_play.lower() != 'yes':
      print('That\'s cool, Thanks!')
      exit()
   else:
       show_score()

   while wanna_play.lower() == 'yes':
       try:
           guess = int(input('Pick a number between 1 and 10: '))
           if guess < 1 or guess > 10:
               raise ValueError(
                   'Please guess a number within the given range')

           attempts += 1
           attempts_list.append(attempts)

           if guess == rand_num:
               print('Nice! You got it!')
               print(f'It took you {attempts} attempts')
               wanna_play = input(
                   'Would you like to play again? (Enter Yes/No): ')
               if wanna_play.lower() != 'yes':
                   print('That\'s cool, have a good one!')
                   break
               else:
                   attempts = 0
                   rand_num = random.randint(1, 10)
                   show_score()
                   continue
           else:
               if guess > rand_num:
                   print('It\'s lower')
               elif guess < rand_num:
                   print('It\'s higher')

       except ValueError as err:
           print('Oh no!, that is not a valid value. Try again...')
           print(err)


if __name__ == '__main__':
   start_game()

9

Ý tưởng dự án Python nâng cao

21. chatbot

Dự án Python này sử dụng mô-đun chatbot (xem hướng dẫn cài đặt pip bên dưới) để huấn luyện một chatbot tự động trả lời bất kỳ câu hỏi nào của bạn. Tôi biết;

Bạn sẽ thấy rằng chương trình này là một trong những dự án Python tương đối nhỏ trong danh sách này, nhưng hãy thoải mái khám phá tài liệu ChatterBot cùng với lĩnh vực rộng hơn về AI chatbot nếu bạn muốn tìm hiểu thêm hoặc mở rộng các tính năng của mã

Lưu ý quan trọng. ChatterBot không còn được duy trì tích cực. Điều này có nghĩa là bạn cần thực hiện một thay đổi nhỏ đối với việc gắn thẻ. py nằm trong thư mục ‘Lib/site-packages/chatterbot’ của thư mục cài đặt Python của bạn

Đừng lo; .  

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
0

Sửa đổi gắn thẻ. py

Tìm đoạn mã đầu tiên là một phần của phương thức __init__ cho lớp PosLemmaTagger. Thay thế điều này bằng câu lệnh if/else

Ghi chú. ví dụ này dành cho thư viện tiếng Anh mà chúng tôi đã sử dụng trong ví dụ của mình, nhưng vui lòng chuyển nó sang ngôn ngữ khác nếu bạn muốn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
1

22. chuyển văn bản thành giọng nói

Dự án Python này sử dụng một loạt các thư viện mới để chuyển đổi một bài báo hiện có thành tệp mp3 có thể phát được. Bạn sẽ cần cài đặt nltk (bộ công cụ ngôn ngữ tự nhiên), báo3k và gtts (xem hướng dẫn cài đặt pip)

Bạn sẽ thấy rằng chương trình rất đơn giản, vì chúng ta chỉ cần nhập một URL để bài viết chuyển đổi, sau đó để chức năng mà chúng ta đã xác định xử lý chuyển đổi văn bản thành giọng nói với các mô-đun mới được cài đặt của chúng ta

Vì vậy, hãy cân nhắc thử điều này vào lần tới khi bạn thích biến một bài viết thành một podcast có thể phát được vì đây chắc chắn là một trong những mã Python thú vị để sao chép.  

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
2

23. Hệ thống quản lý thư viện

Là một trong những dự án Python nâng cao hơn, chương trình này sử dụng lập trình hướng đối tượng để mô phỏng hệ thống quản lý thư viện

Trong ví dụ này, chúng tôi tạo một lớp Thư viện và Sinh viên, chúng tôi có thể sử dụng lớp này để tạo hệ thống thư viện và người dùng của nó. Sau đó, chúng tôi đã triển khai một giao diện người dùng đơn giản yêu cầu người dùng chọn từ một loạt các hành động tiêu chuẩn của thư viện, chẳng hạn như mượn hoặc trả sách.  

Đây là một ví dụ đơn giản nhưng mạnh mẽ về cách bạn có thể xây dựng các hệ thống trong thế giới thực thông qua Python và lập trình hướng đối tượng. Vui lòng mở rộng các lớp để bao gồm các tính năng hữu ích khác, như ID sách duy nhất, nhiều bản sao của cùng một cuốn sách, ngày trả sách, phí trả sách muộn hoặc bất kỳ tính năng nào khác mà bạn cho rằng thư viện nên có

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
3

24. Trò chơi Pong Arcade

Đây là một dự án thực sự vui nhộn và thú vị vì chúng tôi đã sử dụng mô-đun rùa Python để mô phỏng trò chơi arcade cổ điển Pong

Chúng tôi đã sử dụng nhiều phương pháp khác nhau từ mô-đun rùa để tạo các thành phần trò chơi của mình và phát hiện va chạm bóng với mái chèo của người chơi. Chúng tôi cũng đã xác định một loạt các tổ hợp phím để đặt các điều khiển người dùng cho mái chèo bên trái và bên phải của người chơi. Vui lòng thử nghiệm các cài đặt của trò chơi để hiểu rõ hơn về cách hoạt động của từng cài đặt và ảnh hưởng đến toàn bộ trò chơi

Ngoài các hàm đồ họa con rùa mới được giới thiệu này, chúng tôi đã sử dụng định dạng chuỗi để xuất bảng điểm hiện tại và các hàm do người dùng xác định để giữ cho mã của chúng tôi gọn gàng. Đây là những khái niệm bạn nên làm quen ở giai đoạn này

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
4

25. Kiểm tra đánh máy tốc độ

Đây là một dự án Python thú vị để kiểm tra xem bạn có thể gõ chính xác một câu nhanh như thế nào

Chương trình này yêu cầu chúng tôi tạo giao diện người dùng đồ họa (GUI) thông qua mô-đun tkinter. Nếu bạn chưa quen với GUI, ví dụ này là phần giới thiệu thú vị khi chúng tôi sử dụng một loạt các nhãn, nút và trường nhập đơn giản để tạo cửa sổ. Chúng tôi cũng đã sử dụng mô-đun timeit của Python để xử lý khía cạnh thời gian của bài kiểm tra đánh máy và mô-đun ngẫu nhiên để chọn ngẫu nhiên một cụm từ kiểm tra

Chúng tôi chỉ thêm hai cụm từ thử nghiệm vào ví dụ này, nhưng vui lòng thử nghiệm nhiều hơn hoặc thậm chí tích hợp từ điển của bên thứ ba để có nhiều ví dụ hơn

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
5

26. soạn thảo văn bản

Dựa trên ví dụ về tkinter cuối cùng của chúng ta, dự án Python thú vị này tạo ra một GUI để mô phỏng trình soạn thảo văn bản của chính chúng ta. Ví dụ này cũng sử dụng các thành phần GUI tiêu chuẩn, bao gồm nhãn, nút và trường nhập

Tuy nhiên, chúng tôi cũng đã thêm khả năng mở và lưu tệp như một trình soạn thảo văn bản thực sự. Nếu bạn chưa quen với việc xử lý tệp, dự án Python này là một cách tuyệt vời để hiểu cách đọc và lưu tệp

Thử nghiệm với mã bên dưới để củng cố hiểu biết của bạn và xem liệu bạn có thể mở rộng mã này để tạo các tính năng khác mà bạn đã quen sử dụng với trình soạn thảo văn bản hay không, chẳng hạn như chức năng 'tìm từ'

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
6

27. Sudoku Solver

Dự án Python này sử dụng thư viện pygame (xem hướng dẫn cài đặt pip) để triển khai GUI để tự động giải các câu đố sudoku. Chúng tôi sử dụng một số chức năng do người dùng xác định để tạo GUI, như hình bên dưới

Để giải câu đố sudoku, chương trình này sử dụng thuật toán quay lui để kiểm tra dần các giải pháp, áp dụng hoặc từ bỏ giải pháp hiện tại nếu giải pháp đó không khả thi

Bước từ bỏ một giải pháp này là đặc điểm xác định của phương pháp quay lui, vì chương trình sẽ lùi lại để thử một giải pháp mới cho đến khi tìm thấy một giải pháp hợp lệ. Quá trình này được thực hiện dần dần cho đến khi toàn bộ lưới được điền chính xác

Vui lòng thử nghiệm với các bài toán sudoku khác nhau và thậm chí nghĩ đến việc mở rộng kích thước của lưới bài toán (bạn sẽ cần một hình ảnh cơ sở mới nếu bạn làm điều này)

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
7

28. Trình kiểm tra kết nối trang web

Dự án Python này sử dụng các mô-đun urllib và tkinter để kiểm tra kết nối trang web

Chúng tôi đã sử dụng mô-đun tkinter để tạo GUI cho phép người dùng nhập địa chỉ web. Giống như các ví dụ trước của chúng tôi, điều này bao gồm nhãn, nút và trường nhập

Sau khi chúng tôi đã thu thập địa chỉ web của người dùng, chúng tôi chuyển địa chỉ này tới hàm do người dùng xác định để trả về mã trạng thái HTTP cho trang web hiện tại thông qua mô-đun urllib. hàm getcode()

Đối với ví dụ này, chúng tôi chỉ cần xác định xem mã HTTP có phải là 200 hay không. Nếu có, chúng tôi biết trang web đang hoạt động;

Bạn có thể mở rộng mã này để xem xét cách tiếp cận chi tiết hơn để xử lý các mã phản hồi HTTP khác nhau, vì vậy vui lòng thêm mã này

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
8

29. Máy dò ngôn ngữ

Dự án Python này sử dụng mô-đun langdetect (xem hướng dẫn cài đặt pip) để giúp chúng tôi xác định ngôn ngữ đã được nhập. Điều này có thể thực sự hữu ích nếu bạn không chắc mình đang xử lý ngôn ngữ nào.  

Đây là một ví dụ khác mà chúng tôi đã sử dụng tkinter để tạo một GUI đơn giản bao gồm nhãn, nút và trường nhập. Sau đó, chúng tôi có thể thu thập văn bản từ trường mục nhập và xử lý văn bản này bằng langdetect để xác định ngôn ngữ nào đã được nhập. Cuối cùng ta in kết quả này ra GUI để người dùng biết kết quả

Lưu ý rằng kết quả do langdetect trả về là mã ngôn ngữ viết tắt. Ví dụ: nếu chúng ta nhập văn bản tiếng Anh, chúng ta sẽ thấy 'en' là giá trị trả về

Mã nguồn

'''
Rock Paper Scissors
-------------------------------------------------------------
'''


import random
import os
import re


def check_play_status():
  valid_responses = ['yes', 'no']
  while True:
      try:
          response = input('Do you wish to play again? (Yes or No): ')
          if response.lower() not in valid_responses:
              raise ValueError('Yes or No only')

          if response.lower() == 'yes':
              return True
          else:
              os.system('cls' if os.name == 'nt' else 'clear')
              print('Thanks for playing!')
              exit()

      except ValueError as err:
          print(err)


def play_rps():
   play = True
   while play:
       os.system('cls' if os.name == 'nt' else 'clear')
       print('')
       print('Rock, Paper, Scissors - Shoot!')

       user_choice = input('Choose your weapon'
                           ' [R]ock], [P]aper, or [S]cissors: ')

       if not re.match("[SsRrPp]", user_choice):
           print('Please choose a letter:')
           print('[R]ock, [P]aper, or [S]cissors')
           continue

       print(f'You chose: {user_choice}')

       choices = ['R', 'P', 'S']
       opp_choice = random.choice(choices)

       print(f'I chose: {opp_choice}')

       if opp_choice == user_choice.upper():
           print('Tie!')
           play = check_play_status()
       elif opp_choice == 'R' and user_choice.upper() == 'S':
           print('Rock beats scissors, I win!')
           play = check_play_status()
       elif opp_choice == 'S' and user_choice.upper() == 'P':
           print('Scissors beats paper! I win!')
           play = check_play_status()
       elif opp_choice == 'P' and user_choice.upper() == 'R':
           print('Paper beats rock, I win!')
           play = check_play_status()
       else:
           print('You win!\n')
           play = check_play_status()


if __name__ == '__main__':
   play_rps()
9

30. Hệ thống đề xuất Netflix

Cuối cùng, chúng tôi đã lưu một dự án Python đặc biệt thú vị. Đây là một hệ thống đề xuất của Netflix, lý tưởng cho các nhà khoa học dữ liệu đầy tham vọng hoặc những người đam mê máy học

Để tạo dự án này, bạn cần nhập nhiều mô-đun, bao gồm tkinter, re, nltk, pandas và numpy (xem hướng dẫn cài đặt pip cho các mô-đun mới). Bạn cũng cần tải xuống bộ dữ liệu chứa phim và chương trình truyền hình Netflix từ đây.  

Chúng tôi sẽ sử dụng tkinter để tạo GUI của mình, giao diện này sẽ sử dụng nhãn, nút và trường nhập. Sau đó, người dùng sẽ có thể tham gia một chương trình truyền hình hoặc bộ phim họ thích trên Netflix để trả về các đề xuất dựa trên sở thích của họ.  

Công cụ đề xuất sử dụng dàn diễn viên, đạo diễn, xếp hạng, quốc gia và thể loại làm 'tính năng' của máy học (ML). Sau đó, mã này sử dụng phương pháp 'tương tự cosin' để tìm các kết quả tương tự dựa trên đầu vào của người dùng. Điều này sử dụng rộng rãi gấu trúc và numpy để làm sạch dữ liệu và chuẩn bị xử lý

Có rất nhiều thứ để giải nén trong ví dụ này. Cách tiếp cận tốt nhất là từ từ làm việc với mã và sau đó thực hiện nghiên cứu sâu hơn về Học máy (ML), 'tính năng' và 'độ tương tự cosin'.  

Sau đó, bạn sẽ có thể hiểu cách sử dụng tập dữ liệu để đưa ra các đề xuất dựa trên những điểm tương đồng. Nếu bạn là một nhà khoa học dữ liệu đầy tham vọng, thì đây là một dự án tuyệt vời để bạn bắt tay vào làm

Mã nguồn

'''
Dice Roll Generator
-------------------------------------------------------------
'''


import random
import os


def num_die():
  while True:
      try:
          num_dice = input('Number of dice: ')
          valid_responses = ['1', 'one', 'two', '2']
          if num_dice not in valid_responses:
              raise ValueError('1 or 2 only')
          else:
              return num_dice
      except ValueError as err:
          print(err)


def roll_dice():
   min_val = 1
   max_val = 6
   roll_again = 'y'

   while roll_again.lower() == 'yes' or roll_again.lower() == 'y':
       os.system('cls' if os.name == 'nt' else 'clear')
       amount = num_die()

       if amount == '2' or amount == 'two':
           print('Rolling the dice...')
           dice_1 = random.randint(min_val, max_val)
           dice_2 = random.randint(min_val, max_val)

           print('The values are:')
           print('Dice One: ', dice_1)
           print('Dice Two: ', dice_2)
           print('Total: ', dice_1 + dice_2)

           roll_again = input('Roll Again? ')
       else:
           print('Rolling the die...')
           dice_1 = random.randint(min_val, max_val)
           print(f'The value is: {dice_1}')

           roll_again = input('Roll Again? ')


if __name__ == '__main__':
   roll_dice()
0

Phần kết luận

Và bạn có nó rồi đấy. Chúng tôi đã giới thiệu 30 dự án Python thú vị, thú vị và thú vị với mã nguồn, từ đơn giản đến nâng cao. Chúng bao gồm các trò chơi, lập trình hướng đối tượng, GUI, trí tuệ nhân tạo (AI), học máy (ML), API, bot, mô-đun thư viện tiêu chuẩn và một số thư viện của bên thứ 3

Điểm chung của mỗi ý tưởng dự án Python này là chúng yêu cầu bạn áp dụng việc học Python lý thuyết của mình vào thực tế. Bằng cách này, bạn có thể tự kiểm tra và cải thiện các kỹ năng Python của mình khi thực hiện các bước để trở thành một lập trình viên thực tế tốt hơn.  

Bạn đang tìm cách xây dựng nhiều dự án hơn nữa với Python? .  

Các câu hỏi thường gặp

1. Python có phù hợp với các dự án lớn không?

Mặc dù có lập luận rằng Python chậm hơn các ngôn ngữ phổ biến khác như C và C++, nhưng Python vẫn được nhiều công ty công nghệ hàng đầu sử dụng rộng rãi vì nó siêu linh hoạt, dễ bảo trì và cung cấp rất nhiều thư viện cũng như hỗ trợ từ cộng đồng

2. Dự án Python đầu tiên của tôi nên là gì?

Kiểm tra bất kỳ dự án Python mới bắt đầu nào mà chúng tôi đã đề cập ở trên, bao gồm Mad Libs, Rock Paper Scissors, Hangman hoặc Tic-Tac-Toe

Mã Python phức tạp nhất là gì?

Spotify, YouTube, Instagram, Dropbox, cũng như Civilization IV chủ yếu dựa trên mã Python. Openstack (kiến trúc đám mây được NASA và CERN áp dụng) hợp lý là mã Python phức tạp nhất từ ​​trước đến nay. nó đếm được 2'400'000 dòng.

Bạn có thể sao chép và dán mã Python không?

Để sao chép văn bản, chỉ cần chọn văn bản đó và nhấn Ctrl-C (Command-C trên máy Mac) . Nếu phần tô sáng đánh dấu lựa chọn biến mất, điều đó là bình thường và điều đó có nghĩa là nó đã hoạt động. Để dán, hãy sử dụng Ctrl-V (Command-V trên máy Mac).

Mã phức tạp của Python là gì?

Hàm phức hợp Python() trả về một số phức ( thực + ảo) ví dụ (5+2j) khi phần thực và phần ảo được truyền hoặc nó cũng chuyển đổi một chuỗi thành một . .

Một số thủ thuật Python thú vị là gì?

Nếu kỹ năng Python của bạn chưa đến mức sơ khai, bạn cũng có thể nâng cao kỹ năng đó với Bản theo dõi kỹ năng Python của chúng tôi. .
# 1 cắt lát. a = "Xin chào thế giới. ".
#2 Hoán đổi tại chỗ / Chuyển nhượng đồng thời. .
#3 Danh sách so với. .
#4 Máy phát điện. .
# 5 Bí danh. .
#6 Toán tử 'không'. .
#7 Dây F. .
#8 Tham số 'kết thúc' của Chức năng In