دوره ویژه مقدماتی پایتون – Telegram
دوره ویژه مقدماتی پایتون
436 subscribers
248 photos
4 videos
250 links
Download Telegram
✍️دنباله های خاص - (قسمت دوم)

انواع دیگری از دنباله های خاص، d\ و s\ و w\ هستند که به ترتیب معادل digit ها، whitespaceها و word characterها هستند. در مدل ASCII برابر (0-9)، (t\n\r\f\v) و (a-zA-Z0-9) هستند.
مدل upper-case برای این دنباله های خاص برابر D\ و S\ و W\ هستند. برای مثال، D\ با هر چیزی که digit نباشد تطابق دارد.

مثال :
import re
pattern = r"(\D +\d)"
match = re.match(pattern, "Hi 999!")
if match:
print("match 1")
match = re.match(pattern, "1, 23, 456!")
if match:
print("match 2")
match = re.match(pattern, " ! $?")
if match:
print("match 3")

خروجی :
»>
match 1
»>

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️تست 182 : کدام یک از الگوهای زیر با "!456!123" تطابق ندارد؟

1️⃣: (\D + \s?)+
️||||||||||||||||||||||||||||||||||||||||80%(4)
2️⃣: (\d*\W)+
️||||||||||20%(1)
3️⃣: [1-6!]
️0%(0)

👥: 5شرکت در نظر سنجی
✍️دنباله های خاص - (قسمت سوم)

دنباله های خاص دیگری هم که وجود دارند، A\ و Z\ و b\ هستند. دنباله های A\ و Z\ به ترتیب منطبق با ابتدا و انتهای رشته هستند. دنباله ی b\ با رشته های خالی در بین کاراکتر های W\ و w\ ، یا کاراکتر w\ و ابتدا یا انتهای رشته منطبق هستند. در واقع یک محدوده ی بین حروف را نشان می دهد.
دنباله ی B\ بت هر رشته ی خالی ایدر هر جایی منطبق می شود.

مثال :
import re
pattern = r"\b(cat)\b"

match = re.search(pattern, "The cat sat!")
if match :
print("match 1")

match = re.search(pattern, "We s>cat<tered?")
if match :
print("match 2")

match = r.search(pattern, "We scattered.")
if match :
print("match 3")

خروجی :
»>
match 1
match 2
»>

📌عبارت "\b(cat)\b\" در واقع با کلمه ی "cat" تطابق دارد که با کلمات دیگر می تواند احاطه شده باشد.

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️تست 183 : کدام یک از موارد زیر با '!SPAM' تطابق دارد؟

1️⃣: \AS...\b.\Z
️0%(0)
2️⃣: \ASPAM\Z
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
3️⃣: SP\AM!\Z
️0%(0)

👥: 7شرکت در نظر سنجی
✍️خارج کردن ایمیل

برای نشان دادن یک کاربرد از regular expression، بیاید یک برنامه بنویسیم که آدرس ایمیل را از درون رشته ها تشخیص دهد. در نظر بگیرید که یک تکست داریم که شامل یک آدرس ایمیل است:
str = "please contact info@sololearn.com for assistance"

هدف ما این است که ایمیل info@sololearn.com را پیدا کنیم.
یک ایمیل پایه می تواند شامل یک کلمه، نقطه و \ باشد که با یک @ و نام دامنه می آید.
در زیر کد انتباط یک ایمیل پایه را اورده ایم:
pattern = r"([\w\.-]+)@([\w\.-]+(\.[\w\.]+)"

که عبارت +[-.\w\] با یک یا چند کلمه، نقطه یا \ تطابق پیدا می کند.

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️تست 184 : کدام یک از موارد زیر باید با regular expression انجام شود، و با متد های رشته انجام نشود؟

1️⃣: جدا کردن یک رشته
️0%(0)
2️⃣: بررسی کنید که آیا یک کاراکتر مشخص رشته هست یا نه
️0%(0)
3️⃣: بررسی کنید که آیا یک رشته شامل زمان هست یا نه
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(6)

👥: 6شرکت در نظر سنجی
✍️خارج کردن ایمیل - (قسمت دوم)

همه ی کد ها را در کنار هم بگزارید :
import re

pattern = r"([\w\.-]+)@([\w\.-]+(\.[\w\.]+)"
str = "please contact info@sololearn.com for assistance"

match = re.search(pattern.str)
if match :
print(match.group())

خروجی :
»>
info@sololearn.com
»>

📌در حالتی که یک رشته شامل چندین ایمیل باشد، می توانیم از متد Re.findall به جای متد re.search استفاده کنیم تا همه ی آدرس های ایمیل را به دست آوریم.

⚠️البته برای به دست آوردن یک آدرس ایمیل واقعی به کد پیچیده تری نیاز داریم.

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️تست 185 : در مثال ما، چرا نقطه (.) با یک \ همراه شده است؟

1️⃣: اختیاری گزاشته شده
️0%(0)
2️⃣: تا با آن مثل یک کاراکتر برخورد شود
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(6)
3️⃣: چون در داخل براکت است
️0%(0)

👥: 6شرکت در نظر سنجی
⛔️ بخش regular expressionها به پایان رسید، می توانید برای ارزیابی خود، به سوالات زیر پاسخ دهید.

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️ کدام یک از metacharacter های زیر با تکرار ذکر نمی شوند؟

1️⃣: +
️0%(0)
2️⃣: \
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(6)
3️⃣: *
️0%(0)

👥: 6شرکت در نظر سنجی
⁉️ چند گروه در کد زیر وجود دارد؟
(ab)(c(d(e)f))(g)

1️⃣: 4
️0%(0)
2️⃣: 5
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(5)
3️⃣: 6
️0%(0)
4️⃣: 1
️0%(0)

👥: 5شرکت در نظر سنجی
⁉️کدام یک از عبارت های زیر با آدرس ایمیل زیر تطابق دارد؟
"email@domain.com"

1️⃣: email\@(domain\w)+
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(5)
2️⃣: \w+@domain.com
️0%(0)
3️⃣: [0-9]@domain\.com
️0%(0)

👥: 5شرکت در نظر سنجی
⁉️ کدام یک از رشته های زیر با عبارت زیر تطابق دارد؟
"[01]+0$"

1️⃣: 0101
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(5)
2️⃣: 011101
️0%(0)
3️⃣: 10101111001010
️0%(0)

👥: 5شرکت در نظر سنجی
⁉️ کدام یک از گزینه های زیر با عبارت زیر تطابق دارد؟
"(4{5,6})\1"

1️⃣: 10تا یا 12تا چهار
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(5)
2️⃣: 456
️0%(0)
3️⃣: 5تا یا 6تا چهار
️0%(0)

👥: 5شرکت در نظر سنجی
✍️ورودی های توابع

پایتون اجازه می دهد توابعی داشته باشیم که تعداد ورودی های متفاوتی را بگیرند. از متغیر args* برای پارامتر تابع استفاده می کنیم تا بتوانیم ورودی با تعداد متغیر را به تابع بفرستیم. ورودی ها به عنوان لیستی از تاپل ها در کد تابع استفاده می شود.

مثال :
def function(named_arg, *args):
print(named_arg)
print(args)

function(1,2,3,4,5)

خروجی :
»>
1
(2,3,4,5)
»>

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️ تست 186 : عبارت *args چگونه به داخل یک تابع دسترسی پیدا می کنند؟

1️⃣: به عنوان تاپل
️0%(0)
2️⃣: به عنوان لیست args*
️||||||13%(1)
3️⃣: به عنوان تاپل args*
️||||||||||||||||||||||||||||||||||||||||||||88%(7)

👥: 8شرکت در نظر سنجی
✍️ مقادیر دیفالت

پارامتر هایی که در ورودی یک تابع گزاشته شده اند می توانند مقادیر پیش فرض داشته باشند. این موارد باید بعد از پارامتر هایی که هیچ پیش فرضی ندارند بیایند.

مثال :
def function(x, y, food = "spam") :
print(food)

function(1,2)
function(3,4,"egg")

خروجی :
»>
spam
egg
»>

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

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️ تست 187 : در کد زیر چه مشکلی وجود دارد؟
def function(x, y = 7, z,*argums):

1️⃣: عبارت argums* در آخر آمده است.
️0%(0)
2️⃣: یک ورودی که دارای مقدار پیش فرض نیست بعد از ورودی ای که دارای مقدار پیش فرض است آمده است.
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: عبارت argums* به جای عبارت args* استفاده شده است.
️0%(0)

👥: 8شرکت در نظر سنجی
✍️ ورودی های توابع

عبارت kwargs** که مخفف keyword arguments است این قابلیت را ایجاد می کند تا مقادیری را که از قبل تعریف نکرده بودید بتوانید کنترل کنید.

مثال :
def my_func(x, y-=7, *args, kwargs):
print(kwargs)

my_func(2, 3, 4, 5, 6, a=7, b=8)

خروجی :
»>
{'a' : 7, 'b' : 8}
»>

⚠️ در مثال بالا a و b نام های ورودی هایی هستند که به تابع پاس داده ایم.

📌 ورودی های که kwargs
شامل args* نمی شوند.

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge
⁉️ تست 188 : عبارت kwargsاز چه نوعی هستند؟

1️⃣: set
️0%(0)
2️⃣: list
️0%(0)
3️⃣: dictionary
️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)

👥: 7شرکت در نظر سنجی
✍️tuple unpacking

این روش به شما اجازه می دهد تا به صورت تکرار شونده مقادیر را اختصاص دهید.

مثال :
numbers = (1,2,3)
a, b, c = numbers
print(a)
print(b)
print(c)

خروجی :
»>
1
2
3
»>

📌این روش همچنین می تواند برای روش Swap هم استفاده شود.

بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:

🗂 مرکز آموزش پایتون

🆔 : @pythonchallenge