آموزش پایتون
87 subscribers
282 photos
21 videos
81 files
178 links
ارتباط با ما:
@learnpythonicyBot

لینک گروه چت:
https://t.me/learnpythonicychat

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
pie chart using matplotlib in python


🔆ساخت نمودار دایره‌ای با matplotlib
در اینجا گام به گام رسم یک نمودار دایره ای توضیح داده شده است.

🔅گام 1: نصب matplotlib
اگر تا به حال آن را نصب نکرده اید، می‌توانید برای نصب آن دستور زیر را در command prompt تایپ کنید.

pip install matplotlib

🔅گام 2: ساخت یک نمودار دایره ای

👇مثال

import matplotlib.pyplot as plt

# Data to plot
labels = ['Python', 'Java', 'C++', 'Ruby']
sizes = [45, 30, 15, 10] # Corresponding sizes for each label
colors = ['gold', 'lightcoral', 'lightskyblue', 'lightgreen'] # Colors for each slice
explode = (0.1, 0, 0, 0) # explode 1st slice (i.e. 'Python')

# Create a pie chart
plt.figure(figsize=(8, 8)) # Set the figure size
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=140)

plt.axis('equal') # Equal aspect ratio ensures that pie chart is a circle.

# Title
plt.title('Programming Language Usage')

# Show the plot
plt.show()


🟣توضیح کد


1. وارد کردن Matplotlib: با استفاده از import matplotlib.pyplot as plt ما ماژول مورد نیاز برای رسم نمودار را وارد می‌کنیم.

2. آماده‌سازی داده‌ها:
- labels:
یک لیست از رشته‌ها است که نمایانگر برچسب‌های هر بخش دایره است.
- sizes:
یک لیست از مقادیر است که اندازه هر بخش دایره را نشان می‌دهد.
- colors:
یک لیست از رنگ‌ها برای هر بخش.
- explode:
برای بیرون آوردن یک بخش از دایره استفاده می‌شود؛ در اینجا، بخش اول (Python) به بیرون آورده شده است.

3. ایجاد نمودار دایره‌ای:
- توابع plt.pie() برای رسم نمودار دایره‌ای استفاده می‌شود و پارامترهای مختلفی شامل sizes، explode، labels، colors و گزینه‌های مختلفی برای زیباسازی مانند autopct برای نشان دادن درصد روی بخش‌های دایره دارد.

4. نسبت نابرابر: plt.axis('equal') اطمینان حاصل می‌کند که نمودار دایره‌ای به صورت کامل نمایش داده می‌شود.

5. عنوان و نمایش نمودار: با استفاده از plt.title() یک عنوان برای نمودار تنظیم می‌کنیم و با plt.show() نمودار را نمایش می‌دهیم.

🔗توجه:
این یک مثال ساده از نمودار دایره‌ای است. شما می‌توانید آن را با تنظیم پارامترهایی مانند shadow، startangle و استفاده از طرح‌های رنگی مختلف سفارشی کنید.
import matplotlib.pyplot as plt
import numpy as np


def midpoints(x):
sl = ()
for _ in range(x.ndim):
x = (x[sl + np.index_exp[:-1]] + x[sl + np.index_exp[1:]]) / 2.0
sl += np.index_exp[:]
return x

# prepare some coordinates, and attach rgb values to each
r, g, b = np.indices((17, 17, 17)) / 16.0
rc = midpoints(r)
gc = midpoints(g)
bc = midpoints(b)

# define a sphere about [0.5, 0.5, 0.5]
sphere = (rc - 0.5)**2 + (gc - 0.5)**2 + (bc - 0.5)**2 < 0.5**2

# combine the color components
colors = np.zeros(sphere.shape + (3,))
colors[..., 0] = rc
colors[..., 1] = gc
colors[..., 2] = bc

# and plot everything
ax = plt.figure().add_subplot(projection='3d')
ax.voxels(r, g, b, sphere,
facecolors=colors,
edgecolors=np.clip(2*colors - 0.5, 0, 1), # brighter
linewidth=0.5)
ax.set(xlabel='r', ylabel='g', zlabel='b')
ax.set_aspect('equal')

plt.show()

#matplotlib | #numpy
Intertools Module


3 ترفند با itertools

امروز ما به چندین عملکرد از یک ماژول نسبتا مفید نگاه خواهیم کرد که به شما امکان می دهد به طور مؤثر با اشیاء تکرار شونده کار کنید. بیایید با یک تابع بسیار ساده شروع کنیم.

تابع accumulate کمی شبیه به reduce است، اما به جای اینکه یک مقدار نهایی به شما بدهد، به طور متوالی تابع مشخص شده در آرگومان دوم (در اینجا min) را به هر عنصر بعدی اعمال می‌کند:
min(45), min(2, 53), min(2,12)
و به همین ترتیب هربار مقایسه می‌شود و مقدار min را برمی‌گرداند و با عدد بعدی مقایسه می‌کند.

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

تابع chain به شما این امکان را می‌دهد که چندین عنصر تکرار شونده را به یکدیگر "چسبانده" و به عنوان یک دنباله واحد استفاده کنید.

#itertools | #module | learnpythonicy
Stack


استفاده از لیست ها به عنوان پشته

پشته یک نوع داده انتزاعی است که لیستی از عناصر سازماندهی شده بر اساس اصل LIFO (آخرین ورود – اولین خروج) است. (هرکی دیرتر اومده زودتر خارج میشه)

لیست ها در پایتون دارای روش های داخلی مناسبی هستند که برای پیاده سازی چنین ساختار داده ای کافی هستند. برای اضافه کردن یک عنصر به انتهای پشته، از روش append و برای حذف آن از روش pop استفاده کنید.

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

#stack
Tic-Tac-Toe Game In Python

🤩کی دوز بازی دوست داره؟

#tikinter | #game
import tkinter as tk
from tkinter import messagebox

# Initialize the main window
root = tk.Tk()
root.title("Tic-Tac-Toe")
root.configure(bg='lightblue') # Set background color

# Variables to store the state of the game
board = [' ' for _ in range(9)]
player = 'X'
scores = {'X': 0, 'O': 0}

# Function to update the button text and board state
def update_board(index, button):
global player
if board[index] == ' ':
board[index] = player
button.config(text=player, fg='blue' if player == 'X' else 'green', bg='white')
if check_win():
messagebox.showinfo("Tic-Tac-Toe", f"Player {player} wins!")
scores[player] += 1
reset_board()
elif ' ' not in board:
messagebox.showinfo("Tic-Tac-Toe", "No winner!")
reset_board()
else:
player = 'O' if player == 'X' else 'X'

# Function to check for a win
def check_win():
win_conditions = [
(0, 1, 2), (3, 4, 5), (6, 7, 8), # Rows
(0, 3, 6), (1, 4, 7), (2, 5, 8), # Columns
(0, 4, 8), (2, 4, 6) # Diagonals
]
for i, j, k in win_conditions:
if board[i] == board[j] == board[k] != ' ':
return True
return False

# Function to reset the board
def reset_board():
global board, player
board = [' ' for _ in range(9)]
player = 'X'
for button in buttons:
button.config(text='', bg='lightgrey')

# Function to show the scores when closing the game
def on_closing():
messagebox.showinfo("Scores", f"Player X: {scores['X']} wins\nPlayer O: {scores['O']} wins")
root.destroy()

# Create buttons for the Tic-Tac-Toe board
buttons = []
for i in range(9):
button = tk.Button(root, text=' ', width=10, height=5, bg='lightgrey',
command=lambda i=i: update_board(i, buttons[i]))
button.grid(row=i//3, column=i%3, padx=5, pady=5) # Add padding for better spacing
buttons.append(button)

# Bind the closing event to the on_closing function
root.protocol("WM_DELETE_WINDOW", on_closing)

# Run the main loop
root.mainloop()


#tikinter | #game | آموزش پایتون
🍓4
📸Taking photos using your system's webcam in Python

📸گرفتن عکس در پایتون با وبکم سیستم

#opencv_python | #cv2
یلداتون مبارک🍌
👨‍💻4
This media is not supported in your browser
VIEW IN TELEGRAM
🐍Snake Game In Python

🐍کیا مار بازی یادشونه؟


#pygame | #game
👨‍💻2
Write colored text in Python

متن هاتو در پایتون رنگی بنویس😍

#termcolor | #colorama
🙄خروجی قطعه کد بالا کدام است؟

#تست_تایم | آموزش پایتون
Output:
Anonymous Quiz
22%
A
33%
B
22%
C
22%
D
تحلیل تست بالا


با اجرای کد، فقط خروجی False در
کنسول چاپ خواهد شد، زیرا رشته txt با حرف بزرگ "H" شروع نمی‌شود.
تابع capitalize() در اینجا به دلیل عدم ذخیره خروجی، هیچ تأثیری در متغیر txt نداشته است.

بنابراین، اگر بخواهید خروجی True باشد باید capitalize را به یک متغیر اختصاص دهید:

txt = txt.capitalize()

در این حالت، txt مقدار "Hello, welcome to my world." را خواهد داشت.
makinggames.pdf
4.4 MB
📚«Making Games with Python & pygame»

📚کتاب "ساخت بازی با پایتون"

ساخت بازی و دوست دارید؟؟
این کتاب طور خاص به مباحث مربوط به استفاده از کتابخانه Pygame می‌پردازد.

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


#معرفی_کتاب | #بوک_تایم | آموزش پایتون
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Morse Code Converter

🧑‍💻تبدیل کنندهٔ کد مورس


#tikinter | #morse_code
Morse Code Converter

🔺تبدیل کننده کد مورس


import tkinter as tk
from tkinter import messagebox

MORSE_CODE_DICT_ENGLISH = {
'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.',
'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-',
'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '1': '.----',
'2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...',
'8': '---..', '9': '----.', '0': '-----', ' ': '/'
}

MORSE_CODE_DICT_PERSIAN = {
'ا': '.-', 'ب': '-...', 'پ': '.--.', 'ت': '-', 'ث': '...-', 'ج': '.---', 'چ': '---.',
'ح': '....', 'خ': '----', 'د': '-..', 'ذ': '-...', 'ر': '.-.', 'ز': '--..', 'ژ': '--.-',
'س': '...', 'ش': '---', 'ص': '-.-.', 'ض': '-..-', 'ط': '-.-', 'ظ': '-.-.', 'ع': '--',
'غ': '-.-', 'ف': '..-.', 'ق': '--.-', 'ک': '-.-', 'گ': '--.', 'ل': '.-..', 'م': '--',
'ن': '-.', 'و': '.--', 'ه': '....', 'ی': '..', 'ء': '.', 'آ': '.-', 'ژ': '.-.-',
'چ': '--..', ' ': '/'
}

def text_to_morse(text, language):
if language == "English":
morse_dict = MORSE_CODE_DICT_ENGLISH
elif language == "Persian":
morse_dict = MORSE_CODE_DICT_PERSIAN

morse_code = ''
for char in text.upper():
morse_code += morse_dict.get(char, '?') + ' '

return morse_code.strip()

def morse_to_text(morse_code, language):
if language == "English":
morse_dict = {v: k for k, v in MORSE_CODE_DICT_ENGLISH.items()}
elif language == "Persian":
morse_dict = {v: k for k, v in MORSE_CODE_DICT_PERSIAN.items()}

words = morse_code.split(' ')
translated_text = ''

for word in words:
letters = word.split(' ')
for letter in letters:
translated_text += morse_dict.get(letter, '?')
translated_text += ' '

return translated_text.strip()

def convert():
input_text = text_entry.get()
conversion_type = conversion_var.get()

if conversion_type == "English to Morse":
result = text_to_morse(input_text, "English")
elif conversion_type == "Persian to Morse":
result = text_to_morse(input_text, "Persian")
elif conversion_type == "Morse to English":
result = morse_to_text(input_text, "English")
elif conversion_type == "Morse to Persian":
result = morse_to_text(input_text, "Persian")

result_var.set(result)

def copy_to_clipboard():
root.clipboard_clear()
root.clipboard_append(result_var.get())
messagebox.showinfo("Copied", "The result has been copied to the clipboard")

# Create the main window
root = tk.Tk()
root.title("Morse Code Converter")

# Set background color
root.configure(bg='#2D4059')

# Create widgets
title_label = tk.Label(root, text="Morse Code Converter", font=("Helvetica", 16, "bold"), bg='#2D4059', fg='#FFD460')
title_label.pack(pady=10)

text_label = tk.Label(root, text="Enter Text or Morse Code:", bg='#2D4059', fg='white')
text_label.pack(pady=5)

text_entry = tk.Entry(root, width=50)
text_entry.pack(pady=5)

conversion_var = tk.StringVar(value="English to Morse")
conversion_menu = tk.OptionMenu(root, conversion_var, "English to Morse", "Persian to Morse", "Morse to English", "Morse to Persian")
conversion_menu.pack(pady=10)

convert_button = tk.Button(root, text="Convert", command=convert, bg='#FF894C', fg='white')
convert_button.pack(pady=10)

copy_button = tk.Button(root, text="Copy to Clipboard", command=copy_to_clipboard, bg='#DC2F2F', fg='white')
copy_button.pack(pady=10)

result_var = tk.StringVar()
result_label = tk.Label(root, textvariable=result_var, bg='#2D4059', fg='red', font=("Helvetica", 14))
result_label.pack(pady=10)

# Run the main loop
root.mainloop()


#tikinter | #morse_code
🔆هش (Hash)

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

🔅 ویژگی‌های اصلی هش

1. یکطرفه: هش به گونه‌ای طراحی شده است که فرایند تبدیل داده به هش غیرقابل بازگشت است. این به این معناست که نمی‌توان از روی مقدار هش به ورودی اصلی دست یافت.

2. خروجی ثابت: برخلاف ورودی‌ها که می‌توانند اندازه‌های متفاوتی داشته باشند، خروجی تابع هش همیشه یک اندازه ثابت دارد. برای مثال، تابع SHA-256 همیشه خروجی 256 بیتی دارد.

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

4. حساسیت به تغییرات: حتی کوچک‌ترین تغییر در ورودی باید منجر به تغییرات قابل توجه در مقدار هش شود.

🔅کاربردهای هش

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

🔅مثال‌ها
- الگوریتم‌های هش معروف شامل MD5، SHA-1، SHA-256 و SHA-512 هستند.
با توجه به اهمیت و شرایط امنیتی، SHA-256 به عنوان یک روش مطمئن برای ایجاد کدهای هش و حمایت از امنیت داده‌ها در دنیای دیجیتال محسوب می‌شود.


#hash | #sha256 | LearnPython
🔐 Hash a Password with Python

🔐 هش یک رمز عبور با پایتون

رمزهای عبور خود را با هش کردن آنها با پایتون و کتابخانه hashlib ایمن کنید!

ابتدا ماژول لازم را نصب کنید:
از hashlib برای ایجاد هش و colorama برای رنگی کردن متن در کنسول استفاده می‌شود.

pip install hashlib

``sh
pip install colorma``



سپس از ساختار زیر استفاده کنید:

import hashlib
from colorama import Fore,Style
# https://t.me/learnpythomicy

def hash_password(password):
# Create a new sha256 hash object
hash_obj = hashlib.sha256()
# Update the hash object with the bytes of the password
hash_obj.update(password.encode('utf-8'))
# Return the hexadecimal representation of the hash
return hash_obj.hexdigest()

password = input(Fore.BLUE + 'Password: ')
hashed_password = hash_password(password)
print(Fore.RED + '\nHashed Password:',end=' ')
print(Style.RESET_ALL+ hashed_password)


به سادگی و به صورت امن، رمز عبور خود را هش کرده و از امنیت رمزهای عبور خود اطمینان حاصل کنید!

#hash | #sha256 | #password
👍2