✍️ادامه پست قبل :
ما یک کلاس Goblin ایجاد کردیم که از کلاس GameObjects به ارث برده می شود. ما همچنین یک تابع جدید را بررسی کردیم که توضیحات اشیا را باز می گرداند. اکنون ما می توانیم یک لغت جدید "Examine" را به فرهنگ لغت مان اضافه کنیم و آن را امتحان کنیم!
verb_dict = {
"say": say,
"examine": examine,
}
این کد را با مثال قبلی خود ترکیب کنید و برنامه را اجرا کنید.
>>>
: say Hello!
You said "Hello!"
: examine goblin
goblin
A foul creature
: examine elf
There is no elf here.
:
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
ما یک کلاس Goblin ایجاد کردیم که از کلاس GameObjects به ارث برده می شود. ما همچنین یک تابع جدید را بررسی کردیم که توضیحات اشیا را باز می گرداند. اکنون ما می توانیم یک لغت جدید "Examine" را به فرهنگ لغت مان اضافه کنیم و آن را امتحان کنیم!
verb_dict = {
"say": say,
"examine": examine,
}
این کد را با مثال قبلی خود ترکیب کنید و برنامه را اجرا کنید.
>>>
: say Hello!
You said "Hello!"
: examine goblin
goblin
A foul creature
: examine elf
There is no elf here.
:
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١٧١:چرا Goblin از GameObject به ارث برده است؟
1️⃣: Goblin
یک ویژگی GameObject است
▫ ️||||||13%(1)
2️⃣: Goblin
نوعی GameObject است
▫ ️0%(0)
3️⃣: Goblin
نمونه ای از GameObject است
▫ ️||||||||||||||||||||||||||||||||||||||||||||88%(7)
👥: 8شرکت در نظر سنجی
1️⃣: Goblin
یک ویژگی GameObject است
▫ ️||||||13%(1)
2️⃣: Goblin
نوعی GameObject است
▫ ️0%(0)
3️⃣: Goblin
نمونه ای از GameObject است
▫ ️||||||||||||||||||||||||||||||||||||||||||||88%(7)
👥: 8شرکت در نظر سنجی
✍️یک بازی ساده - (قسمت سوم)
این کد جزئیات بیشتری را به کلاس Goblin اضافه می کند و به شما اجازه می دهد با Goblins مبارزه کنید.
class Goblin(GameObject):
def __init(self, name):
self.class_name = "goblin"
self.health = 3
self._desc = " A foul creature"
super().__init(name)
@property
def desc(self):
if self.health >=3:
return self._desc
elif self.health == 2:
health_line = "It has a wound on its knee."
elif self.health == 1:
health_line = "Its left arm has been cut off!"
elif self.health <= 0:
health_line = "It is dead."
return self._desc + "\n" + health_line
@desc.setter
def desc(self, value):
self._desc = value
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
این کد جزئیات بیشتری را به کلاس Goblin اضافه می کند و به شما اجازه می دهد با Goblins مبارزه کنید.
class Goblin(GameObject):
def __init(self, name):
self.class_name = "goblin"
self.health = 3
self._desc = " A foul creature"
super().__init(name)
@property
def desc(self):
if self.health >=3:
return self._desc
elif self.health == 2:
health_line = "It has a wound on its knee."
elif self.health == 1:
health_line = "Its left arm has been cut off!"
elif self.health <= 0:
health_line = "It is dead."
return self._desc + "\n" + health_line
@desc.setter
def desc(self, value):
self._desc = value
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه پست قبل :
def hit(noun):
if noun in GameObject.objects:
thing = GameObject.objects[noun]
if type(thing) == Goblin:
thing.health = thing.health - 1
if thing.health <= 0:
msg = "You killed the goblin!"
else:
msg = "You hit the {}".format(thing.class_name)
else:
msg ="There is no {} here.".format(noun)
return msg
Result:
>>>
: hit goblin
You hit the goblin
: examine goblin
goblin
A foul creature
It has a wound on its knee.
: hit goblin
You hit the goblin
: hit goblin
You killed the goblin!
: examine goblin
A goblin
goblin
A foul creature
It is dead.
:
این فقط یک نمونه ساده بود. شما می توانید کلاس های مختلف دیگری هم ایجاد کنید.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
def hit(noun):
if noun in GameObject.objects:
thing = GameObject.objects[noun]
if type(thing) == Goblin:
thing.health = thing.health - 1
if thing.health <= 0:
msg = "You killed the goblin!"
else:
msg = "You hit the {}".format(thing.class_name)
else:
msg ="There is no {} here.".format(noun)
return msg
Result:
>>>
: hit goblin
You hit the goblin
: examine goblin
goblin
A foul creature
It has a wound on its knee.
: hit goblin
You hit the goblin
: hit goblin
You killed the goblin!
: examine goblin
A goblin
goblin
A foul creature
It is dead.
:
این فقط یک نمونه ساده بود. شما می توانید کلاس های مختلف دیگری هم ایجاد کنید.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⛔️ بخش برنامه نویسی شی گرا به پایان رسید، می توانید برای ارزیابی خود، به سوالات زیر پاسخ دهید.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
یک property چگونه ساخته می شود؟
1️⃣: با استفاده از property decorator
▫ ️||||||||||||||||||||||||||||||||||||||||||||88%(7)
2️⃣: با استفاده از classmethod decorator
▫ ️0%(0)
3️⃣: با ساختن یک زیر کلاس از یک کلاس
▫ ️||||||13%(1)
👥: 8شرکت در نظر سنجی
1️⃣: با استفاده از property decorator
▫ ️||||||||||||||||||||||||||||||||||||||||||||88%(7)
2️⃣: با استفاده از classmethod decorator
▫ ️0%(0)
3️⃣: با ساختن یک زیر کلاس از یک کلاس
▫ ️||||||13%(1)
👥: 8شرکت در نظر سنجی
تفاوت بین توابع استاتیک و توابع کلاس چیست؟
1️⃣: توابع کلاس سریعتر هستند.
▫ ️0%(0)
2️⃣: توابع کلاس ها به کلاس ها فراخوانده می شوند، توابع استاتیک فراخوانده نمی شوند.
▫ ️|||||||14%(1)
3️⃣: توابع کلاس به ارث برده می شوند، توابع استاتیک به ارث برده نمی شوند.
▫ ️|||||||||||||||||||||||||||||||||||||||||||86%(6)
👥: 7شرکت در نظر سنجی
1️⃣: توابع کلاس سریعتر هستند.
▫ ️0%(0)
2️⃣: توابع کلاس ها به کلاس ها فراخوانده می شوند، توابع استاتیک فراخوانده نمی شوند.
▫ ️|||||||14%(1)
3️⃣: توابع کلاس به ارث برده می شوند، توابع استاتیک به ارث برده نمی شوند.
▫ ️|||||||||||||||||||||||||||||||||||||||||||86%(6)
👥: 7شرکت در نظر سنجی
پارامتر های معمول برای فراخوانی نمونه و فراخوانی کلاس چیست؟
1️⃣: self - class
▫ ️||||||||||||||||33%(3)
2️⃣: self - cls
▫ ️|||||||||||||||||||||||||||||||||67%(6)
3️⃣: slf - cls
▫ ️0%(0)
👥: 9شرکت در نظر سنجی
1️⃣: self - class
▫ ️||||||||||||||||33%(3)
2️⃣: self - cls
▫ ️|||||||||||||||||||||||||||||||||67%(6)
3️⃣: slf - cls
▫ ️0%(0)
👥: 9شرکت در نظر سنجی
چه متدی درست قبل از اینکه یک شی نمونه سازی شود فراخوانده میشود؟
1️⃣: __create__
▫ ️|||||||||18%(2)
2️⃣: __init__
▫ ️|||||||||||||||||||||||||||||||||||||||||82%(9)
3️⃣: __del__
▫ ️0%(0)
👥: 11شرکت در نظر سنجی
1️⃣: __create__
▫ ️|||||||||18%(2)
2️⃣: __init__
▫ ️|||||||||||||||||||||||||||||||||||||||||82%(9)
3️⃣: __del__
▫ ️0%(0)
👥: 11شرکت در نظر سنجی
کدام یک از پروسس های زیر به صورت اتوماتیک انجام می شوند تا اشیا غیر ضروری پاک شوند تا حافظه آزاد شود؟
1️⃣: garbage collection
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
2️⃣: rubbish deletion
▫ ️0%(0)
3️⃣: bit-trash exfoliation
▫ ️0%(0)
👥: 7شرکت در نظر سنجی
1️⃣: garbage collection
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
2️⃣: rubbish deletion
▫ ️0%(0)
3️⃣: bit-trash exfoliation
▫ ️0%(0)
👥: 7شرکت در نظر سنجی
✍️regular expression
یکی از ابزار های قدرتمند برای دستکاری رشته ها regular expression ها هستند که در بسیاری از کتابخانه های زبان های برنامه نویسی پیشرفته حضور دارند.
که برای 2 هدف بسیار پر کاربرد هستند:
1) مشخص کند که آیا یک رشته با یک الگوی داده شده تطابق دارد یا نه ( مثلا رشته ی داده شده یک آدرس ایمیل هست یا نه!)
2) جایگزینی رشته ها با هم ( مثلا تمام کلمات آمریکایی را تبدیل به کلمات بریتیش بکند)
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
یکی از ابزار های قدرتمند برای دستکاری رشته ها regular expression ها هستند که در بسیاری از کتابخانه های زبان های برنامه نویسی پیشرفته حضور دارند.
که برای 2 هدف بسیار پر کاربرد هستند:
1) مشخص کند که آیا یک رشته با یک الگوی داده شده تطابق دارد یا نه ( مثلا رشته ی داده شده یک آدرس ایمیل هست یا نه!)
2) جایگزینی رشته ها با هم ( مثلا تمام کلمات آمریکایی را تبدیل به کلمات بریتیش بکند)
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️تست 172 : انجام کدام یک از موارد زیر با regular expression ها امکان پذیر نیست؟
1️⃣: بررسی کنید که آیا یک آدرس ایمیل واقعی هست یا نه
▫ ️|||||||||||||||||||||||||||||||||||||||||||||91%(10)
2️⃣: بررسی قسمت URL یک آدرس ایمیل
▫ ️0%(0)
3️⃣: بررسی اینکه آیا یک آدرس ایمیل در فرمت درستی هست یا نه
▫ ️||||9%(1)
👥: 11شرکت در نظر سنجی
1️⃣: بررسی کنید که آیا یک آدرس ایمیل واقعی هست یا نه
▫ ️|||||||||||||||||||||||||||||||||||||||||||||91%(10)
2️⃣: بررسی قسمت URL یک آدرس ایمیل
▫ ️0%(0)
3️⃣: بررسی اینکه آیا یک آدرس ایمیل در فرمت درستی هست یا نه
▫ ️||||9%(1)
👥: 11شرکت در نظر سنجی
✍️regular expression
برای دستیابی به این روش لازم است که از ماژول re موجود در کتابخانه استاندارد پایتون استفاده کنید. بعد از اینکه شما regular expression را تعریف کردید، می توانید از تابع re.match برای بررسی اینکه رشته ی وارد شده با ابتدای الگوی مورد بررسی مطابقت دارد یا نه، استفاده کنید. اگر مطابقت داشت، یک شی که نشان دهنده ی تطابق است را بازمیگرداند، در غیر این صورت none را باز می گرداند.
برای اینکه از در زمان کار با regular expression ها دچار مشکل نشویم از رشته ی r"expression" استفاده می کنیم.
مثال :
import re
pattern = r"spam"
if re.match(pattern,"spamspamspam"):
print("match")
else :
print("no match")
خروجی :
>>>
match
>>>
📌کد بالا بررسی می کند که آیا رشته ی ورودی با الگوی "spam" مطابقت دارد یا نه. اگر مطابقت داشته باشد match را چاپ می کند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
برای دستیابی به این روش لازم است که از ماژول re موجود در کتابخانه استاندارد پایتون استفاده کنید. بعد از اینکه شما regular expression را تعریف کردید، می توانید از تابع re.match برای بررسی اینکه رشته ی وارد شده با ابتدای الگوی مورد بررسی مطابقت دارد یا نه، استفاده کنید. اگر مطابقت داشت، یک شی که نشان دهنده ی تطابق است را بازمیگرداند، در غیر این صورت none را باز می گرداند.
برای اینکه از در زمان کار با regular expression ها دچار مشکل نشویم از رشته ی r"expression" استفاده می کنیم.
مثال :
import re
pattern = r"spam"
if re.match(pattern,"spamspamspam"):
print("match")
else :
print("no match")
خروجی :
>>>
match
>>>
📌کد بالا بررسی می کند که آیا رشته ی ورودی با الگوی "spam" مطابقت دارد یا نه. اگر مطابقت داشته باشد match را چاپ می کند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️تست 172 : کدام یک از رشته های زیر با الگوی "spamspamspam" مطابقت ندارد؟
1️⃣: sp
▫ ️|||||10%(1)
2️⃣: spamspam
▫ ️|||||10%(1)
3️⃣: pamspam
▫ ️||||||||||||||||||||||||||||||||||||||||80%(8)
👥: 10شرکت در نظر سنجی
1️⃣: sp
▫ ️|||||10%(1)
2️⃣: spamspam
▫ ️|||||10%(1)
3️⃣: pamspam
▫ ️||||||||||||||||||||||||||||||||||||||||80%(8)
👥: 10شرکت در نظر سنجی
✍️regular expression
توابع دیگر که برای بررسی تطابق با الگو ها استفاده می شوند re.search و re.findall هستند.
تابع re.search همه ی رشته را بررسی می کند و اگر قسمتی از رشته مطابقت داشت آن را پیدا می کند.
تابع re.findall یک لیست بر می گرداند که همه ی زیر رشته هایی را نشان می دهد که با الگوی ما تطابق دارند.
مثال:
import re
pattern = r"Spam"
if re.match(pattern, "eggspamsausagespam"):
print("match")
else :
print("no match")
if re.search(pattern, "eggspamsausagespam"):
print("match")
else :
print("no match")
print(re.findall(pattern, "eggspamsausagespam"))
خروجی :
»>
no match
match
{'spam', 'spam']
»>
📌در مثال بالا، تابع match زمانی که ابتدای رشته را بررسی می کند، با الگوی ما تطابق ندارد. اما تابع Search یک تطابق در رشته پیدا می کند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع دیگر که برای بررسی تطابق با الگو ها استفاده می شوند re.search و re.findall هستند.
تابع re.search همه ی رشته را بررسی می کند و اگر قسمتی از رشته مطابقت داشت آن را پیدا می کند.
تابع re.findall یک لیست بر می گرداند که همه ی زیر رشته هایی را نشان می دهد که با الگوی ما تطابق دارند.
مثال:
import re
pattern = r"Spam"
if re.match(pattern, "eggspamsausagespam"):
print("match")
else :
print("no match")
if re.search(pattern, "eggspamsausagespam"):
print("match")
else :
print("no match")
print(re.findall(pattern, "eggspamsausagespam"))
خروجی :
»>
no match
match
{'spam', 'spam']
»>
📌در مثال بالا، تابع match زمانی که ابتدای رشته را بررسی می کند، با الگوی ما تطابق ندارد. اما تابع Search یک تطابق در رشته پیدا می کند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️تست 173 : کدام یک از موارد زیر جزو توابع ماژول re نیستند؟
1️⃣: Search
▫ ️0%(0)
2️⃣: findall
▫ ️0%(0)
3️⃣: findlist
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
👥: 8شرکت در نظر سنجی
1️⃣: Search
▫ ️0%(0)
2️⃣: findall
▫ ️0%(0)
3️⃣: findlist
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
👥: 8شرکت در نظر سنجی
✍️regular expression
متد group رشته ی تطابق یافته را باز می گرداند، متد های start و end که مکان ابتدا و انتهای اولین رشته ی تطابق یافته را باز می گرداند، و متد span مکان ابتدا و انتهای اولین مورد تطابق یافته را در فرمت یک تاپل بر می گرداند.
مثال :
import re
pattern = r"pam"
match = re.search(pattern, "eggspamsausage")
if match:
print(match.group())
print(match.start())
print(match.end())
print(match.span())
خروجی :
»>
pam
4
7
(4,7)
»>
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
متد group رشته ی تطابق یافته را باز می گرداند، متد های start و end که مکان ابتدا و انتهای اولین رشته ی تطابق یافته را باز می گرداند، و متد span مکان ابتدا و انتهای اولین مورد تطابق یافته را در فرمت یک تاپل بر می گرداند.
مثال :
import re
pattern = r"pam"
match = re.search(pattern, "eggspamsausage")
if match:
print(match.group())
print(match.start())
print(match.end())
print(match.span())
خروجی :
»>
pam
4
7
(4,7)
»>
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️جست جو و جایگزینی
یکی از مهمترین متد های re تابع sub است که با فرمت زیر استفاده می شود:
re.sub(pattern, repl, string, max = 0)
این متد همه ی pattern هایی را که با رشته ی rpl تطابق دارد را با مقدار rpl جایگزین می کند و رشته ی تغییر یافته را باز می گرداند.
مثال :
import re
str = "my name is David. Hi David."
pattern = r"David"
newstr = re.sub(pattern, "Amy", str)
print(newstr)
خروجی :
»>
my name is Amy. Hi Amy.
»>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
یکی از مهمترین متد های re تابع sub است که با فرمت زیر استفاده می شود:
re.sub(pattern, repl, string, max = 0)
این متد همه ی pattern هایی را که با رشته ی rpl تطابق دارد را با مقدار rpl جایگزین می کند و رشته ی تغییر یافته را باز می گرداند.
مثال :
import re
str = "my name is David. Hi David."
pattern = r"David"
newstr = re.sub(pattern, "Amy", str)
print(newstr)
خروجی :
»>
my name is Amy. Hi Amy.
»>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️تست 174 : جاهای خالی زیر را طوری پر کنید که همه ی 9 ها را با 0 جایگزاری کند.
import ...
num = "07987549836"
pattern = r"9"
num = re. ... (pattern, " ...", ...._
print(num)
1️⃣: re - sub - 0 - str
▫ ️|||||||||||||||||||38%(3)
2️⃣: import - sub - 9 - num
▫ ️0%(0)
3️⃣: re - sub - 0 - num
▫ ️|||||||||||||||||||||||||||||||63%(5)
👥: 8شرکت در نظر سنجی
import ...
num = "07987549836"
pattern = r"9"
num = re. ... (pattern, " ...", ...._
print(num)
1️⃣: re - sub - 0 - str
▫ ️|||||||||||||||||||38%(3)
2️⃣: import - sub - 9 - num
▫ ️0%(0)
3️⃣: re - sub - 0 - num
▫ ️|||||||||||||||||||||||||||||||63%(5)
👥: 8شرکت در نظر سنجی
✍️metacharacters
برای قدرتمند تر کردن Regular expression ها از metachararcter ها استفاده می کنیم.
اولین metacharacterی که به بررسی آن می پردازیم، . (dot) است. در رشته ها به جای dot هر چیزی میتواند قرار بگیرد.
مثال :
import re
pattern = r"gr.y"
if re.match(pattern, "grey"):
print ("match 1")
if re.match(pattern, "gray"):
print("match 2")
if re.match(pattern, "blue"):
print("match 3")
خروجی :
»>
match 1
match 2
»>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
برای قدرتمند تر کردن Regular expression ها از metachararcter ها استفاده می کنیم.
اولین metacharacterی که به بررسی آن می پردازیم، . (dot) است. در رشته ها به جای dot هر چیزی میتواند قرار بگیرد.
مثال :
import re
pattern = r"gr.y"
if re.match(pattern, "grey"):
print ("match 1")
if re.match(pattern, "gray"):
print("match 2")
if re.match(pattern, "blue"):
print("match 3")
خروجی :
»>
match 1
match 2
»>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️تست 175 : چه چیزی با عبارت "..." تطابق دارد؟
1️⃣: هر رشته ای که دارای 3 نقطه باشد
▫ ️|||||10%(1)
2️⃣: هر رشته ای با 3 حرف
▫ ️|||||||||||||||||||||||||||||||||||||||||||||90%(9)
👥: 10شرکت در نظر سنجی
1️⃣: هر رشته ای که دارای 3 نقطه باشد
▫ ️|||||10%(1)
2️⃣: هر رشته ای با 3 حرف
▫ ️|||||||||||||||||||||||||||||||||||||||||||||90%(9)
👥: 10شرکت در نظر سنجی