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 | آموزش پایتون
🍓4
📸Taking photos using your system's webcam in Python
📸گرفتن عکس در پایتون با وبکم سیستم
#opencv_python | #cv2
📸گرفتن عکس در پایتون با وبکم سیستم
#opencv_python | #cv2
تحلیل تست بالا
با اجرای کد، فقط خروجی
کنسول چاپ خواهد شد، زیرا رشته 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 میپردازد.
✅آشنایی با اصول اولیه برنامهنویسی و توسعه بازی و ساخت بازیهای سرگرمکننده.
#معرفی_کتاب | #بوک_تایم | آموزش پایتون
📚کتاب "ساخت بازی با پایتون"
✅ساخت بازی و دوست دارید؟؟
این کتاب طور خاص به مباحث مربوط به استفاده از کتابخانه Pygame میپردازد.
✅آشنایی با اصول اولیه برنامهنویسی و توسعه بازی و ساخت بازیهای سرگرمکننده.
#معرفی_کتاب | #بوک_تایم | آموزش پایتون
👍2
Morse Code Converter
🔺تبدیل کننده کد مورس
#tikinter | #morse_code
🔺تبدیل کننده کد مورس
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)
هش به فرآیندی اطلاق میشود که در آن یک ورودی (مانند یک پیام یا داده) به یک مقدار ثابت و (به نام هش) تبدیل میشود. این مقدار هش به نحوی طراحی شده است که نسبت به تغییرات کوچک در ورودی، تغییرات بزرگ و غیرقابل پیشبینی در مقدار هش تولید شود. هشها در علم رایانه و رمزنگاری کاربردهای زیادی دارند.
#hash | #sha256 | LearnPython
هش به فرآیندی اطلاق میشود که در آن یک ورودی (مانند یک پیام یا داده) به یک مقدار ثابت و (به نام هش) تبدیل میشود. این مقدار هش به نحوی طراحی شده است که نسبت به تغییرات کوچک در ورودی، تغییرات بزرگ و غیرقابل پیشبینی در مقدار هش تولید شود. هشها در علم رایانه و رمزنگاری کاربردهای زیادی دارند.
🔅 ویژگیهای اصلی هش
1. یکطرفه: هش به گونهای طراحی شده است که فرایند تبدیل داده به هش غیرقابل بازگشت است. این به این معناست که نمیتوان از روی مقدار هش به ورودی اصلی دست یافت.
2. خروجی ثابت: برخلاف ورودیها که میتوانند اندازههای متفاوتی داشته باشند، خروجی تابع هش همیشه یک اندازه ثابت دارد. برای مثال، تابع SHA-256 همیشه خروجی 256 بیتی دارد.
3. مقاومت در برابر برخورد: دو ورودی متفاوت نباید بتوانند هش یکسانی تولید کنند. این ویژگی باعث میشود که به راحتی نتوان دو مجموعه داده را که خروجی مشابهی دارند، پیدا کرد.
4. حساسیت به تغییرات: حتی کوچکترین تغییر در ورودی باید منجر به تغییرات قابل توجه در مقدار هش شود.
🔅کاربردهای هش
- احراز هویت: هشها برای بررسی صحت و سلامت دادهها و همچنین احراز هویت کاربران به کار میروند.
- مدیریت رمز عبور: برای ذخیرهسازی امن رمزهای عبور، معمولاً ابتدا آنها را به هش تبدیل کرده و سپس ذخیره میکنند تا در صورت نفوذ به پایگاه داده، رمز عبور واقعی فاش نشود.
- امضاهای دیجیتال: در امضاهای دیجیتال نیز از هشها برای اطمینان از عدم تغییر اطلاعات استفاده میشود.
- فرآیندهای امنیتی: در پروتکلهای امنیتی مانند TLS و SSL به کار گرفته میشوند.
🔅مثالها
- الگوریتمهای هش معروف شامل MD5، SHA-1، SHA-256 و SHA-512 هستند.
با توجه به اهمیت و شرایط امنیتی، SHA-256 به عنوان یک روش مطمئن برای ایجاد کدهای هش و حمایت از امنیت دادهها در دنیای دیجیتال محسوب میشود.
#hash | #sha256 | LearnPython
Telegram
آموزش پایتون
ارتباط با ما:
@learnpythonicyBot
لینک گروه چت:
https://t.me/learnpythonicychat
لینک چنل ایتا:
https://eitaa.com/learnpythonicy
@learnpythonicyBot
لینک گروه چت:
https://t.me/learnpythonicychat
لینک چنل ایتا:
https://eitaa.com/learnpythonicy
🔐 Hash a Password with Python
🔐 هش یک رمز عبور با پایتون
رمزهای عبور خود را با هش کردن آنها با پایتون و کتابخانه hashlib ایمن کنید!
ابتدا ماژول لازم را نصب کنید:
از
``
به سادگی و به صورت امن، رمز عبور خود را هش کرده و از امنیت رمزهای عبور خود اطمینان حاصل کنید!
#hash | #sha256 | #password
🔐 هش یک رمز عبور با پایتون
رمزهای عبور خود را با هش کردن آنها با پایتون و کتابخانه 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
Creating Table Using Python
🦹♀️تا حالا با پایتون جدول ساختی؟
#rich | #table | LearningPython
🦹♀️تا حالا با پایتون جدول ساختی؟
# pip install rich
from rich.console import Console
from rich.table import Table
# https://t.me/learnpythonicy
# Initialize the console
console = Console()
# Create a table
table = Table(title="Sample Data Table")
# Add columns
table.add_column("State", justify="left", style="cyan", no_wrap=True)
table.add_column("Murder Rate", justify="right", style="magenta")
table.add_column("Population", justify="right", style="green")
table.add_column("Illiteracy Rate", justify="right", style="blue")
table.add_column("Income", justify="right", style="yellow")
# Add rows
data = [
['Alabama', '13.2', '236', '58', '21.2'],
['Alaska', '10.0', '263', '48', '44.5'],
['Arizona', '8.1', '294', '80', '31.0'],
]
for row in data:
table.add_row(*row)
# Print the table
console.print(table)
#rich | #table | LearningPython