2 مهر 1402
تهران، خیابان آزادی، تقاطع قریب
برنامه نویسی نرم افزار

پروژه پایتون رایگان برای تمرین کدنویسی + سورس کد

پروژه پایتون رایگان برای تمرین کدنویسی + سورس کد

این مطلب، حاوی تعدادی پروژه پایتون رایگان، برای کسانی است که می‌خواهند در کدنویسی پیشرفت کنند. بالتبع پروژه‌های پایتون این محتوا کمی پیشرفته‌تر از سطح مبتدی هستند، اما اگر هنوز در مسیر برنامه نویسی مبتدی هستید و می‌خواهید در ابتدا با پروژه‌های ساده‌تری کار کنید، می‌توانید از این مطالب استفاده کنید:

حالا بیایید وارد بازی شویم!

پروژه های پیشرفته و رایگان پایتون

حالا که نحوه نصب و کار با کتابخانه‌های اساسی پایتون و برخی کتابخانه‌های خارجی آن را یاد گرفته‌اید، اکنون وقت آن است که روی پروژه های پایتون رایگان پیشرفته و سورس کد آن‌ها کار کنید.

پروژه پایتون رایگان 1 ساعت دیجیتال پایتون

یکی از مهم‌ترین جنبه‌های ایجاد برنامه‌های GUI این است که می‌توانید آن‌ها را هر طوری که می‌خواهید، شخصی‌سازی کنید. از فونت متن گرفته تا رنگ پس‌زمینه، همه ویژگی‌ها برای شخصی‌سازی در دسترس هستند. در این مقاله، شما را با نحوه ایجاد ساعت دیجیتال با پایتون آشنا خواهیم کرد.

چگونه با پایتون یک ساعت دیجیتال بسازیم؟

در این‌جا خواهید آموخت که چگونه پروژه پایتون رایگان ساخت ساعت دیجیتال را انجام دهید. این یک کار ساده برای شروع کار با کتابخانه Tkinter در پایتون است. این یک پکیج built-in است که با پایتون ارائه می‌شود. Tkinter ویژگی‌های جالبی دارد که می‌توان از آن‌ها برای ساخت برنامه‌های ساده استفاده کرد.

حالا بیایید ببینیم که چگونه می‌توانیم یک GUI ساعت دیجیتال با پایتون ایجاد کنیم. در ابتدا، با وارد کردن کتابخانه‌ها شروع می‌کنیم:

				
					from tkinter import Label, Tk 
import time
				
			

حالا بیایید title و size برنامه خود را تعریف کنیم. توجه داشته باشید که در کد زیر، طول و عرض تابع resizable را به صورت True(1,1) تنظیم می‌کنیم. اگر یک پنجره ثابت می‌خواهید و نمی‌خواهید خروجی را maximize یا minimize کنید، می‌توانید آن را روی False(0,0) تنظیم کنید:

				
					app_window = Tk() 
app_window.title("Digital Clock") 
app_window.geometry("420x150") 
app_window.resizable(1,1)
				
			

حالا در این‌جا فونت نشان‌دهنده زمان و رنگ آن، عرض حاشیه و رنگ پس‌زمینه ساعت دیجیتال را در این پروژه پایتون رایگان تعریف می‌کنیم:

				
					text_font= ("Boulder", 68, 'bold')
background = "#f2e750"
foreground= "#363529"
border_width = 25
				
			

حالا در این‌جا تمام عناصر را برای تعریف label پلیکیشن ساعت، با هم ترکیب می‌کنیم:

				
					label = Label(app_window, font=text_font, bg=background, fg=foreground, bd=border_width) 
label.grid(row=0, column=1)
				
			

حالا بیایید عملکرد اصلی ساعت دیجیتال خود را تعریف کنیم. اینجا متن label را تحت عنوان realtime تعریف می‌کنیم:

				
					def digital_clock(): 
   time_live = time.strftime("%H:%M:%S")
   label.config(text=time_live) 
   label.after(200, digital_clock)
				
			

حالا بیایید پروژه پایتون رایگان خود را اجرا کنیم و خروجی را ببینیم:

				
					digital_clock()
app_window.mainloop()
				
			

کد کامل:

				
					from tkinter import Label, Tk 
import time
app_window = Tk() 
app_window.title("Digital Clock") 
app_window.geometry("420x150") 
app_window.resizable(1,1)

text_font= ("Boulder", 68, 'bold')
background = "#f2e750"
foreground= "#363529"
border_width = 25

label = Label(app_window, font=text_font, bg=background, fg=foreground, bd=border_width) 
label.grid(row=0, column=1)

def digital_clock(): 
   time_live = time.strftime("%H:%M:%S")
   label.config(text=time_live) 
   label.after(200, digital_clock)

digital_clock()
app_window.mainloop()
				
			

پروژه پایتون رایگان 2 – Desktop Notification با پایتون

ساختن اپلیکیشنی که برنامه‌ها و کارهایی که باید انجام دهید را به شما یادآوری کند، عالی است. در این بخش، نحوه نوشتن برنامه‌ای برای دریافت Desktop Notification با پایتون را به شما آموزش می‌دهیم.

برنامه Desktop Notification چگونه کار می‌کند؟

هدف اصلی برنامه Desktop Notification که امروز توسعه آن را به عنوان یک پروژه پایتون رایگان خواهید آموخت، این است که به طور مداوم کارهای مختلفی را که باید در طول روز انجام دهیم، به ما یادآوری کند.

این کار شبیه تهیه to-do list برای اهدافی است که می‌خواهیم در طول روز به سرانجام برسانیم. و برنامه Desktop Notification به طور مداوم ما را از کارها و اقداماتی که در طول روز باید انجام دهیم، مطلع می‌کند.

چگونه یک برنامه Desktop Notification را با پایتون کدنویسی کنیم؟

من می‌خواهم یک برنامه Desktop Notification ایجاد کنم تا بعد از هر ساعت، یک یادآوری برای استراحت دریافت کنم. پیام و هشدار شما می‌تواند هر چیزی باشد که می‌خواهید. شما می‌توانید لیستی از کارهایی که باید در روز، هفته یا ماه انجام دهید تهیه کنید و به اپلیکیشن بدهید تا آن‌ها را به شما یادآوری کند.

برای این کار، باید یک کتابخانه پایتون به نام Plyer نصب کنید که برای دسترسی به اجزای سخت افزاری سیستم شما استفاده می‌شود. این کتابخانه را می‌توان به راحتی با استفاده از pip command; pip install pyler نصب کرد.

حالا بیایید ببینیم چگونه می‌توانیم یک برنامه پایتون بنویسیم تا ناتیفیکیشن‌های دسکتاپ را دریافت کنیم:

				
					import time
from plyer import notification

if __name__ == "__main__":
    while True:
        notification.notify(
            title = "ALERT!!!",
            message = "Take a break! It has been an hour!",
            timeout = 10
        )
        time.sleep(3600)
				
			

پس از اجرای کد، به دلیل وجود حلقه while تعریف‌شده در کد، به طور مداوم تا هر ساعت یا زمانی که تعیین کرده‌اید، ناتیفیکیشن‌هایی دریافت خواهید کرد.

پروژه پایتون رایگان 3 با پایتون از دوربین گوشی خود استفاده کنید

استفاده از دوربین گوشی با پایتون برای کسانی که قصد ساخت اپلیکیشن‌های computer vision را دارند، بسیار مفید است. این برنامه‌ها از دوربین گوشی هوشمند به عنوان بخشی از خود استفاده می‌کنند. این پروژه پایتون رایگان، در این‌جا در ویندوز 10 اجرا می‌شود. امیدوارم که برای سایر سیستم عامل‌ها هم کار کند. اما اگر از ویندوز استفاده می‌کنید، نگران نباشید و مراحل ذکر شده را دنبال کنید:

فرآیند استفاده از دوربین گوشی با پایتون

  • ابتدا کتابخانه OpenCV را در پایتون نصب کنید: pip install opencv-python
  • اپلیکیشن IP Webcam را دانلود و بر روی گوشی هوشمند خود نصب کنید.
  • پس از نصب برنامه IP Webcam، مطمئن شوید که گوشی و کامپیوتر شما به یک شبکه متصل هستند. برنامه را روی گوشی خود اجرا کرده و روی Start Server کلیک کنید.
  • پس از آن، دوربین گوشی شما با یک آدرس IP در پایین باز می‌شود. آدرس IP را کپی کنید. زیرا برای باز کردن دوربین گوشی شما در پایتون، باید از آن در کد پایتون استفاده کنیم.

حالا بیایید کدنویسی کنیم تا ببینیم چگونه می‌توانیم در یک پروژه  پایتون رایگان، دوربین گوشی شما را برای تسک‌های computer vision باز کنیم:

				
					import cv2
import numpy as np
url = "Your IP Address/video"
cp = cv2.VideoCapture(url)
while(True):
    camera, frame = cap.read()
    if frame is not None:
        cv2.imshow("Frame", frame)
    q = cv2.waitKey(1)
    if q==ord("q"):
        break
cv2.destroyAllWindows()
				
			

بعد از چند لحظه، یک پنجره OpenCV ظاهر می‌شود و بقیه کارها را انجام می‌دهد. هر کلیدی را که فشار دهید، پنجره بسته می‌شود. این نحوه اتصال دوربین گوشی به پایتون برای اپلیکیشن‌های computer vision است. مرحله بعدی، بستگی به نحوه استفاده شما از این قابلیت دارد.

پروژه پایتون رایگان 4 رابط کاربری گرافیکی Music Player با پایتون

Music Player به شما امکان می‌دهد تمام فایل‌های موسیقی خود را به سرعت و به راحتی مدیریت کرده و آن‌ها را گوش کنید. در این پروژه پایتون رایگان، شما را با نحوه ایجاد Music Player GUI آشنا خواهیم کرد.

چگونه با پایتون یک Music Player GUI بسازیم؟

اولین مرحله، انتخاب یک فریم‌ورک GUI در پایتون است. در این‌جا من از دو کتابخانه اصلی GUI برای ایجاد یک Music Player با پایتون استفاده می‌کنم:

  • Pygame
  • Tkinter

Pygame یک کتابخانه پایتون است که برای ساخت بازی‌های ویدیویی استفاده می‌شود. برای ایجاد یک Music Player با پایتون، از مؤلفه sound در این کتابخانه استفاده خواهیم کرد.

Tkinter کتابخانه‌ای برای ایجاد اپلیکیشن‌های GUI است. در این‌جا ما نیازی نداریم که از تمام توابع آن استفاده کنیم. فقط باید از متد askdirectory() و سایر متدهایی که در کد زیر مشاهده خواهید کرد، بهره ببریم.

سپس عملکردهایی مانند play ، stop ، pause و resume را برای کنترل Music Player ایجاد می‌کنیم. برای ایجاد این دستورات، چند تابع می‌سازیم و از Tkinter برای ایجاد دکمه در رابط کاربری استفاده می‌کنیم.

اکنون قصد داریم تمام مراحل بالا را در بخش زیر پیاده سازی کنیم تا Music Player خود را به عنوان یک پروژه پایتون رایگان ایجاد کنیم.

رابط کاربری گرافیکی Music Player چگونه در پایتون کدنویسی می‌شود؟

				
					import pygame
import tkinter as tkr
from tkinter.filedialog import askdirectory
import os

music_player = tkr.Tk()
music_player.title("My Music Player")
music_player.geometry("450x350")
directory = askdirectory()
os.chdir(directory)
song_list = os.listdir()

play_list = tkr.Listbox(music_player, font="Helvetica 12 bold", bg='yellow', selectmode=tkr.SINGLE)
for item in song_list:
    pos = 0
    play_list.insert(pos, item)
    pos += 1
pygame.init()
pygame.mixer.init()

def play():
    pygame.mixer.music.load(play_list.get(tkr.ACTIVE))
    var.set(play_list.get(tkr.ACTIVE))
    pygame.mixer.music.play()
def stop():
    pygame.mixer.music.stop()
def pause():
    pygame.mixer.music.pause()
def unpause():
    pygame.mixer.music.unpause()
Button1 = tkr.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="PLAY", command=play, bg="blue", fg="white")
Button2 = tkr.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="STOP", command=stop, bg="red", fg="white")
Button3 = tkr.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="PAUSE", command=pause, bg="purple", fg="white")
Button4 = tkr.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="UNPAUSE", command=unpause, bg="orange", fg="white")

var = tkr.StringVar() 
song_title = tkr.Label(music_player, font="Helvetica 12 bold", textvariable=var)

song_title.pack()
Button1.pack(fill="x")
Button2.pack(fill="x")
Button3.pack(fill="x")
Button4.pack(fill="x")
play_list.pack(fill="both", expand="yes")
music_player.mainloop()
				
			

اکنون شما Music Player خود را دارید و می‌توانید با استفاده از آن، به آهنگ‌های مورد علاقه‌تان گوش بدهید. به نظر من ایجاد برنامه‌هایی مانند Music Player یا سایر برنامه‌هایی که در زندگی روزمره کاربرد دارند، می‌توانند به شما کمک کنند تا فریم‌ورک‌های جدید پایتون را بشناسید و در برنامه نویسی پیشرفت کنید.

این یکی از بهترین راه‌ها برای بهبود مهارت‌های برنامه نویسی شما در ساختن چیزها یا خودکار کردن فرآیندهایی است که به شما در مهارت‌های برنامه‌نویسی، اعتماد به نفس بیشتری می‌دهد و در تقویت پورتفولیوی شما بسیار مفید است.

پروژه پایتون رایگان 5 – Game of Life با پایتون

Game of Life یا بازی زندگی که توسط ریاضیدان بریتانیایی، جان اچ.کانوی طراحی شده است، یک بازی تک‌نفره است که ظهور، سقوط و تناوب جامعه‌ای از موجودات زنده را شبیه‌سازی می‌کند. در این بخش از پروژه های پایتون رایگان، شما را با پیاده‌سازی Game of Life با پایتون آشنا می‌کنیم.

این بازی یکی از اولین نمونه‌های مسئله در ریاضیات مدرن به نام اتوماتای سلولی بود.

Game of Life

این بازی از یک شبکه مستطیل شکل از سلول‌ها با اندازه بی‌نهایت استفاده می‌کند که در آن هر سلول خالی توسط یک موجود زنده اشغال شده است. گفته می‌شود سلول‌های اشغال شده زنده هستند، در حالی که سلول‌های خالی مرده‌اند. این بازی در یک دوره خاص انجام می‌شود و در هر نوبت، یک «نسل» جدید بر اساس آرایش موجودات زنده در پیکربندی فعلی ایجاد می‌شود.

وضعیت یک سلول در نسل بعدی با اعمال چهار قانون اساسی زیر برای هر سلول از پیکربندی فعلی تعیین می‌شود:

  • اگر سلولی زنده باشد و دو یا سه همسایه زنده داشته باشد، سلول در نسل بعدی زنده می‌ماند.
  • سلول زنده‌ای که هیچ همسایه زنده‌ای ندارد، یا فقط یک همسایه زنده دارد، در نسل بعدی در انزوا می‌میرد.
  • سلول زنده‌ای که چهار یا بیش از چهار همسایه زنده دارد، به دلیل افزایش جمعیت در نسل بعدی می‌میرد.
  • یک سلول مرده با دقیقاً سه همسایه زنده، منجر به تولد می‌شود و در نسل بعدی زنده می‌ماند.

پیاده سازی Game of Life در پایتون

Game of Life با راه اندازی اولیه ارائه شده توسط کاربر آغاز می‌شود. نسل‌های متوالی با اعمال مجموعه‌ای از قوانین به طور همزمان برای هر سلول در شبکه ایجاد می‌شوند. با تغییر، افزایش یا در نهایت ناپدید شدن جمعیت موجودات، الگوهای جالبی می‌توانند ایجاد شوند. حالا بیایید ببینیم که چگونه می‌توانیم Game of Life را به عنوان یک پروژه پایتون رایگان پیاده سازی کنیم:

				
					class game_of_life:
    def gameOfLife(self, board: List[List[int]]) -> None:
        """
        Do not return anything, modify board in-place instead.
        """

        # Neighbors array to find 8 neighboring cells for a given cell
        neighbors = [(1,0), (1,-1), (0,-1), (-1,-1), (-1,0), (-1,1), (0,1), (1,1)]

        rows = len(board)
        cols = len(board[0])

        # Create a copy of the original board
        copy_board = [[board[row][col] for col in range(cols)] for row in range(rows)]

        # Iterate through board cell by cell.
        for row in range(rows):
            for col in range(cols):

                # For each cell count the number of live neighbors.
                live_neighbors = 0
                for neighbor in neighbors:

                    r = (row + neighbor[0])
                    c = (col + neighbor[1])

                    # Check the validity of the neighboring cell and if it was originally a live cell.
                    # The evaluation is done against the copy, since that is never updated.
                    if (r < rows and r >= 0) and (c < cols and c >= 0) and (copy_board[r][c] == 1):
                        live_neighbors += 1

                # Rule 1 or Rule 3        
                if copy_board[row][col] == 1 and (live_neighbors < 2 or live_neighbors > 3):
                    board[row][col] = 0
                # Rule 4
                if copy_board[row][col] == 0 and live_neighbors == 3:
                    board[row][col] = 1
				
			

پروژه پایتون 6 استخراج متن از ویدیو با پایتون

تشخیص گفتار یکی از کاربردهای جالب یادگیری ماشین است که به شما امکان می‌دهد متن پشت صدا را تشخیص دهید. با استفاده از تشخیص صدا، می‌توانیم متن را از یک ویدیو استخراج کنیم. در این پروژه پایتون رایگان، نحوه استخراج متن از ویدیوها با پایتون را به شما آموزش می‌دهیم.

استخراج متن از ویدیو با پایتون چگونه است؟

اولین قدم دانلود ویدیو است. پس از دانلود ویدیوها، باید دو کتابخانه پایتون را نصب کنید:

				
					SpeechRecognition: pip install SpeechRecognition 
moviepy: pip install moviepy

				
			

پس از نصب دو کتابخانه پایتون بالا، می‌توانید کار خود را با کدنویسی شروع کنید. در این‌جا برنامه کامل پایتون برای تبدیل یک ویدیو به متن آمده است:

				
					import speech_recognition as sr 
import moviepy.editor as mp
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip

num_seconds_video= 52*60
print("The video is {} seconds".format(num_seconds_video))
l=list(range(0,num_seconds_video+1,60))

diz={}
for i in range(len(l)-1):
    ffmpeg_extract_subclip("videorl.mp4", l[i]-2*(l[i]!=0), l[i+1], targetname="chunks/cut{}.mp4".format(i+1))
    clip = mp.VideoFileClip(r"chunks/cut{}.mp4".format(i+1)) 
    clip.audio.write_audiofile(r"converted/converted{}.wav".format(i+1))
    r = sr.Recognizer()
    audio = sr.AudioFile("converted/converted{}.wav".format(i+1))
    with audio as source:
      r.adjust_for_ambient_noise(source)  
      audio_file = r.record(source)
    result = r.recognize_google(audio_file)
    diz['chunk{}'.format(i+1)]=result
				
			

پس از استخراج کد پایتون بالا، باید یک سند متنی ایجاد کنید تا تمام متنی که از ویدیو استخراج شده است را ذخیره کنید:

				
					l_chunks=[diz['chunk{}'.format(i+1)] for i in range(len(diz))]
text='\n'.join(l_chunks)

with open('recognized.txt',mode ='w') as file: 
   file.write("Recognized Speech:") 
   file.write("\n") 
   file.write(text) 
   print("Finally ready!")
				
			

پروژه پایتون 7 ساخت بازی با پایتون

کدنویسی برای بازی همانقدر جالب است که بازی کردن جذابیت دارد. همه این کار را دوست دارند، ولی ساخت بازی به عنوان پروژه پایتون رایگان (یا حتی غیر رایگان!) بسیار متفاوت از انواع دیگر برنامه نویسی است. در این بخش از مقاله، نحوه ساخت بازی با زبان برنامه نویسی پایتون را به شما آموزش می‌دهیم.

به عنوان یک برنامه نویس، هنگام ساختن بازی باید بیشتر به منطق آن بازی فکر کنید. منطق بازی، قلب و روح بازی شماست، چرا که دنیای بازی، چیزهایی که در آن جهان هستند و نحوه تعامل آن‌ها با یکدیگر را مشخص می‌کند. همچنین مشخص می‌کند که چگونه می‌تواند وضعیت بازی را توسط محرک‌های خارجی تغییر داد. مانند فشردن یک دکمه توسط یک پلیر انسانی بر روی گیم‌پد یا یک فرآیند هوش مصنوعی برای کشتن کاراکتر بازی شما.

امروزه زبان‌های برنامه نویسی زیادی وجود دارند که می‌توانید از آن‌ها برای ساختن بازی استفاده کنید. بهترین انتخاب برای این کار، زبان برنامه نویسی ++C است. اما پایتون جامعه کاربری وسیعی دارد و مبتدیان پایتون چیز زیادی در مورد کارهایی که می‌توان با این زبان برنامه نویسی انجام داد نمی‌دانند. از این رو، در این پروژه پایتون رایگان، شما را با نحوه ساخت بازی با این زبان آشنا خواهیم کرد.

چگونه با پایتون یک بازی بسازیم؟

حالا بیایید ببینیم که چگونه می‌توانیم با پایتون یک بازی بسازیم. من قصد دارم یک بازی بسیار ساده بر اساس fidget spinner بسازم. منطق بازی این است که با فشردن کلید space bar، چرخش‌ها همچنان افزایش می‌یابد و سرعت آن را کاهش می‌دهد و در نقطه‌ای متوقف می‌شود که فشار دادن کلید فاصله، چرخش‌ها همچنان افزایش می‌یابد و سرعت آن را کاهش می‌دهد و در نقطه‌ای متوقف می‌شود که فشار دادن کلید فاصله را متوقف کنید.

برای ایجاد یک بازی با پایتون بر اساس منطق fidget spinner، از ماژول Turtle در پایتون استفاده می‌کنیم:

				
					from turtle import *
state = {'turn': 0}
def spinner():
    clear()
    angle = state['turn']/10
    right(angle)
    forward(100)
    dot(120, 'red')
    back(100)
    right(120)
    forward(100)
    dot(120, 'green')
    back(100)
    right(120)
    forward(100)
    dot(120, 'blue')
    back(100)
    right(120)
    update()
def animate():
    if state['turn']>0:
        state['turn']-=1

    spinner()
    ontimer(animate, 20)
def flick():
    state['turn']+=10

setup(420, 420, 370, 0)
hideturtle()
tracer(False)
width(20)
onkey(flick, 'space')
listen()
animate()
done()
				
			

در نتیجه، برای افزایش سرعت دکمه space bar را فشار دهید و برای کاهش سرعت، آن را رها کنید. امیدوارم این پروژه پایتون رایگان در مورد ساخت بازی برایتان مفید بوده باشد. اگر نظر، پیشنهاد یا سؤالی داشتید، آن را در بخش نظرات مطرح کنید.

پروژه پایتون رایگان 8 تصحیح املا با پایتون

در یادگیری ماشین، تصحیح املا و بررسی املا یک مشکل شناخته شده است و در زمینه پردازش زبان طبیعی (NLP)، مطالعاتی در این زمینه صورت گرفته است. در این مقاله، با یک پروژه یادگیری ماشین بسیار ابتدایی آشنا خواهید شد که املای کلمات را تصحیح می‌کند.

مقدمه‌ای بر تصحیح املای کلمات با پایتون

تصحیح اشتباهات املایی بخشی جدایی‌ناپذیر از نوشتن است. این کار در موارد مختلفی کاربرد دارد، از ارسال پیامک با تلفن، ارسال ایمیل، نوشتن اسناد بزرگ و جستجوی اطلاعات در وب.

تصحیح‌کننده‌های املای مدرن کامل نیستند، اما تقریباً در تمام نرم افزارهایی که به ورودی صفحه کلید متکی هستند، وجود دارند.

تصحیح املای کلمات اغلب از دو زاویه دیده می‌شود. بررسی املای Non-word، شامل تشخیص و تصحیح غلط‌های املایی است که منجر به نبود یک سری از کلمات می‌شود. در نقطه مقابل، بررسی املای Real-word شامل تشخیص و تصحیح غلط‌های املایی است، حتی اگر به طور تصادفی منجر به ایجاد یک کلمه انگلیسی واقعی شود. (خطاهای کلمه واقعی).

این می‌تواند ناشی از اشتباهات چاپی real-word (درج، حذف، جابجایی) باشد که به طور تصادفی یک کلمه واقعی تولید می‌کنند. یا از اشتباهات شناختی نشأت می‌گیرد که نویسنده از کلمه اشتباهی استفاده کرده است.

تصحیح املای کلمه با پایتون چگونه است؟

اکنون در این بخش، نحوه ایجاد یک پروژه پایتون رایگان برای کار تصحیح املای کلمات را به شما آموزش می‌دهیم:

				
					from textblob import TextBlob
words = ["Data Scence", "Mahine Learnin"]
corrected_words = []
for i in words:
    corrected_words.append(TextBlob(i))
print("Wrong words :", words)
print("Corrected Words are :")
for i in corrected_words:
    print(i.correct(), end=" ")
				
			
				
					Wrong words : ['Data Scence', 'Mahine Learnin']
Corrected Words are :
Data Science Machine Learning
				
			

خلاصه

با استفاده از کتابخانه textblob در پایتون، به راحتی می‌توانیم برای تصحیح املای کلمات، مدل‌های یادگیری ماشین بسازیم. تشخیص اشتباهات املایی real word کار بسیار دشوارتری است، زیرا هر کلمه‌ای در متن ورودی، ممکن است یک خطا باشد.

با این حال، می‌توان از noisy channel برای یافتن کلمات مشابه هر کلمه‌ای که کاربر تایپ کرده است، استفاده کرد و اصلاحاتی را که احتمالاً قصد اصلی کاربر بوده است، رتبه‌بندی کرد.

پروژه پایتون رایگان 9 – Turtle Graphics با پایتون

Turtle Graphics در پایتون، رویکردی با سابقه طولانی است. در این بخش، شما را از طریق یک برنامه پیشرفته برای ایجاد Turtle Graphics با زبان برنامه نویسی پایتون آشنا می‌کنم.

مقدمه‌ای بر Turtle Graphics در پایتون

در ابتدا، Turtle فقط یک جسم فیزیکی بود. مانند رباتی که می‌توان آن را روی یک صفحه کاغذ قرار داد و به آن دستور حرکت داد. سپس Turtle (لاک پشت) به یک نمایشگر بصری روی یک صفحه نمایش با وضوح بالا تبدیل شد که اغلب به اشکال مختلفی به تصویر کشیده می‌شد.

حتی در یک قالب کاملاً گرافیکی، مفهوم Turtle می‌تواند نمایش اقدامات انجام شده، و آن‌چه را که یک برنامه انجام می‌دهد، آسان‌تر کند.

ماژول Turtle محیطی را فراهم می‌کند که در آن لاک‌پشت‌ها بر روی یک شبکه دوبعدی حرکت می‌کنند. لاک‌پشت‌ها دارای موقعیت، جهت (جهت روبرو شدن لاک پشت)، انواع حالت‌های ممکن (لاک‌پشت‌ها می‌توانند زمانی که حرکت می‌کنند خطوطی با رنگ خاص بکشند، یا اثری از خود باقی نگذارند) و اعمال ممکن (چرخش به چپ یا راست، حرکت به جلو یا عقب) هستند.

یک شیء لاک پشتی، روش‌های زیادی برای حرکت دارد که می‌توان آن‌ها را به خانواده‌های مختلفی گروه‌بندی کرد. می‌توانید در مورد روش‌های ماژول Turtle در اسناد رسمی پایتون بیشتر بیاموزید. حالا اجازه دهید شما را با یک پروژه پایتون رایگان و پیشرفته در زمینه گرافیک Turtle آشنا کنم:

				
					import turtle as tu

roo = tu.Turtle()  # Turtle object
wn = tu.Screen()  # Screen Object
wn.bgcolor("black")  # Screen Bg color
wn.title("Fractal Tree Pattern")
roo.left(90)  # moving the turtle 90 degrees towards left
roo.speed(20)  # setting the speed of the turtle


def draw(l):  # recursive function taking length 'l' as argument
    if (l < 10):
        return
    else:

        roo.pensize(2)  # Setting Pensize
        roo.pencolor("yellow")  # Setting Pencolor as yellow
        roo.forward(l)  # moving turtle forward by 'l'
        roo.left(30)  # moving the turtle 30 degrees towards left
        draw(3 * l / 4)  # drawing a fractal on the left of the turtle object 'roo' with 3/4th of its length
        roo.right(60)  # moving the turtle 60 degrees towards right
        draw(3 * l / 4)  # drawing a fractal on the right of the turtle object 'roo' with 3/4th of its length
        roo.left(30)  # moving the turtle 30 degrees towards left
        roo.pensize(2)
        roo.backward(l)  # returning the turtle back to its original psition


draw(20)  # drawing 20 times

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("red")  # red
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)


########################################################

def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(3)
        roo.pencolor("lightgreen")  # lightgreen
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor("red")  # red
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor("yellow")  # yellow
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)


########################################################
def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(2)
        roo.pencolor("cyan")  # cyan
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("yellow")  # yellow
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)
wn.exitonclick()
				
			

پروژه پایتون رایگان 10 مسئله مونتی هال با پایتون

مسئله مونتی هال یک معمای شناخته شده است که از یک ریالیتی شوی آمریکایی به نام Let’s Make a Deal گرفته شده است. در این بخش، یک پروژه پایتون رایگان برای شبیه‌سازی مسئله مونتی هال را به شما معرفی می‌کنم.

مقدمه‌ای بر مسئله مونتی هال

ایده پشت این بازی بسیاری از مردم را به اشتباه می‌اندازد، و زمانی که مسئله مونتی هال در یک روزنامه یا نشریه مورد بحث قرار می‌گیرد، اغلب منجر به بحث‌های طولانی در فضای مجازی می‌شود.

مسئله مونتی هال به این صورت است:

در این ریالیتی شو، سه در وجود دارد. جایزه‌ای مانند ماشین یا سفر تفریحی پشت یک در است و پست دو در دیگر، جایزه بی‌ارزشی به نام Zonk پنهان شده است. در بیشتر قسمت‌های این ریالیتی شو، Zonk یک بز است!

شرکت‌کننده یک در را انتخاب می‌کند. فرض را بر این می‌گیریم که او هیچ اطلاعی درباره این که جایزه اصلی پشت کدام در است، ندارد. بنابراین شرکت‌کننده به سادگی، یک انتخاب تصادفی انجام می‌دهد.

میزبان خندان مونتی هال یکی از درهای دیگر را باز می‌کند. او همیشه دری را باز می‌کند که پشتش یک بز باشد و همیشه به شرکت‌کننده این فرصت را می‌دهد که انتخاب خود را برای درب باز نشده (بین دو در باقی‌مانده)، تغییر دهد.

شرکت‌کننده بین تغییر در و پایبند ماندن به انتخاب اول خود، یکی را انتخاب می‌کند.

شبیه‌سازی مسئله مونتی هال با پایتون

شبیه سازی مسئله مونتی هال به عنوان یک پروژه پایتون رایگان، ساده است. ما می‌خواهیم تابعی بنویسیم که از ماژول تصادفی پایتون استفاده می‌کند تا انتخاب کند که جایزه پشت کدام در پنهان شده است. انتخاب اولیه شرکت‌کننده، و در محذوف توسط مجری نیز مشخص خواهد شد.

یک پارامتر ورودی کنترل می‌کند که آیا رقیب تغییر در را انتخاب می‌کند یا خیر، و سپس تابع یک Boolean برمی‌گرداند که نشان می‌دهد آیا انتخاب رقیب دروازه برنده بوده است یا خیر.

				
					import random
from random import seed, randint
import numpy

def game(winningdoor, selecteddoor, change=False):
    assert winningdoor < 3
    assert winningdoor >= 0

    # Presenter removes the first door that was not selected neither winning
    removeddoor = next(i for i in range(3) if i != selecteddoor and i != winningdoor)

    # Player decides to change its choice
    if change:
        selecteddoor = next(i for i in range(3) if i != selecteddoor and i != removeddoor)

    # We suppose the player never wants to change its initial choice.
    return selecteddoor == winningdoor


if __name__ == '__main__':
    playerdoors = numpy.random.random_integers(0,2, (1000 * 1000 * 1,))

    winningdoors = [d for d in playerdoors if game(1, d)]
    print("Winning percentage without changing choice: ", len(winningdoors) / len(playerdoors))

    winningdoors = [d for d in playerdoors if game(1, d, change=True)]
    print("Winning percentage while changing choice: ", len(winningdoors) / len(playerdoors))
				
			

پروژه پایتون رایگان 10 تبدیل ویدیو به صدا با پایتون

تبدیل ویدیو به فایل‌های صوتی، ابزاری هوشمند برای استخراج صدا از فایل‌های ویدیویی است. در این بخش، شما را با یک برنامه ساده برای ساخت مبدل ویدیو به صدا با زبان برنامه نویسی پایتون آشنا می‌کنیم.

تبدیل ویدیو به صدا با پایتون چگونه انجام می‌گیرد؟

تبدیل یک ویدیو به فایل صوتی، ممکن است تصمیم عجیبی به نظر برسد. اما در موارد خاص، این کار ممکن است مفید باشد. این کار اغلب برای ضبط موسیقی متن فیلم‌ها یا استخراج ترک‌های صوتی از ویدیوهایی که فقط به صدای آن‌ها علاقه دارید، استفاده می‌شود.

اگر فکر می‌کنید می‌توانید از این امکان بهره‌مند شوید، به اپلیکیشنی برای تبدیل ویدیو به صدا نیاز دارید. مهمتر از همه، شما باید مطمئن شوید که مورد مناسب را انتخاب کرده‌اید.

در حال حاضر، برنامه‌هایی وجود دارند که این کار را به صورت خودکار برای شما انجام می‌دهند، اما نوشتن برنامه‌هایی که از قبل وجود دارند، مسیر کدنویسی را برای شما روشن می‌کند. بیایید نحوه تبدیل ویدیو به صدا را به عنوان یک پروژه پایتون رایگان ببینیم:

				
					from pytube import YouTube
import pytube
import os

def main():
    video_url = input('Enter YouTube video URL: ')

    if os.name == 'nt':
        path = os.getcwd() + '\\'
    else:
        path = os.getcwd() + '/'

    name = pytube.extract.video_id(video_url)
    YouTube(video_url).streams.filter(only_audio=True).first().download(filename=name)
    location = path + name + '.mp4'
    renametomp3 = path + name + '.mp3'

    if os.name == 'nt':
        os.system('ren {0} {1}'. format(location, renametomp3))
    else:
        os.system('mv {0} {1}'. format(location, renametomp3))
    
if __name__ == '__main__':
    main()
				
			

پروژه پایتون 11 رابط کاربری گرافیکی Tic Tac Toe با پایتون

در این بخش، شما را با یک پروژه پایتون رایگان آشنا می‌کنیم که برای بازی Tic Tac Toe، یک رابط کاربری گرافیکی (GUI) ایجاد می‌کند. این بازی بسیار محبوب و به خودی خود بسیار ساده است. این یک بازی دو نفره است که در آن تخته‌ای با مربع‌های 3×3 وجود دارد.

در این بازی، بازیکن می‌تواند بین دو علامت موجود، یکی را انتخاب کنید. به طور معمول برای این بازی از X و O استفاده می‌شود. اگر بازیکن اول X را انتخاب کند، بازیکن دوم باید با O بازی کند و بالعکس.

بازیکن یکی از مربع‌های 3×3 را با نماد خود (X یا O) علامت‌گذاری می‌کند و هدفش ایجاد یک خط مستقیم به صورت افقی یا عمودی یا مورب، با دو هدف است:

  • برای برنده شدن در بازی، قبل از حریف یک خط مستقیم ایجاد کنید.
  • از ایجاد خط مستقیم توسط رقیب خود جلوگیری کنید.

اگر کسی نتواند خط مستقیم ایجاد کند، بازی با تساوی به پایان می‌رسد. بنابراین تنها سه نتیجه ممکن است رخ دهد: یک بازیکن برنده شود، حریف او (انسان یا کامپیوتر) برنده شود، یا بازی با تساوی به اتمام رسد.

چگونه برای این بازی GUI ایجاد کنیم؟

دو منطق اساسی در این بازی وجود دارد. یا هر دو بازیکن انسان هستند یا یکی کامپیوتر است. من این رابط کاربری گرافیکی را با پایتون برای دو نفر آماده خواهم کرد. این کد کامل برای این کار است:

				
					from tkinter import *
import numpy as np

size_of_board = 600
symbol_size = (size_of_board / 3 - size_of_board / 8) / 2
symbol_thickness = 50
symbol_X_color = '#EE4035'
symbol_O_color = '#0492CF'
Green_color = '#7BC043'


class Tic_Tac_Toe():
    # ------------------------------------------------------------------
    # Initialization Functions:
    # ------------------------------------------------------------------
    def __init__(self):
        self.window = Tk()
        self.window.title('Tic-Tac-Toe')
        self.canvas = Canvas(self.window, width=size_of_board, height=size_of_board)
        self.canvas.pack()
        # Input from user in form of clicks
        self.window.bind('<Button-1>', self.click)

        self.initialize_board()
        self.player_X_turns = True
        self.board_status = np.zeros(shape=(3, 3))

        self.player_X_starts = True
        self.reset_board = False
        self.gameover = False
        self.tie = False
        self.X_wins = False
        self.O_wins = False

        self.X_score = 0
        self.O_score = 0
        self.tie_score = 0

    def mainloop(self):
        self.window.mainloop()

    def initialize_board(self):
        for i in range(2):
            self.canvas.create_line((i + 1) * size_of_board / 3, 0, (i + 1) * size_of_board / 3, size_of_board)

        for i in range(2):
            self.canvas.create_line(0, (i + 1) * size_of_board / 3, size_of_board, (i + 1) * size_of_board / 3)

    def play_again(self):
        self.initialize_board()
        self.player_X_starts = not self.player_X_starts
        self.player_X_turns = self.player_X_starts
        self.board_status = np.zeros(shape=(3, 3))

    # ------------------------------------------------------------------
    # Drawing Functions:
    # The modules required to draw required game based object on canvas
    # ------------------------------------------------------------------

    def draw_O(self, logical_position):
        logical_position = np.array(logical_position)
        # logical_position = grid value on the board
        # grid_position = actual pixel values of the center of the grid
        grid_position = self.convert_logical_to_grid_position(logical_position)
        self.canvas.create_oval(grid_position[0] - symbol_size, grid_position[1] - symbol_size,
                                grid_position[0] + symbol_size, grid_position[1] + symbol_size, width=symbol_thickness,
                                outline=symbol_O_color)

    def draw_X(self, logical_position):
        grid_position = self.convert_logical_to_grid_position(logical_position)
        self.canvas.create_line(grid_position[0] - symbol_size, grid_position[1] - symbol_size,
                                grid_position[0] + symbol_size, grid_position[1] + symbol_size, width=symbol_thickness,
                                fill=symbol_X_color)
        self.canvas.create_line(grid_position[0] - symbol_size, grid_position[1] + symbol_size,
                                grid_position[0] + symbol_size, grid_position[1] - symbol_size, width=symbol_thickness,
                                fill=symbol_X_color)

    def display_gameover(self):

        if self.X_wins:
            self.X_score += 1
            text = 'Winner: Player 1 (X)'
            color = symbol_X_color
        elif self.O_wins:
            self.O_score += 1
            text = 'Winner: Player 2 (O)'
            color = symbol_O_color
        else:
            self.tie_score += 1
            text = 'Its a tie'
            color = 'gray'

        self.canvas.delete("all")
        self.canvas.create_text(size_of_board / 2, size_of_board / 3, font="cmr 60 bold", fill=color, text=text)

        score_text = 'Scores \n'
        self.canvas.create_text(size_of_board / 2, 5 * size_of_board / 8, font="cmr 40 bold", fill=Green_color,
                                text=score_text)

        score_text = 'Player 1 (X) : ' + str(self.X_score) + '\n'
        score_text += 'Player 2 (O): ' + str(self.O_score) + '\n'
        score_text += 'Tie                    : ' + str(self.tie_score)
        self.canvas.create_text(size_of_board / 2, 3 * size_of_board / 4, font="cmr 30 bold", fill=Green_color,
                                text=score_text)
        self.reset_board = True

        score_text = 'Click to play again \n'
        self.canvas.create_text(size_of_board / 2, 15 * size_of_board / 16, font="cmr 20 bold", fill="gray",
                                text=score_text)

    # ------------------------------------------------------------------
    # Logical Functions:
    # The modules required to carry out game logic
    # ------------------------------------------------------------------

    def convert_logical_to_grid_position(self, logical_position):
        logical_position = np.array(logical_position, dtype=int)
        return (size_of_board / 3) * logical_position + size_of_board / 6

    def convert_grid_to_logical_position(self, grid_position):
        grid_position = np.array(grid_position)
        return np.array(grid_position // (size_of_board / 3), dtype=int)

    def is_grid_occupied(self, logical_position):
        if self.board_status[logical_position[0]][logical_position[1]] == 0:
            return False
        else:
            return True

    def is_winner(self, player):

        player = -1 if player == 'X' else 1

        # Three in a row
        for i in range(3):
            if self.board_status[i][0] == self.board_status[i][1] == self.board_status[i][2] == player:
                return True
            if self.board_status[0][i] == self.board_status[1][i] == self.board_status[2][i] == player:
                return True

        # Diagonals
        if self.board_status[0][0] == self.board_status[1][1] == self.board_status[2][2] == player:
            return True

        if self.board_status[0][2] == self.board_status[1][1] == self.board_status[2][0] == player:
            return True

        return False

    def is_tie(self):

        r, c = np.where(self.board_status == 0)
        tie = False
        if len(r) == 0:
            tie = True

        return tie

    def is_gameover(self):
        # Either someone wins or all grid occupied
        self.X_wins = self.is_winner('X')
        if not self.X_wins:
            self.O_wins = self.is_winner('O')

        if not self.O_wins:
            self.tie = self.is_tie()

        gameover = self.X_wins or self.O_wins or self.tie

        if self.X_wins:
            print('X wins')
        if self.O_wins:
            print('O wins')
        if self.tie:
            print('Its a tie')

        return gameover





    def click(self, event):
        grid_position = [event.x, event.y]
        logical_position = self.convert_grid_to_logical_position(grid_position)

        if not self.reset_board:
            if self.player_X_turns:
                if not self.is_grid_occupied(logical_position):
                    self.draw_X(logical_position)
                    self.board_status[logical_position[0]][logical_position[1]] = -1
                    self.player_X_turns = not self.player_X_turns
            else:
                if not self.is_grid_occupied(logical_position):
                    self.draw_O(logical_position)
                    self.board_status[logical_position[0]][logical_position[1]] = 1
                    self.player_X_turns = not self.player_X_turns

            # Check if game is concluded
            if self.is_gameover():
                self.display_gameover()
                # print('Done')
        else:  # Play Again
            self.canvas.delete("all")
            self.play_again()
            self.reset_board = False


game_instance = Tic_Tac_Toe()
game_instance.mainloop()
				
			

پروژه پایتون 12 GUI ماشین حساب با پایتون

در این مقاله شما را با نحوه ایجاد رابط کاربری گرافیکی ماشین حساب با زبان برنامه نویسی پایتون آشنا می‌کنم. در این‌جا من از پکیج Kivy در پایتون برای ساخت این رابط کاربری استفاده خواهم کرد.

Kivy یک کتابخانه رایگان و اپن سورس پایتون است که توسعه سریع و آسان اپلیکیشن‌های بین پلتفرمی و تعاملی را امکان‌پذیر می‌کند. سرعت اجرای Kivy در مقایسه با سایر جایگزین‌های توسعه موبایل مانند Java برای اندروید و Objective C برای iOS یکسان است.

علاوه بر این، Kivy دارای مزیت بزرگی است و آن این است که می‌تواند بر روی چندین پلتفرم اجرا شود. درست مانند HTML5. در این مورد، Kivy بهترین عملکرد را دارد، زیرا به یک مرورگر سنگین متکی نیست و بسیاری از اجزای آن در C  با استفاده از کتابخانه Cython پیاده سازی می‌شوند تا بیشتر پردازش‌های گرافیکی مستقیماً در GPU اجرا شوند.

Kivy بین عملکرد و پرتابل بودگی در محیط‌های سخت افزاری و نرم افزاری، تعادل مناسبی ایجاد می‌کند.

رابط کاربری گرافیکی ماشین حساب چگونه با پایتون کدنویسی می‌شود؟

ما نیازی به استفاده از فایلی به نام file.kv برای ساخت ماشین حساب نداریم، زیرا ماشین حساب یک برنامه بسیار ساده است. بیایید ببینیم که چگونه می‌توانیم در یک پروژه پایتون رایگان، یک رابط کاربری ساده برای ماشین حساب بسازیم:

				
					from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label

class myApp(App):
    def build(self):
        root_widget = BoxLayout(orientation='vertical')
        output_label = Label(size_hint_y = 0.75, font_size=50)
        button_symbols = ('1', '2', '3', '+',
                          '4', '5', '6', '-',
                          '7', '8', '9', '.',
                          '0', '*', '/', '=')
        button_grid = GridLayout(cols=4, size_hint_y=2)
        for symbol in button_symbols:
            button_grid.add_widget(Button(text=symbol))

        clear_button = Button(text = 'Clear', size_hint_y=None, height=100)
        def print_button_text(instance):
            output_label.text += instance.text
        for button in button_grid.children[1:]:
            button.bind(on_press=print_button_text)
        def resize_label_text(label, new_height):
            label.fontsize = 0.5*label.height
        output_label.bind(height=resize_label_text)

        def evaluate_result(instance):
            try:
                output_label.text = str(eval(output_label.text))
            except SyntaxError:
                output_label.text = 'Python Syntax error!'
        button_grid.children[0].bind(on_press=evaluate_result)

        def clear_label(instance):
            output_label.text = " "
        clear_button.bind(on_press=clear_label)

        root_widget.add_widget(output_label)
        root_widget.add_widget(button_grid)
        root_widget.add_widget(clear_button)
        return root_widget
myApp().run()
				
			

بازی حدس اعداد با پایتون و ++C

در این بخش، نحوه ایجاد بازی حدس اعداد به عنوان یک پروژه پایتون و ++C رایگان را به شما آموزش می‌دهم. بازی حدس اعداد شامل مدیریت ورودی کاربر، استفاده از دستور if و همچنین ساختارهای looping است.

بازی حدس اعداد چگونه کار می‌کند؟

هدف بازی حدس اعداد، حدس زدن عددی است که برنامه با آن ساخته شده است. منطق چنین برنامه‌ای اساساً این است:

  • برنامه به صورت تصادفی عددی بین 1 تا 100 یا هر ترکیب دیگری از اعداد را انتخاب می‌کند.
  • سپس از بازیکن می‌خواهد که پیشنهاد خود را وارد کند.
  • سپس بررسی می‌کند که آیا این عدد همان عددی است که به طور تصادفی توسط رایانه تولید شده است یا خیر. اگر چنین است، بازیکن برنده می‌شود.
  • اگر حدس بازیکن با آن عدد یکسان نیست، آنگاه این پروژه پایتون رایگان بررسی می‌کند که آیا عدد از حدس بالاتر است یا پایین‌تر و این مورد را به بازیکن اطلاع می‌دهد.

حالا بیایید ببینیم که چگونه با پایتون و زبان برنامه نویسی ++C، می‌توانیم یک بازی حدس اعداد ایجاد کنیم.

بازی حدس اعداد با پایتون:

				
					# to import random module
import random
# to create a range of random numbers between 1-10
n = random.randrange(1,100)
# to take a user input to enter a number
guess = int(input("Enter any number: "))
while n!= guess: # means if n is not equal to the input guess
    # if guess is smaller than n
    if guess < n:
        print("Too low")
        # to again ask for input
        guess = int(input("Enter number again: "))
    # if guess is greater than n
    elif guess > n:
        print("Too high!")
        # to again ask for the user input
        guess = int(input("Enter number again: "))
    # if guess gets equals to n terminate the while loop
    else:
        break
print("you guessed it right!!")
				
			
				
					Enter any number: 67
Too high!
Enter number again: 45
Too low
Enter number again: 50
Too low
Enter number again: 55
Too high!
Enter number again: 52
Too low
Enter number again: 54
you guessed it right!!
				
			

بازی حدس اعداد با ++C :

				
					#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
	int num, guess, tries = 0;
	srand(time(0)); //seed random number generator
	num = rand() % 100 + 1; // random number between 1 and 100
	cout << "Guess My Number Game\n\n";

	do
	{
		cout << "Enter a guess between 1 and 100 : ";
		cin >> guess;
		tries++;

		if (guess > num)
			cout << "Too high!\n\n";
		else if (guess < num)
			cout << "Too low!\n\n";
		else
			cout << "\nCorrect! You got it in " << tries << " guesses!\n";
	} while (guess != num);

	return 0;
}
				
			
				
					Guess My Number Game
Enter a guess between 1 and 100 : 78
Too high!
Enter a guess between 1 and 100 : 65
Too high!
Enter a guess between 1 and 100 : 34
Too high!
Enter a guess between 1 and 100 : 23
Too high!
Enter a guess between 1 and 100 : 12
Too low!
Enter a guess between 1 and 100 : 20
Too low!
Enter a guess between 1 and 100 : 22
Too high!
Enter a guess between 1 and 100 : 21
Correct! You got it in 8 guesses!
				
			

امیدوارم این پروژه پایتون رایگان در مورد بازی حدس اعداد را دوست داشته باشید. سؤالات ارزشمند خود را در بخش نظرات بپرسید.

پروژه پایتون رایگان 15 رابط کاربری گرافیکی Image Converter با پایتون

برای ذخیره داده‌های گرافیکی، فرمت‌های فایل تصویری متعددی وجود دارد که محبوب ترین آن‌ها، JPG و PNG هستند. در این پروژه پایتون رایگان، نحوه ایجاد رابط کاربری گرافیکی یک Image Converter را به شما آموزش خواهیم داد.

رابط کاربری گرافیکی Image Converter با پایتون چگونه ایجاد می‌شود؟

به منظور ایجاد یک GUI برای Image Converter با پایتون، از کتابخانه Tkinter استفاده می‌کنیم که شناخته‌شده‌ترین فریم‌ورک پایتون برای ساخت GUI در اپلیکیشن‌ها است. به جز Tkinter ، ما به کتابخانه PIL هم در پایتون نیاز داریم که مخفف Python Imaging Library است.

حالا بیایید ببینیم چگونه می‌توانیم یک اپلیکیشن برای تبدیل فایل PNG به JPG ایجاد کنیم:

				
					import tkinter as tk
from tkinter import filedialog
from PIL import Image

root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=250, bg='azure3', relief='raised')
canvas1.pack()

label1 = tk.Label(root, text="Image Converter", bg='azure3')
label1.config(font=('helvetica', 20))
canvas1.create_window(150, 60, window=label1)

def getPNG():
    global im1
    import_file_path = filedialog.askopenfilename()
    im1 = Image.open(import_file_path)

browse_png = tk.Button(text="Select PNG file", command=getPNG, bg="royalblue", fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 130, window=browse_png)

def convert():
    global im1
    export_file_path = filedialog.asksaveasfilename(defaultextension='.jpg')
    im1.save(export_file_path)

saveasbutton = tk.Button(text="Convert PNG to JPG", command=convert, bg='royalblue', fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 180, window=saveasbutton)
root.mainloop()
				
			

همان‌طور که پنجره خروجی را می‌بینید، این اپلیکیشن هم مانند سایر برنامه‌های نصب شده در سیستم شما کار می‌کند. ابتدا باید یک فایل PNG را انتخاب کنید، سپس روی دکمه تبدیل فایل PNG به JPG کلیک کنید، و در نهایت فولدری را انتخاب کنید که می‌خواهید تصویر تبدیل شده شما در آن ذخیره شود.

به این ترتیب، می‌توانیم به راحتی یک اپلیکیشن برای Convert تصاویر به فرمت‌های دیگر ایجاد کنیم.

پروژه پایتون رایگان 16 رابط کاربری گرافیکی مبدل وزن با پایتون

تبدیل وزن به معنای ضرب مقدار یک واحد در مقدار تبدیل استاندارد است. در این بخش، شما را با نحوه ایجاد یک GUI مبدل وزن با پایتون آشنا می‌کنیم.

مقادیر استاندارد تبدیل وزن عبارتند از:

  • 1 میلی‌گرم = 0.001 گرم
  • 1 سانتی‌ گرم = 0.01 گرم
  • 1 دسی‌گرم = 0.1 گرم
  • 1 کیلوگرم = 1000 گرم
  • 1 گرم = 1000 میلی‌گرم
  • 1 تن = 2000 پوند
  • 1 پوند = 16 اونس

چگونه با پایتون یک GUI تبدیل وزن ایجاد کنیم؟

حال بیایید ببینیم که چگونه می‌توانیم با افزودن برخی از ویژگی‌های رابط کاربری گرافیکی، با پایتون یک برنامه مبدل وزن ایجاد کنیم. من برای این پروژه پایتون رایگان از کتابخانه Tkinter استفاده می‌کنم:

				
					from tkinter import *
# Creating a GUI Window
window = Tk()
def from_kg():
    gram = float(e2_value.get())*1000
    pound = float(e2_value.get())*2.20462
    ounce = float(e2_value.get())*35.274
    t1.delete("1.0",END)
    t1.insert(END, gram)
    t2.delete("1.0", END)
    t2.insert(END, pound)
    t3.delete("1.0", END)
    t3.insert(END, ounce)

e1 = Label(window, text="Input the weight in KG")
e2_value = StringVar()
e2 = Entry(window, textvariable=e2_value)
e3 = Label(window, text="Gram")
e4 = Label(window, text="Pound")
e5 = Label(window, text="Ounce")

t1 = Text(window, height=5, width=30)
t2 = Text(window, height=5, width=30)
t3 = Text(window, height=5, width=30)

b1 = Button(window, text="Convert", command=from_kg)

e1.grid(row=0, column=0)
e2.grid(row=0, column=1)
e3.grid(row=1, column=0)
e4.grid(row=1, column=1)
e5.grid(row=1, column=2)
t1.grid(row=2, column=0)
t2.grid(row=2, column=1)
t3.grid(row=2, column=2)
b1.grid(row=0, column=2)

window.mainloop()
				
			

به این صورت، می‌توانیم با استفاده از کتابخانه Tkinter در پایتون، یک برنامه GUI مبدل وزن ایجاد کنیم.

پروژه پایتون رایگان 17 صفحه شطرنج با پایتون

صفحه شطرنج نوعی گیم‌برد است که برای بازی شطرنج استفاده می‌شود و مهره‌های شطرنج روی آن قرار می‌گیرند. صفحه شطرنج مربعی است با الگوهای متناوب از مربع‌های دورنگ روی آن. در این پروژه پایتون رایگان، نحوه ایجاد و به تصویر کشیدن صفحه شطرنج را با زبان برنامه نویسی پایتون به شما آموزش می‌دهیم.

با پایتون یک صفحه شطرنج بسازید

برای ایجاد یک صفحه شطرنج با زبان برنامه نویسی پایتون، از دو کتابخانه مختلف پایتون استفاده می‌کنیم: Matplotlib برای تصویرسازی و NumPy برای ساختن الگوریتمی که به ما در ایجاد و به تصویر کشیدن صفحه شطرنج کمک می‌کند. بیایید ببینیم چگونه می‌توانیم به وسیله کدنویسی، یک صفحه شطرنج ایجاد کنیم:

				
					import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm

dx, dy = 0.015, 0.05
x = np.arange(-4.0, 4.0, dx)
y = np.arange(-4.0, 4.0, dy)
X, Y = np.meshgrid(x, y)
extent = np.min(x), np.max(x), np.min(y), np.max(y)
z1 = np.add.outer(range(8), range(8)) % 2
plt.imshow(z1, cmap="binary_r", interpolation="nearest", extent=extent, alpha=1)

def chess(x, y):
    return (1 - x / 2 + x ** 5 + y ** 6) * np.exp(-(x ** 2 + y ** 2))
z2 = chess(X, Y)
plt.imshow(z2, alpha=0.7, interpolation="bilinear", extent=extent)
plt.title("Chess Board with Python")
plt.show()
				
			

به این ترتیب می‌توانیم به وسیله کدنویسی با پایتون، یک صفحه شطرنج ایجاد کنیم. امیدوارم این پروژه پایتون رایگان در زمینه ساختن صفحه شطرنج با کتابخانه Matplotlib برایتان جذاب بوده باشد.

پروژه پایتون رایگان 18 تشخیص سن و جنسیت با پایتون

در این بخش، با استفاده از یادگیری ماشین در زبان برنامه نویسی پایتون، به شما آموزش می‌دهیم کدی بنویسید که سن و جنسیت افراد را تشخیص دهد. تشخیص سن و جنسیت، یکی از تسک‌های Computer vision است. بنابراین من از کتابخانه OpenCV در پایتون استفاده خواهم کرد.

قبل از شروع کدنویسی برای تشخیص سن و جنسیت با پایتون، ابتدا شما را با معنای این کانسپت و نحوه برخورد با مشکلات بالقوه در این زمینه آشنا خواهم کرد. درک این کانسپت بسیار مهم است؛ چرا که به این وسیله می‌توانید در آینده نه تنها با پایتون، بلکه با هر زبان برنامه نویسی دیگری این کار را انجام دهید.

مقدمه‌ای بر تشخیص سن و جنسیت

تشخیص سن و جنسیت، یکی از دشوارترین کارهایی است که computer vision می‌تواند انجام دهد. دلیل اصلی این موضوع، در دشواری کسب داده‌های مورد نیاز برای آموزش این نوع سیستم‌ها نهفته است.

برنامه‌های تشخیص اشیا می‌توانند به راحتی به صدها هزار یا حتی میلیون‌ها تصویر برای آموزش دسترسی داشته باشند، اما datasetهایی با لیبل‌های سن/ و یا جنسیت، به طور قابل توجهی کوچک‌تر هستند. (معمولاً شامل هزاران یا در بهترین حالت ده‌ها هزار داده).

دلیل این موضوع این است که به منظور داشتن لیبل برای چنین تصاویری، باید به اطلاعات شخصی سوژه‌های موجود در تصاویر دسترسی داشته باشیم. یعنی ما به تاریخ تولد و جنسیت آن‌ها نیاز داریم، که به ندرت به صورت عمومی منتشر می‌شود. بنابراین، ما باید به ماهیت این مشکل که در حال رسیدگی به آن هستیم، بسنده کنیم و معماری شبکه و رویدادهای الگوریتمی را برای مقابله با این محدودیت‌ها، تطبیق دهیم.

نحوه تشخیص سن و جنسیت با پایتون

حوزه‌های classification بر اساس سن و جنسیت، دهه‌هاست که مورد تحقیق قرار می‌گیرد. در طول سال‌ها، رویکردهای مختلفی برای مقابله با این مشکل اتخاذ شده است که در سطوح مختلفی از موفقیت قرار گرفته‌اند. حالا بیایید کار تشخیص سن و جنسیت با استفاده از زبان برنامه نویسی پایتون را شروع کنیم.

من مشکل تشخیص جنسیت را به عنوان یک مشکل classification و مشکل تشخیص سن را به عنوان یک مشکل regression ارائه خواهم کرد. با این حال، تخمین دقیق سن با استفاده از رگرسیون دشوار است. حتی انسان‌ها هم نمی‌توانند با نگاه کردن به یک فرد، سن درست او را تشخیص دهند. با این حال، ما معمولاً متوجه می‌شویم که آن‌ها در کدام دهه از زندگی خود هستند. این همان چیزی است در این پروژه پایتون رایگان انجام خواهیم داد.

شروع کار:

اولین کاری که انجام می‌دهیم، نوشتن کد تشخیص چهره است. زیرا بدون تشخیص چهره، نمی‌توانیم در کار پیش‌بینی سن و جنسیت جلو برویم.

می‌توانید مدل‌های از قبل آموزش دیده OpenCV را که در تشخیص سن و جنسیت به آن نیاز دارید، از اینجا دانلود کنید. اکنون پس از وارد کردن ماژول OpenCV در فایل پایتون خود، می‌توانید با کد زیر شروع کنید.

کد پایتون برای تشخیص چهره:

				
					def getFaceBox(net, frame, conf_threshold=0.7):
    frameOpencvDnn = frame.copy()
    frameHeight = frameOpencvDnn.shape[0]
    frameWidth = frameOpencvDnn.shape[1]
    blob = cv.dnn.blobFromImage(frameOpencvDnn, 1.0, (300, 300), [104, 117, 123], True, False)

    net.setInput(blob)
    detections = net.forward()
    bboxes = []
    for i in range(detections.shape[2]):
        confidence = detections[0, 0, i, 2]
        if confidence > conf_threshold:
            x1 = int(detections[0, 0, i, 3] * frameWidth)
            y1 = int(detections[0, 0, i, 4] * frameHeight)
            x2 = int(detections[0, 0, i, 5] * frameWidth)
            y2 = int(detections[0, 0, i, 6] * frameHeight)
            bboxes.append([x1, y1, x2, y2])
            cv.rectangle(frameOpencvDnn, (x1, y1), (x2, y2), (0, 255, 0), int(round(frameHeight/150)), 8)
    return frameOpencvDnn, bboxes
				
			

اکنون وارد مرحله بعدی تشخیص جنسیت انسان در تصویر می‌شویم. در این‌جا شبکه جنسیت (gender network) را در حافظه بارگذاری می‌کنم و چهره شناسایی‌شده را برای کار تشخیص جنسیت، به کل شبکه منتقل می‌کنم.

کد پایتون برای تشخیص جنسیت:

				
					genderProto = "gender_deploy.prototxt"
genderModel = "gender_net.caffemodel"
ageNet = cv.dnn.readNet(ageModel, ageProto)

genderList = ['Male', 'Female']

blob = cv.dnn.blobFromImage(face, 1, (227, 227), MODEL_MEAN_VALUES, swapRB=False)
genderNet.setInput(blob)
genderPreds = genderNet.forward()
gender = genderList[genderPreds[0].argmax()]
print("Gender Output : {}".format(genderPreds))
print("Gender : {}".format(gender))
				
			

کار بعدی که باید انجام دهیم، پیش‌بینی سن انسان در تصویر است. در این‌جا شبکه سنی (ageing network) را بارگذاری و از forward pass برای دریافت خروجی استفاده می‌کنم. از آن‌جایی که معماری این شبکه مشابه معماری gender network است، می‌توانیم از تمام خروجی‌ها حداکثر استفاده را ببریم تا گروه سنی مورد نظر را برای تشخیص سن به دست آوریم.

کد پایتون برای تشخیص سن:

				
					ageProto = "age_deploy.prototxt"
ageModel = "age_net.caffemodel"
ageNet = cv.dnn.readNet(ageModel, ageProto)

ageList = ['(0 - 2)', '(4 - 6)', '(8 - 12)', '(15 - 20)', '(25 - 32)', '(38 - 43)', '(48 - 53)', '(60 - 100)']

ageNet.setInput(blob)
agePreds = ageNet.forward()
age = ageList[agePreds[0].argmax()]
print("Gender Output : {}".format(agePreds))
print("Gender : {}".format(age))
				
			

آخرین کدی که باید بنویسیم، نمایش خروجی است:

				
					label = "{}, {}".format(gender, age)
cv.putText(frameFace, label, (bbox[0], bbox[1]-20), cv.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 3, cv.LINE_AA)
cv.imshow("Age Gender Demo", frameFace)
				
			

همان‌طور که از خروجی می‌بینید، ما می‌توانیم جنسیت و سن را با دقت بالایی پیش‌بینی کنیم. امیدوارم این بخش از مقاله درباره classification سن و جنسیت با زبان برنامه نویسی پایتون، مورد پسند شما واقع شده باشد.

پروژه پایتون 19 بارکدخوان و QR Code خوان با پایتون

در این پروژه پایتون رایگان، با شما درباره نحوه ساخت بارکدخوان و QR code Reader با پایتون و یادگیری ماشین صحبت می‌کنم. این یک تسک یادگیری ماشین عالی برای شروع کار با computer است.

بارکدها و QR code ها خیلی جالب و هیجان انگیز هستند، زیرا اطلاعات را در قالبی متفاوت ذخیره می‌کنند. بخش جالب در مورد آن‌ها این است که تا وقتی آن‌ها را تجزیه و تحلیل نکنیم، نمی‌توانیم بگوییم چه چیزی در خود ذخیره می‌کنند. این مثل حل یک بازی پازل است. چیز دیگری که من در مورد آن‌ها دوست دارم، این است که آن‌ها می‌توانند به عنوان بخشی از دنیای فیزیکی، ما را به اینترنت متصل کنند.

بارکدخوان‌ها و QR code Reader ها چگونه کار می‌کنند؟

اگر نمی‌دانید دستگاه‌های بارکد و QR code چگونه کار می‌کنند، بیایید کمی تمرین عملی انجام دهیم. دوربین گوشی خود را روشن کنید و یک QR code مثل تصویر زیر را اسکن کنید. (در برخی گوشی‌ها نیاز به نصب نرم افزار QR code Scanner دارید که در پلتفرم‌هایی مثل Google Play ، App Store و بازار موجود است).

پروژه پایتون رایگان - QR code Reader

مشاهده خواهید کرد که یک لینک ظاهر می‌شود. استفاده از آن بسیار آسان است. امروز یاد می‌گیرید که چگونه با پایتون و یادگیری ماشین، بارکد و QR code خود را ایجاد کنید. بیایید شروع کنیم.

من با نصب کتابخانه‌هایی که برای این پروژه نیاز داریم، شروع می‌کنم و سپس کدگذاری را انجام می‌دهم. برای این کار، توصیه می‌کنیم از یک code editor معمولی مانند VScode یا Pycharm استفاده کنید.

شروع کار:

اولین قدم این است که سه کتابخانه Pillow ، OpenCV و Pyzbar را نصب کنید. Pillow پسوند PIL به معنای Python Image Library است.

OpenCV یک کتابخانه شناخته شده، به ویژه در زمینه کار با computer vision است. آخرین کتابخانه‌ای که به آن نیاز داریم، Pyzbar است که به ما در خواندن بارکدها و QR code ها کمک می‌کند. با استفاده از دستور pip ، می‌توانید به راحتی تمامی این کتابخانه‌ها را نصب کنید.

ساخت بارکد و QR code با پایتون و یادگیری ماشین چگونه است؟

اکنون به مرحله بعدی یعنی نوشتن تابع decode رسیدیم. جایی که اتفاقات جالبی می‌افتد. تابع رمزگشایی عمدتاً سه کار زیر را انجام می‌دهد:

  • بارکد / QR code خاصی را که قرار است به دوربین نشان دهیم، شناسایی و رمزگشایی می‌کند.
  • اطلاعات اضافه شده به عنوان متن را در بارکد / QR code ، شناسایی و ذخیره می‌کند.
  • در نهایت، اطلاعات ذخیره شده را به عنوان یک سند متنی صادر می‌کند.
  • بیایید کتابخانه‌هایی را که قبل از نوشتن در تابع نصب کرده‌ایم، وارد کنیم:
				
					import cv2
from pyzbar import pyzbar
				
			

حالا بیایید تابع تابع رمزگشایی را تعریف کنیم:

				
					def read_barcodes(frame):
    barcodes = pyzbar.decode(frame)
    for barcode in barcodes:
        x, y , w, h = barcode.rect
        barcode_info = barcode.data.decode('utf-8')
        cv2.rectangle(frame, (x, y),(x+w, y+h), (0, 255, 0), 2)
        
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, barcode_info, (x + 6, y - 6), font, 2.0, (255, 255, 255), 1)
        with open("barcode_result.txt", mode ='w') as file:
            file.write("Recognized Barcode:" + barcode_info)
    return frame
				
			

حالا بیایید تابع بالا را در این پروژه پایتون رایگان مرور کنیم تا ببینیم چه کار کرده‌ایم:

  • ابتدا اطلاعات بارکد یا QR code را رمزگشایی می‌کنیم. سپس یک مستطیل دور آن می‌کشیم. این به ما کمک می‌کند تا ببینیم آیا دستگاه ما بارکد / QR code را شناسایی کرده است یا خیر.
  • در مرحله دوم، متنی را بالای مستطیلی که ایجاد شده است، اضافه می‌کنیم. متن اطلاعات رمزگشایی شده را نمایش می‌دهد.
  • در مرحله سوم، اطلاعات را به یک سند متنی صادر می‌کنیم.

نوشتن تابع اصلی

اکنون مرحله بعدی نوشتن تابع اصلی برای ساخت بارکدخوان و QR code خوان با پایتون است. بیایید تابع اصلی خود را برای این پروژه پایتون رایگان ایجاد کنیم:

				
					def main():
    camera = cv2.VideoCapture(0)
    ret, frame = camera.read()
    while ret:
        ret, frame = camera.read()
        frame = read_barcode(frame)
        cv2.imshow('Barcode/QR code reader', frame)
        if cv2.waitKey(1) & 0xFF == 27:
            break
    camera.release()
    cv2.destroyAllWindows()
if __name__ == '__main__':
    main()
				
			

حالا بیایید این تابع اصلی را مرور کنیم تا ببینیم چه کاری انجام داده‌ایم:

  • اول از همه، دوربین کامپیوتر را با استفاده از OpenCV روشن می‌کنیم. اگر دوربین خارجی دارید، بسته به دستگاه خود باید مقدار 0 را به 1 تغییر دهید.
  • در مرحله دوم، یک حلقه while اجرا می‌کنیم تا عملکرد رمزگشایی را تا فشار دادن کلید Esc ادامه دهیم. در غیر این صورت، حلقه متوقف نمی‌شود و مشکل ایجاد می‌کند.
  • سپس پنجره برنامه را می‌بندیم. OpenCV همه کارها را انجام می‌دهد. تنها لازم است متدها را فراخوانی کنید.
  • در نهایت، تابع اصلی را برای اجرای برنامه فراخوانی می‌کنیم.

اکنون می‌توانید به راحتی کد را اجرا کنید و با نشان دادن کد به دوربین لپ تاپ خود، هر QR code و بارکدی را که می‌خواهید اسکن کنید.

این برنامه بارکدها و QR code های مختلف را برای شما می‌خواند. اگر به دنبال استفاده از computer vision و هوش مصنوعی در زندگی واقعی هستید، کار بر روی پروژه‌های برنامه نویسی عملی مثل این، بهترین راه برای تقویت مهارت‌های کدنویسی شماست.

پروژه پایتون 20 ساخت کتاب صوتی با پایتون

کتاب صوتی کتابی است که از طریق خواندن یک کتاب یا هر اثر مکتوب دیگر، با صدای بلند خوانده می‌شود. شما می‌توانید در گوشی‌های هوشمند، تبلت، کامپیوتر، سیستم صوتی خانگی یا ضبط ماشین خود به کتاب‌های صوتی گوش دهید. در این پروژه پایتون رایگان، ایجاد کتاب صوتی با پایتون را به شما آموزش خواهیم داد.

اگر فایل pdf کتاب را دارید، نیازی نیست که برای گوش دادن به آن کتاب صوتی اشتراک پلتفرم‌ها را خریداری کنید. در پایان این بخش از مقاله، خواهید آموخت که با چند خط کد در پایتون، چگونه می‌توانید یک کتاب صوتی بسازید.

بیایید با پایتون یک کتاب صوتی بسازیم

پروژه پایتون رایگان - ساختن کتاب صوتی

پایتون به دلیل جامعه بسیار فعالی که دارد، دارای مجموعه وسیعی از کتابخانه‌ها است. در این‌جا باید از دو کتابخانه pyttsx3 و PyPDF2 استفاده کنیم.

هر دو کتابخانه را می‌توان به راحتی با استفاده از دستور pip نصب کرد.

				
					pip install PyPDF2
pip install pyttsx3
				
			

خواندن فایل PDF

PyPDF2 امکان دستکاری pdf در حافظه را فراهم می‌کند. این کتابخانه پایتون قادر به انجام کارهایی مانند این‌ها است:

  • اطلاعات مربوط به سند، مانند عنوان، نویسنده و غیره.
  • تقسیم اسناد به صفحات مختلف
  • ادغام اسناد در هر صفحه
  • کراپ کردن صفحات
  • ادغام صفحه‌ای در یک صفحه دیگر
  • رمزگذاری و رمزگشایی فایل‌های PDF
  • و غیره.

من از این کتابخانه، برای تقسیم فایل pdf به صفحات آن استفاده می‌کنم. سپس متن هر صفحه را می‌خوانم، و در آخر متن را به مرحله بعدی فرآیند ارسال می‌کنم تا با پایتون یک کتاب صوتی ایجاد کنم.

				
					import PyPDF2
pdfReader = PyPDF2.PdfFileReader(open('file.pdf', 'rb'))
				
			

کتابخانه pyttsx3 قادر به تبدیل متن به صدای آفلاین است. سپس متنی که از pdf می‌خوانیم، به عنوان ورودی وارد موتور text-to-speech می‌شود:

				
					import pyttsx3
speaker = pyttsx3.init()
				
			

مرحله بعدی این است که برای هر صفحه از فایل pdf ، loop بسازید و موتور اسپیکر pyttsx3 را استاپ کنید:

				
					for page_num in range(pdfReader.numPages):
    text =  pdfReader.getPage(page_num).extractText()
    speaker.say(text)
    speaker.runAndWait()
speaker.stop()
				
			

حالا به مرحله ذخیره صدا به صورت فایل mp3 می‌رسیم:

				
					engine.save_to_file(text, 'audio.mp3')
engine.runAndWait()
				
			

به این ترتیب، می‌توانیم با چند خط کد پایتون یک کتاب صوتی بسازیم. امیدواریم این پروژه پایتون رایگان برای ساخت کتاب صوتی، مورد پسند شما واقع شده باشد. می‌توانید سؤالات ارزشمند خود را در بخش نظرات بپرسید.

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}
X