🔆تفاوت و اشتراک در تاپل
مگه تاپل ها غیرقابل تغییر نیستند؟
پس چطوری میشه تفاوت و اشتراک هاشون و پیدا کرد؟؟
یکی از راه ها برای یافتن اشتراک و تفاوت های دو تاپل تبدیل آنها به set و استفاده از دستورات intersectionو difference میباشد.
فرض کنید دو تاپل داریم:
tuple1 = (1, 2, 3, 4, 5)
tuple2 = (4, 5, 6, 7, 8)
🔅یافتن اشتراک
برای یافتن عناصر مشترک بین دو تاپل، میتوانید از تبدیل هر کدام به مجموعه (Set) استفاده کنید، زیرا مجموعهها عملیاتهای جستجو و اشتراک را سریعتر انجام میدهند:
tuple1 = (1, 2, 3, 4, 5)
tuple2 = (4, 5, 6, 7, 8)
# تبدیل تاپلها به مجموعه و پیدا کردن اشتراک
intersection = set(tuple1) & set(tuple2)
print("intersection=", intersection)
#Output:
#intersection={4, 5}
🔅یافتن تفاوت
برای یافتن عناصر موجود در یک تاپل که در تاپل دیگر وجود ندارند، میتوانید از عملگر تفاوت (difference) استفاده کنید:
# تفاوت بین تاپل ۱ و ۲
difference1 = set(tuple1) - set(tuple2)
difference2 = set(tuple2) - set(tuple1)
print(" differences between tuple1, tuple2:", difference1)
print(" differences between Touple2, tuple1:", difference2)
#Output :
#differences between tuple1, tuple2: {1, 2, 3}
#differences between Touple2, tuple1: {8, 6, 7}
🔗توجه:
این روش فقط برای عناصر قابل مقایسه (مثل اعداد، رشتهها و ...) قابل استفاده است. اگر عناصر تاپلها شامل نوع دادههای پیچیدهتری باشند، باید روشهای دیگری مد نظر قرار گیرد.
#tuple
🔆ساخت نمودار دایرهای با 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()
Intertools Module
3 ترفند با itertools
امروز ما به چندین عملکرد از یک ماژول نسبتا مفید نگاه خواهیم کرد که به شما امکان می دهد به طور مؤثر با اشیاء تکرار شونده کار کنید. بیایید با یک تابع بسیار ساده شروع کنیم.
تابع accumulate کمی شبیه به reduce است، اما به جای اینکه یک مقدار نهایی به شما بدهد، به طور متوالی تابع مشخص شده در آرگومان دوم (در اینجا min) را به هر عنصر بعدی اعمال میکند:
min(45), min(2, 53), min(2,12)
و به همین ترتیب هربار مقایسه میشود و مقدار min را برمیگرداند و با عدد بعدی مقایسه میکند.
برای ایجاد ترکیبها از عناصر یک شئ تکرار شونده انتخاب شده، به تابع combinations نیاز خواهید داشت. آرگومان دوم میتواند برای مشخص کردن طول این ترکیب استفاده شود.
تابع chain به شما این امکان را میدهد که چندین عنصر تکرار شونده را به یکدیگر "چسبانده" و به عنوان یک دنباله واحد استفاده کنید.
#itertools
Stack
استفاده از لیست ها به عنوان پشته
پشته یک نوع داده انتزاعی است که لیستی از عناصر سازماندهی شده بر اساس اصل LIFO (آخرین ورود – اولین خروج) است. (هرکی دیرتر اومده زودتر خارج میشه)
لیست ها در پایتون دارای روش های داخلی مناسبی هستند که برای پیاده سازی چنین ساختار داده ای کافی هستند. برای اضافه کردن یک عنصر به انتهای پشته، از روش append و برای حذف آن از روش pop استفاده کنید.
نمای برنامه پشته برای عبور از ساختارهایی مانند نمودارها و درختان استفاده می شود. هنگام پیاده سازی توابع بازگشتی، یک پشته نیز استفاده می شود، اما در این مورد از قبل به شکل سخت افزاری خواهد بود.
#stack
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 | آموزش پایتون
📸Taking photos using your system's webcam in Python
📸گرفتن عکس در پایتون با وبکم سیستم
#opencv_python | #cv2
Write colored text in Python
متن هاتو در پایتون رنگی بنویس😍
#termcolor | #colorama