📌 عنوان برنامه: برنامه‌ای بنویسید که یک متن (text) را با دو صدای (آقا و خانم) و با دو سرعت خواندن (معمولی / کمی کندتر) و البته بدون نیاز به اینترنت، برای ما بخواند؟

نکته جذاب: اجرای این برنامه، نیازی به اینترنت ندارد!

نکته:
انشاءالله بر اساس این کد، چند پروژه جذاب دیگر خواهیم نوشت!

# **************************************************
# pip install pyttsx4
# https://github.com/Jiangshan00001/pyttsx4
#
# https://www.lipsum.com
# **************************************************
import pyttsx4 as pytts

engine = pytts.init()

voices = engine.getProperty(name="voices")
default_rate = engine.getProperty(name="rate")

text = """Lorem Ipsum is simply dummy text of the
printing and typesetting industry. Lorem Ipsum has
been the industry's standard dummy text ever since
the 1500s, when an unknown printer took a galley of
type and scrambled it to make a type specimen book."""

for voice in voices:
print("Voice Id:", voice.id)

engine.setProperty(name="voice", value=voice.id)

engine.say(text=text)

for voice in voices:
print("Voice Id:", voice.id)

engine.setProperty(name="voice", value=voice.id)
engine.setProperty(name="rate", value=default_rate - 50)

engine.say(text=text)

engine.runAndWait()
# **************************************************

#SourceCode #SourceCode10022
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
👍86
💚 سلام دوستان عزیزم 💚

برنامه‌هایی که در این کانال منتشر می‌شوند، از یک دیدگاه، به دو دسته تقسیم می‌شوند:

#Basic
#Practical

برنامه‌هایی که Tag ای به نام Basic دارند، برنامه‌های ساده‌ای هستند که لزوما کاربردی و هیجان‌انگیز نیستند، و صرفا برنامه‌هایی هستند که مناسب کسانی است که تازه‌کار بوده و می‌خواند با اصول اولیه و دیسیپلین‌های زبان پایتون آشنا شوند، و در ضمن برنامه‌هایی هستند که وظیفه زیرسازی ذهن شما را برعهده داشته و شما را برای مشاهده یک برنامه کاربردی / هیجان‌انگیز که در آینده منتشر خواهد شد، آماده می‌کند.

برنامه‌هایی که Tag ای به نام Practical دارند، معمولا برنامه‌های کاربردی / هیجان‌انگیزی هستند که البته برای یادگیری آن‌ها باید حداقل دانش اولیه پایتون را داشته باشید، و باید قبلا برنامه‌های Basic مرتبط با آن برنامه را مشاهده کرده باشید، ولی اگر دارای یک ذهن استقرایی باشید، می‌توانید کد آن‌ها را درک کرده و عنداللزوم کد آن‌ها را تغییر داده و به سلیقه خود، آن‌ها را بومی‌سازی نمایید.

با تشکر و احترام
داریوش تصدیقی 🌺🌺👍👍🙏🙏🌸🌸
5👍4
📌 عنوان برنامه: برنامه‌ای بنویسید که از کاربر، نام، نام خانوادگی و سن وی را گرفته و به کاربر نمایش دهد؟

نکته: معمولا کدهایی که نوشته شده و Comment می‌شوند، کدهایی هستند که شاید بعضی از برنامه‌نویسان آماتور آن‌ها را می‌نویسند و اصولا جزء Best Practice ها در نظر گرفته نمی‌شوند!

نکته: به ""f، اصطلاحا String Format می‌گویند که اساسا روشی شیک‌تر و مناسب‌تر برای کنار هم قرار دادن رشته‌ها می‌باشد!

# **************************************************
first_name = input("What is your first name: ")
last_name = input("What is your last name: ")

# age = input("How old are you? ")
# age = int(age)

age = int(input("How old are you? "))

# full_name = "You are " + first_name + " " + last_name + " and " + str(age) + " years old."

# full_name = (
# "You are " + first_name + " " + last_name + " and " + str(age) + " years old."
# )

full_name = f"You are {first_name} {last_name} and {age} years old."

print(full_name)
# **************************************************

#SourceCode #SourceCode10023 #Basic
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
👍53
📌 عنوان برنامه: برنامه‌ای بنویسید که از کاربر، نام، نام خانوادگی و سن وی را گرفته و به کاربر نمایش دهد؟

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

# **************************************************
# pip install pyttsx4
# https://github.com/Jiangshan00001/pyttsx4
# **************************************************
import pyttsx4 as pytts

engine = pytts.init()

prompt = "What is your first name: "
engine.say(text=prompt)
engine.runAndWait()
first_name = input(prompt)

prompt = "What is your last name: "
engine.say(text=prompt)
engine.runAndWait()
last_name = input(prompt)

prompt = "How old are you? "
engine.say(text=prompt)
engine.runAndWait()
age = int(input(prompt))

full_name = f"You are {first_name} {last_name} and {age} years old."
engine.say(text=full_name)
engine.runAndWait()
print(full_name)
# **************************************************

#SourceCode #SourceCode10024 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
👍53
📌 عنوان برنامه: برنامه‌ای بنویسید که مسیر پوشه (Stories) و نام یک فایل متنی را گرفته، و سپس محتوای آن فایل متنی را به صورت Voice پخش نماید؟

نکته: شما می‌توانید این متن را با صدای (voices) آقا و یا خانم، پخش نمایید!
نکته: شما می‌توانید این متن را با سرعت (rate) کند و یا سریع، پخش نمایید!
نکته: برای هیجان بیشتر، یک فایل ZIP، در مطلب بعدی قرار خواهم داد تا مجموعه‌ای از کتاب‌های داستانی شرلوک‌هولمز، به صورت متنی (txt) قرار دارند، می‌توانید این فایل را در کنار این سورس‌کد Extract کرده و از شنیدن این داستان‌های جذاب، لذت ببرید!

# **************************************************
# pip install pyttsx4
# https://github.com/Jiangshan00001/pyttsx4
# **************************************************
import os
import pyttsx4 as pytts

engine = pytts.init()

voices = engine.getProperty(name="voices")
engine.setProperty(name="voice", value=voices[0].id)
# engine.setProperty(name="voice",value= voices[1].id)

default_rate = engine.getProperty(name="rate")
engine.setProperty("rate", default_rate - 50)

filename = "Stories/advs.txt"

if os.path.exists(path=filename) == False or os.path.isfile(path=filename) == False:
print(f"File '{filename}' not found!")
quit()

# file=open(file=filename, mode="r")
# file_content = file.read()
# file.close()

with open(file=filename, mode="r") as file:
file_content = file.read()

engine.say(text=file_content)
engine.runAndWait()
# **************************************************

#SourceCode #SourceCode10025 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍3
Stories.zip
3.5 MB
💚 کلیه کتاب‌های جذاب شرلوک‌هولمز در قالب فایل‌های متنی (txt)، که می‌توانید توسط آخرین برنامه منتشر شده و به صورت Audio Book آن‌ها را پخش کرده و لذت ببرید...

#SourceCode #SourceCode10025 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
6👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که مسیر پوشه (Stories) و نام یک فایل متنی را گرفته، و سپس محتوای آن فایل متنی را تبدیل به یک Audio Book با فرمت mp3 نماید؟

نکته: شما می‌توانید این متن را با صدای (voices) آقا و یا خانم، پخش نمایید!
نکته: شما می‌توانید این متن را با سرعت (rate) کند و یا سریع، پخش نمایید!
نکته: برای هیجان بیشتر، یک فایل ZIP، در مطلب قبلی قرار داده‌ام تا به مجموعه‌ای از کتاب‌های داستانی شرلوک‌هولمز، به صورت متنی (txt) دسترسی داشته باشید. شما می‌توانید این فایل را در کنار این سورس‌کد Extract نمایید.
نکته: به عنوان نمونه، برای تبدیل کتاب advs، به mp3، تقریبا چند دقیقه‌ای طول می‌کشد! پس لطفا صبور باشید!
نکته: به عنوان نمونه، کتاب صوتی advs، حدود ۱۲ ساعت، و حجم آن در حدود ۲ گیگا بایت خواهد شد!

# **************************************************
# pip install pyttsx4
# https://github.com/Jiangshan00001/pyttsx4
# **************************************************
import pyttsx4 as pytts

engine = pytts.init()

voices = engine.getProperty(name="voices")
engine.setProperty(name="voice", value=voices[0].id)
# engine.setProperty(name="voice",value= voices[1].id)

default_rate = engine.getProperty(name="rate")
engine.setProperty("rate", default_rate - 50)

filename = "advs"
pathname_to_read = f"Stories/{filename}.txt"
pathname_to_write = f"Stories/{filename}.mp3"

with open(file=pathname_to_read, mode="r") as file:
file_content = file.read()

engine.save_to_file(text=file_content, filename=pathname_to_write)
engine.runAndWait()
# **************************************************

#SourceCode #SourceCode10026 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍2
💚 سلام دوستان عزیزم 💚

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

💚 اکثر شما عزیزان، اینجانب را به خوبی می‌شناسید، و همان‌طور که تاکنون متوجه شده‌اید، این کانال کاملا رایگان بوده و هیچ‌گونه تبلیغی (به هر شکل) در داخل آن وجود نداشته و نخواهد داشت!

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

💚 پیشاپیش از حسن نظر و توجه شما سپاسگزاریم و مشتاقانه در انتظار سورس‌کدها و ایده‌های جذاب و هیجان‌انگیز شما هستیم...

ارادتمند شما
داریوش تصدیقی 💚🙏👍🌺
18👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که Webcam متصل به دستگاه را روشن کرده و تصاویر آن را در یک پنجره، به کاربر نمایش دهد؟

نکته: در تابع VideoCapture، می‌توان اندیس مربوط به Webcam را مشخص کرد! به طور پیش‌فرض، اولین Webcam متصل به دستگاه، اندیس صفر دارد!
نکته: بهتر است که قبل از ادامه کار، اطمینان حاصل کنیم که Webcam به درستی راه‌اندازی شده است! با استفاده از تابع isOpened می‌توان چنین بررسی را انجام داد.
نکته: تابع read، دو پارامتر برمی‌گرداند که چون پارامتر اول را در این برنامه نیاز نداریم، از پارامتر ـ استفاده می‌کنیم!
نکته: با استفاده از تابع imshow، می‌توانیم تصویری که از Webcam دریافت کرده‌ایم (frame) را در پنجره‌ای با عنوان DT Webcam Viewer نمایش دهیم.
نکته: با استفاده از دستور waitKey، منتظر می‌مانیم که اگر کاربر دکمه ESC کیبورد را بفشارد، از برنامه خارج شویم.
نکته: مهم‌ترین کار در هر زبان برنامه‌نویسی، آن است که پس از اتمام کار، حافظه را تر و تمیز نماییم! دو دستور release و destroyAllWindows، این وظیفه مهم را در این برنامه بر عهده دارند!

# **************************************************
# pip install opencv-python
# https://github.com/opencv/opencv-python
# **************************************************
import cv2 as cv

capture = cv.VideoCapture(index=0)

# Check if the webcam is opened correctly
if not capture.isOpened():
print("[#] Can not open webcam!")
quit()

while True:
# Frame means Webcam Image Capture!
_, frame = capture.read()

cv.imshow(winname="DT Webcam Viewer", mat=frame)

# Wait 1ms for ESC to be pressed
key = cv.waitKey(delay=1)
if key == 27:
break

capture.release()
cv.destroyAllWindows()
# **************************************************

#SourceCode #SourceCode10027 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
5👍4
📌 عنوان برنامه: برنامه‌ای بنویسید که در محیط Console، پنج بار عبارت Hello, World را بنویسد؟

نکته: این برنامه را به شش روش مختلف خواهیم نوشت، ولی هدف از این تمرین، روش ششم است که از ماژول time و تابع sleep استفاده می‌نماییم. تابع sleep، در دو برنامه آتی خیلی هیجان‌انگیز خواهد بود!

راه‌حل اول: راه‌حلی که با هر سطح دانشی از برنامه‌نویسی، احمقانه به نظر می‌رسد!

# ********************
# *** Solution (1) ***
# ********************
print("Hello, World!")
print("Hello, World!")
print("Hello, World!")
print("Hello, World!")
print("Hello, World!")
# ********************

راه‌حل دوم: استفاده از حلقه تکرار (while). به جای استفاده از دستور index = index + 1، هوشمندانه آن است که از دستور index += 1 استفاده نماییم:

# ********************
# *** Solution (2) ***
# ********************
index = 1
while index <= 5:
print("Hello, World!")
index += 1
# index = index + 1
# ********************

راه‌حل سوم / چهارم: استفاده از حلقه تکرار (for). اگر دقت نمایید، متغیر index، در راه‌حل ذیل بلااستفاده است! لذا به جای استفاده از index، در راه‌حل چهارم، از _ (Underscore) استفاده می‌کنیم:

# ********************
# *** Solution (3) ***
# ********************
for index in range(5):
print("Hello, World!")
# ********************

# ********************
# *** Solution (4) ***
# ********************
for _ in range(5):
print("Hello, World!")
# ********************

راه‌حل پنجم: اگر متغیر index، به درد ما بخورد، از آن استفاده می‌کنیم! در راه‌حل پنجم، می‌خواهیم قبل از عبارت Hello, World، اندیس از یک تا پنج نمایش داده شود. نکته مهم: در زمان چاپ از عبارت index + 1 استفاده می‌کنیم، چرا که index در این حلقه تکرار، از صفر تا چهار تغییر می‌کند:

# ********************
# *** Solution (5) ***
# ********************
for index in range(5):
print(f"{index + 1}: Hello, World!")
# ********************

راه‌حل ششم: می‌خواهیم پنج بار عبارت Hello, World در صفحه چاپ شود و هر بار، یک ثانیه مکث (sleep) صورت گیرد. به عبارت ساده‌تر، می‌خواهیم هر یک ثانیه یک‌بار، عبارت Hello, World در صفحه چاپ شود:

# ********************
# *** Solution (6) ***
# ********************
import time

for _ in range(5):
print("Hello, World!")
time.sleep(1)
# ********************

#SourceCode #SourceCode10028 #Basic
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
5👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که Webcam متصل به دستگاه را روشن کرده و هر ثانیه یک‌بار، یک عکس از تصویر موجود در Webcam گرفته و با توجه به تاریخ و زمان سیستم، و با فرمت png آن‌را ذخیره نماید؟

نکته: برای درک بهتر کد ذیل، ابتدا به سورس‌کدهای قبلی مراجعه نمایید:

#SourceCode10027
#SourceCode10028

# **************************************************
# pip install opencv-python
# https://github.com/opencv/opencv-python
# **************************************************
import time
import cv2 as cv
from datetime import datetime

capture = cv.VideoCapture(index=0)

# Check if the webcam is opened correctly
if not capture.isOpened():
print("[#] Can not open webcam!")
quit()

while True:
time.sleep(1)

# Frame means Webcam Image Capture!
result, frame = capture.read()

if result:
now = datetime.now()
formated_now = now.strftime("%Y_%m_%d_%H_%M_%S")

filename = f"Capture_{formated_now}.png"
cv.imwrite(filename=filename, img=frame)

# Wait 1ms for ESC to be pressed
key = cv.waitKey(delay=1)
if key == 27:
break

capture.release()
cv.destroyAllWindows()
# **************************************************

#SourceCode #SourceCode10029 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
5👍2
💚 سلام دوستان عزیزم 💚

🛑 برای یک برنامه بسیار ارزشمند و هیجان‌انگیز به زبان پایتون آماده شوید!

فلسفه برنامه شماره سی (۳۰):

در برنامه‌های قبل، چه موضوعاتی را یاد گرفتیم:

📌 آموزش یک - یاد گرفتیم که دستگاه Webcam متصل به رایانه خودمان را روشن نموده و تصاویر Webcam را در یک پنجره نمایش دهیم.

📌 آموزش دو - یاد گرفتیم که مثلا هر ثانیه یک‌بار، یک عملی را انجام دهیم.

📌 آموزش سه - یاد گرفتیم که دستگاه Webcam متصل به رایانه خودمان را روشن نموده و مثلا هر ثانیه یک‌بار، یک عکس از تصویر Webcam گرفته و بر اساس تاریخ و زمان سیستم، یک فایل با فرمت PNG ایجاد نماییم.

خب! علاوه بر آموزش شماره سه، به هر دلیلی، ما می‌توانیم این تصاویر را علاوه بر ذخیره‌سازی بر روی هارد، به یک Web Service نیز منتقل کرده و یا حتی Email نماییم!

و اما فلسفه پروژه چهارم:

تصور کنید که شما می‌خواهید در یک شرکت و یا منزل خود، برای مدتی رایانه‌تان را که روشن است، به امان خدا رها کرده و به کارهای دیگری بپردازید و برای این منظور میز کارتان را ترک می‌کنید و می‌خواهید ببینید (متوجه شوید) که در این مدت، چه کسانی وارد اتاق شما شده‌اند و در حوالی رایانه شما، در این مدت، چه اتفاقاتی رخ داده است! و یا تصور کنید که می‌خواهید از شرکت یا منزل خود خارج شده و یا حتی به مسافرتی بروید و می‌خواهید با استفاده از یک رایانه شخصی، لپ‌تاب، و یا حتی یک دستگاه کوچک Raspberry Pi که یک دوربین ساده به آن متصل کرده‌اید، از امنیت شرکت / منزل خود مطلع شوید! برای این منظور می‌توانید از برنامه شماره سه استفاده نمایید. ولی مشکل برنامه شماره سه چیست!؟ مشکل آن است که اگر مثلا تصاویر را ایمیل کرده و Notification مربوط به Mail Server خود را بر روی گوشی موبایل خود فعال کرده باشید، هر ثانیه یک‌بار، یک Notification برای شما ارسال می‌شود و شما با استرس باید آن را مشاهده کرده و خواهید دید که هیچ حرکتی و یا اتفاقی صورت نگرفته است! و این مساله شما را بعد از مدتی، عصبی کرده و قاعدتا، بعد از مدتی، Notification را خاموش می‌کنید و اکنون، اگر خدای ناکرده، واقعا شخصی به صورت غیرقانونی وارد شرکت / منزل شما شود، شما بعد از آن‌که دیگر کار از کار گذشته است، متوجه این موضوع می‌شوید! و در ضمن این‌که مثلا در ۲۴ ساعت گذشته، باید ۸۶۴۰۰ تصویر را بررسی کرده تا از تغییرات صورت گرفته مطلع شوید، که البته این کار بسیار خسته‌کننده و مایوس‌کننده‌ای است!

💚 اینجاست که پروژه شماره چهار، به کمک شما می‌آید! در این پروژه، مفهومی به نام Motion Detection، اضافه شده است، لذا در صورتی که سامانه احساس کند که کوچکترین حرکتی در مقابل دوربین صورت گرفته است، صرفا آن موقع است که تصاویر مربوطه را برای چند ثانیه ضبط می‌کند که البته می‌توانید با کمی تغییر در سورس‌کد، از سیستم بخواهید که به جای گرفتن عکس، چند ثانیه فیلم ضبط کرده و آن را ذخیره کند و یا حتی می‌توانید تصاویر / فیلم ضبط شده را Email نمایید، با توجه به این‌که اگر هیچ حرکتی صورت نگیرد، هیچ تصویر / فیلمی نیز ذخیره و ارسال نمی‌گردد، می‌توانید با خیال راحت، Notification گوشی موبایل خود را فعال کرده و در صورتی که صرفا حرکتی صورت گرفت، تصاویر / فیلم ارسال شده را مشاهده نمایید!

🛑 برای مشاهده و دریافت این سورس‌کد، می‌توانید به کانال تلگرامی ذیل مراجعه نموده و علاوه بر این سورس‌کد، از سورس‌کدهای جذاب و کاربردی دیگری که در کمال وسواس و دقت نوشته شده‌اند، استفاده کرده و لذت ببرید.

- سورس‌کدهایی در کانال که برای درک بهتر این سورس‌کد مفید می‌باشند:

https://t.me/DT_PYTHON_LEARNING/38
https://t.me/DT_PYTHON_LEARNING/39
https://t.me/DT_PYTHON_LEARNING/40

https://t.me/DT_PYTHON_LEARNING

.
12👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که Webcam متصل به دستگاه را روشن کرده و هر ثانیه یک‌بار، یک عکس از تصویر موجود در Webcam گرفته و با تصویر قبل آن‌را مقایسه کند و اگر تغییری در تصویر جدید بوجود آمده بود (Motion Detection)، تصویر مربوطه را با توجه به تاریخ و زمان سیستم، و با فرمت png ذخیره نماید؟

نکته: برای درک فلسفه این کد، به مطلب قبلی مراجعه نمایید!

# **************************************************
# pip install opencv-python
# https://github.com/opencv/opencv-python
# **************************************************
import time
import cv2 as cv
import numpy as np
from datetime import datetime

capture = cv.VideoCapture(index=0)

# Check if the webcam is opened correctly
if not capture.isOpened():
print("[#] Can not open webcam!")
quit()

last_mean = None

while True:
time.sleep(1)

# Frame means Webcam Image Capture!
result, frame = capture.read()

if result:
# Converting color image to gray_scale image
gray = cv.cvtColor(src=frame, code=cv.COLOR_BGR2GRAY)

# In first iteration we assign the
# value of 'old_gray' to our first frame
if last_mean is None:
last_mean = np.mean(gray)
continue

difference = np.abs(np.mean(gray) - last_mean)
# print(difference)

last_mean = np.mean(gray)

if difference > 0.3:
print("Motion Detected!")

now = datetime.now()
formated_now = now.strftime("%Y_%m_%d_%H_%M_%S")
filename = f"Capture_{formated_now}.png"
cv.imwrite(filename=filename, img=frame)

# Wait 1ms for ESC to be pressed
key = cv.waitKey(delay=1)
if key == 27:
break

capture.release()
cv.destroyAllWindows()
# **************************************************

#SourceCode #SourceCode10030 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
8👍4
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟

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

تذکر: در صورتی که شخصی از کد ملی جعلی یا Fake استفاده نماید، مجازات آن، بر طبق قانون، از ۶ ماه تا ۳ سال زندان بوده و یا به صورت جریمه نقدی، محکوم به پرداخت از ۳ الی ۱۸ میلیون ریال برای فرد خاطی در نظر گرفته می‌شود!

نکته‌ای، صرفا در جهت اطلاعات عمومی: سه رقم اول، مربوط به کد شهر می‌باشد!

- در صورتی که value، هیچ مقداری نداشته باشه (None)، کد ملی معتبر نمی‌باشد.
- تمام Space های مقدار value را از بین می‌بریم.
- در صورتی که طول رشته value، بزرگ‌تر از ۱۰ کاراکتر و یا کمتر از ۸ کاراکتر باشد، کد ملی معتبر نمی‌باشد.
- در صورتی که طول رشته value، برابر ۸ کاراکتر باشد، از سمت چپ، دو صفر به آن اضافه می‌کنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که طول رشته value، برابر ۹ کاراکتر باشد، از سمت چپ، یک صفر به آن اضافه می‌کنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که تمام کاراکترهای مقدار value، عددی نباشند، کد ملی معتبر نمی‌باشد.
- در صورتی که همه ارقام کد ملی، کاملا یکسان باشند، کد ملی معتبر نمی‌باشد. یعنی، مثلا اگر همه ارقام یک باشند، کد ملی معتبر نمی‌باشد!

- نکته: اولین رقم در کد ملی، اولین رقم در سمت چپ آن می‌باشد و طبعا آخرین (دهمین) رقم در کد ملی، اولین رقم در سمت راست آن می‌باشد.

- حال متغیری به نام sum، تعریف کرده و اولین رقم کد ملی را در عدد ۱۰ ضرب کرده و با متغیر sum، جمع می‌کنیم و مجددا دومین رقم کد ملی را در عدد ۹ ضرب کرده و با متغیر sum، جمع می‌کنیم و این عمل را تا نهمین! رقم کد ملی تکرار می‌کنیم.
- دهمین رقم کد ملی را در متغیری به نام control_digit ذخیره می‌کنیم.
- باقیمانده حاصل این جمع را بر عدد ۱۱ بدست آورده و آن‌را در متغیری به نام remainder ذخیره می‌کنیم.

تست نهایی:

- در صورتی که مقدار remainder، کمتر از عدد ۲ باشد (یعنی یا صفر یا یک باشد)، اگر مقدار remainder، برابر مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمی‌باشد!

- در صورتی که مقدار remainder، بزرگ‌تر یا مساوی عدد ۲ باشد، اگر تفاضل remainder از عدد ۱۱، مساوی مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمی‌باشد!

#ALGORITHM #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍2
Forwarded from 🛑 Iranian Experts 🛑 (𝓓𝓪𝓻𝓲𝓾𝓼𝓱 𝓣𝓪𝓼𝓭𝓲𝓰𝓱𝓲)
🎁 به بهانه روز جهانی برنامه‌نویسان...

💚 سلام دوستان عزیزم 💚

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

به بهانه این روز عزیز، می‌خواهم یک روش شیک، باکلاس و جذاب را برای انتشار سورس‌کدهای ارزشمند شما آموزش دهم. با استفاده از هر یک از سه روش ذیل، شما می‌توانید (بخشی/همه) سورس‌کدهای خود را، با توجه به زبان برنامه‌نویسی که آن‌را نوشته‌اید، مانند تصویر فوق، به یک فایل تصویر زیبا تبدیل نموده و آن‌را در شبکه‌های اجتماعی و غیره منتشر نمایید:

📌 روش اول: نصب یک Extension، بر روی Visual Studio Code

- Code Snapshot

📌 روش دوم: استفاده از دو سایت آنلاین ذیل:

- https://carbon.now.sh
- https://ray.so

ادمین کانال:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
14👍9
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟

تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!

تذکر: در این سورس‌کد، سعی بر این شده است که از دستورات ساده و پایه‌ای پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامه‌نویسان Junior می‌باشد! در برنامه بعدی، سعی می‌کنیم که سورس‌کد را کمی حرفه‌ای‌تر بنویسیم!

# ********************
def is_national_code_valid(value: str):
if value == None:
return False

value = value.replace(" ", "")

if len(value) < 8 or len(value) > 10:
return False

if len(value) == 9:
value = f"0{value}"

if len(value) == 8:
value = f"00{value}"

if value.isnumeric() == False:
return False

if (
value == "0000000000"
or value == "1111111111"
or value == "2222222222"
or value == "3333333333"
or value == "4444444444"
or value == "5555555555"
or value == "6666666666"
or value == "7777777777"
or value == "8888888888"
or value == "9999999999"
):
return False

sum = 0
sum += int(value[0]) * 10
sum += int(value[1]) * 9
sum += int(value[2]) * 8
sum += int(value[3]) * 7
sum += int(value[4]) * 6
sum += int(value[5]) * 5
sum += int(value[6]) * 4
sum += int(value[7]) * 3
sum += int(value[8]) * 2

control_digit = int(value[9])

remainder = sum % 11

if remainder < 2:
if remainder == control_digit:
return True
else:
if 11 - remainder == control_digit:
return True

return False
# ********************

#SourceCode #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍2
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟

تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!

تذکر: در این سورس‌کد، سعی بر این شده است که از دستورات حرفه‌ای‌تر پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامه‌نویسان Senior می‌باشد!

# ********************
def is_national_code_valid(value: str):
if value == None:
return False

value = value.replace(" ", "")

if len(value) < 8 or len(value) > 10:
return False

if len(value) == 9:
value = f"0{value}"

if len(value) == 8:
value = f"00{value}"

if value.isnumeric() == False:
return False

for index in range(10):
if value == str(index) * 10:
return False

sum = 0
for index in range(9):
sum += int(value[index]) * (10 - index)

control_digit = int(value[9])

remainder = sum % 11

if remainder < 2:
if remainder == control_digit:
return True
elif 11 - remainder == control_digit:
return True

return False
# ********************

#SourceCode #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
3👍2
Forwarded from 🛑 Iranian Experts 🛑 (𝓓𝓪𝓻𝓲𝓾𝓼𝓱 𝓣𝓪𝓼𝓭𝓲𝓰𝓱𝓲)
💚 معرفی سایت‌های فتح پرچم!
💚 Capture the Flag (CTF) Sites!

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

سایت‌های زیادی در این خصوص وجود دارند، که به مرور زمان، در این کانال می‌گردند:

- https://overthewire.org/wargames/natas
- https://www.root-me.org
- https://www.hackthebox.com

نکته: این لیست به مرور زمان تکمیل می‌گردد!

نکته: هر ساله، مسابقات زیادی در این خصوص، در سراسر دنیا، و با این عنوان برگزار می‌گردد و افراد می‌توانند به صورت فردی و یا گروهی در این مسابقات شرکت نمایند!

ادمین کانال:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
3👍3
📌 عنوان برنامه: برنامه‌ای بنویسید که یک Domain Name را از ورودی (کاربر) گرفته و اطلاعات Whois آن‌را نمایش دهد:

نکته: برای نمایش کاملی از اطلاعات، می‌توانید ابتدا از دامنه google.com استفاده نمایید!

# **********
# pip install python-whois
# https://github.com/richardpenman/whois
# **********
import whois

domain_name = input("What is your domain name: ")
domain_name = domain_name.replace("www.", "")
domain_name = domain_name.replace("http://", "")
domain_name = domain_name.replace("https://", "")
domain_name = domain_name.lower()

try:
whois_information = whois.whois(domain_name)

if not whois_information.domain_name:
print(f"Domain '{domain_name}' is not registered!")
else:
print(f"Domain '{domain_name}' is registered.")

print(f"Email(s): {whois_information.emails}")
print(f"Registrar: {whois_information.registrar}")
print(f"WHOIS Server: {whois_information.whois_server}")
print(f"Domain Name(s): {whois_information.domain_name}")
print(f"Name Server(s): {whois_information.name_servers}")
print()
print(f"Updated Date: {whois_information.updated_date}")
print(f"Creation Date: {whois_information.creation_date}")
print(f"Expiration Date: {whois_information.expiration_date}")
print()
print(whois_information)
except:
print(f"Domain '{domain_name}' is not registered!")
# **********

#SourceCode #SourceCode10032 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
2👍2
[No_Starch_Press]_Gray_Hat_Python.pdf
3 MB
☘️ معرفی کتاب‌های الکترونیکی ☘️

Title: Gray Hat Python
Author: Justin Seitz

Published Date: 2009
Publisher: No Starch Press

Pages: 220
Edition: First
Language: English

Description: Python Programming for Hacker and Reverse Engineers

#Book #EthicalHacking

🆔 @Dariush_Tasdighi
🆔
@IranianExperts
🆔
@DT_PYTHON_LEARNING
.
3👍3