27 KiB
<div align="center"> <h1> ۳۰ روز با پایتون: روز چهارم - رشتهها</h1> <a class="header-badge" target="_blank" href="https://www.linkedin.com/in/asabeneh/"> <img src="https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social"> </a> <a class="header-badge" target="_blank" href="https://twitter.com/Asabeneh"> <img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/asabeneh?style=social"> </a>
<sub>نویسنده: <a href="https://www.linkedin.com/in/asabeneh/" target="_blank">Asabeneh Yetayeh</a><br> <small> ویرایش دوم: جولای، ۲۰۲۱</small> </sub>
</div>
- روز چهارم
روز چهارم
رشتهها
متن یک نوع داده رشتهای است. هر نوع دادهای که به صورت متن نوشته شود، یک رشته است. هر دادهای که داخل تک کوتیشن، دابل کوتیشن یا سه کوتیشن قرار گیرد، رشته محسوب میشود. متدهای رشته و توابع داخلی مختلفی برای کار با نوع داده رشته وجود دارد. برای بررسی طول یک رشته از متد len() استفاده کنید.
ایجاد یک رشته
letter = 'P' # یک رشته میتواند یک کاراکتر یا مجموعهای از متون باشد
print(letter) # P
print(len(letter)) # 1
greeting = 'Hello, World!' # رشته میتواند با استفاده از تک کوتیشن یا دابل کوتیشن ساخته شود، "Hello, World!"
print(greeting) # Hello, World!
print(len(greeting)) # 13
sentence = "I hope you are enjoying 30 days of Python Challenge"
print(sentence)
رشته چند خطی با استفاده از سه تک کوتیشن (''') یا سه دابل کوتیشن (""") ایجاد میشود. مثال زیر را ببینید.
multiline_string = '''I am a teacher and enjoy teaching.
I didn't find anything as rewarding as empowering people.
That is why I created 30 days of python.'''
print(multiline_string)
# روش دیگری برای انجام همین کار
multiline_string = """I am a teacher and enjoy teaching.
I didn't find anything as rewarding as empowering people.
That is why I created 30 days of python."""
print(multiline_string)
الحاق رشتهها
ما میتوانیم رشتهها را به هم متصل کنیم. ادغام یا اتصال رشتهها را الحاق مینامند. مثال زیر را ببینید:
first_name = 'Asabeneh'
last_name = 'Yetayeh'
space = ' '
full_name = first_name + space + last_name
print(full_name) # Asabeneh Yetayeh
# بررسی طول یک رشته با استفاده از تابع داخلی len()
print(len(first_name)) # 8
print(len(last_name)) # 7
print(len(first_name) > len(last_name)) # True
print(len(full_name)) # 16
سکانسهای گریز در رشتهها
در پایتون و دیگر زبانهای برنامهنویسی، \ و به دنبال آن یک کاراکتر، یک سکانس گریز است. بیایید رایجترین کاراکترهای گریز را ببینیم:
\n: خط جدید\t: تب به معنای (۸ فاصله)\\: بکاسلش\': تک کوتیشن (')\": دابل کوتیشن (")
حالا بیایید کاربرد سکانسهای گریز بالا را با مثال ببینیم.
print('I hope everyone is enjoying the Python Challenge.\nAre you ?') # شکست خط
print('Days\tTopics\tExercises') # اضافه کردن فاصله تب یا ۴ فاصله
print('Day 1\t5\t5')
print('Day 2\t6\t20')
print('Day 3\t5\t23')
print('Day 4\t1\t35')
print('This is a backslash symbol (\\)') # برای نوشتن یک بکاسلش
print('In every programming language it starts with \"Hello, World!\"') # برای نوشتن دابل کوتیشن داخل تک کوتیشن
# خروجی
I hope every one is enjoying the Python Challenge.
Are you ?
Days Topics Exercises
Day 1 5 5
Day 2 6 20
Day 3 5 23
Day 4 1 35
This is a backslash symbol (\)
In every programming language it starts with "Hello, World!"
قالببندی رشته
قالببندی رشته به سبک قدیم (عملگر %)
در پایتون راههای زیادی برای قالببندی رشتهها وجود دارد. در این بخش، برخی از آنها را پوشش خواهیم داد.
عملگر "%" برای قالببندی مجموعهای از متغیرهای محصور در یک "تاپل" (یک لیست با اندازه ثابت)، به همراه یک رشته قالب، که حاوی متن عادی به همراه "مشخصکنندههای آرگومان"، نمادهای ویژهای مانند "%s"، "%d"، "%f"، %.<small>تعداد ارقام</small>f" است، استفاده میشود.
%s- رشته (یا هر شیء با نمایش رشتهای، مانند اعداد)%d- اعداد صحیح%f- اعداد ممیز شناور%.<small>تعداد ارقام</small>f- اعداد ممیز شناور با دقت ثابت
# فقط رشتهها
first_name = 'Asabeneh'
last_name = 'Yetayeh'
language = 'Python'
formated_string = 'I am %s %s. I teach %s' %(first_name, last_name, language)
print(formated_string)
# رشتهها و اعداد
radius = 10
pi = 3.14
area = pi * radius ** 2
formated_string = 'The area of circle with a radius %d is %.2f.' %(radius, area) # 2 به ۲ رقم معنیدار بعد از نقطه اشاره دارد
python_libraries = ['Django', 'Flask', 'NumPy', 'Matplotlib','Pandas']
formated_string = 'The following are python libraries:%s' % (python_libraries)
print(formated_string) # "The following are python libraries:['Django', 'Flask', 'NumPy', 'Matplotlib','Pandas']"
قالببندی رشته به سبک جدید (str.format)
این قالببندی در نسخه ۳ پایتون معرفی شده است.
first_name = 'Asabeneh'
last_name = 'Yetayeh'
language = 'Python'
formated_string = 'I am {} {}. I teach {}'.format(first_name, last_name, language)
print(formated_string)
a = 4
b = 3
print('{} + {} = {}'.format(a, b, a + b))
print('{} - {} = {}'.format(a, b, a - b))
print('{} * {} = {}'.format(a, b, a * b))
print('{} / {} = {:.2f}'.format(a, b, a / b)) # آن را به دو رقم بعد از اعشار محدود میکند
print('{} % {} = {}'.format(a, b, a % b))
print('{} // {} = {}'.format(a, b, a // b))
print('{} ** {} = {}'.format(a, b, a ** b))
# خروجی
4 + 3 = 7
4 - 3 = 1
4 * 3 = 12
4 / 3 = 1.33
4 % 3 = 1
4 // 3 = 1
4 ** 3 = 64
# رشتهها و اعداد
radius = 10
pi = 3.14
area = pi * radius ** 2
formated_string = 'The area of a circle with a radius {} is {:.2f}.'.format(radius, area) # ۲ رقم بعد از اعشار
print(formated_string)
درونیابی رشته / f-String ها (پایتون 3.6+)
یکی دیگر از روشهای جدید قالببندی رشته، درونیابی رشته یا f-string است. رشتهها با f شروع میشوند و ما میتوانیم دادهها را در موقعیتهای مربوطه تزریق کنیم.
a = 4
b = 3
print(f'{a} + {b} = {a +b}')
print(f'{a} - {b} = {a - b}')
print(f'{a} * {b} = {a * b}')
print(f'{a} / {b} = {a / b:.2f}')
print(f'{a} % {b} = {a % b}')
print(f'{a} // {b} = {a // b}')
print(f'{a} ** {b} = {a ** b}')
رشتههای پایتون به عنوان دنبالهای از کاراکترها
رشتههای پایتون دنبالهای از کاراکترها هستند و متدهای اصلی دسترسی خود را با دیگر دنبالههای مرتب اشیاء در پایتون - لیستها و تاپلها - به اشتراک میگذارند. سادهترین راه برای استخراج کاراکترهای تکی از رشتهها (و اعضای جداگانه از هر دنباله) این است که آنها را در متغیرهای مربوطه باز کنید.
باز کردن کاراکترها
language = 'Python'
a,b,c,d,e,f = language # باز کردن کاراکترهای دنباله در متغیرها
print(a) # P
print(b) # y
print(c) # t
print(d) # h
print(e) # o
print(f) # n
دسترسی به کاراکترها در رشتهها بر اساس اندیس
در برنامهنویسی شمارش از صفر شروع میشود. بنابراین، حرف اول یک رشته در اندیس صفر قرار دارد و حرف آخر یک رشته در اندیس طول رشته منهای یک است.
language = 'Python'
first_letter = language[0]
print(first_letter) # P
second_letter = language[1]
print(second_letter) # y
last_index = len(language) - 1
last_letter = language[last_index]
print(last_letter) # n
اگر بخواهیم از سمت راست شروع کنیم میتوانیم از اندیسگذاری منفی استفاده کنیم. ۱- آخرین اندیس است.
language = 'Python'
last_letter = language[-1]
print(last_letter) # n
second_last = language[-2]
print(second_last) # o
برش زدن رشتههای پایتون
در پایتون میتوانیم رشتهها را به زیررشتهها برش دهیم.
language = 'Python'
first_three = language[0:3] # از اندیس صفر شروع میشود و تا ۳ ولی خود ۳ را شامل نمیشود
print(first_three) #Pyt
last_three = language[3:6]
print(last_three) # hon
# روش دیگر
last_three = language[-3:]
print(last_three) # hon
last_three = language[3:]
print(last_three) # hon
معکوس کردن یک رشته
ما میتوانیم به راحتی رشتهها را در پایتون معکوس کنیم.
greeting = 'Hello, World!'
print(greeting[::-1]) # !dlroW ,olleH
رد کردن کاراکترها هنگام برش زدن
امکان رد کردن کاراکترها هنگام برش زدن با ارسال آرگومان گام به متد برش وجود دارد.
language = 'Python'
pto = language[0:6:2] #
print(pto) # Pto
متدهای رشته
متدهای رشته زیادی وجود دارند که به ما امکان قالببندی رشتهها را میدهند. برخی از متدهای رشته را در مثال زیر ببینید:
capitalize(): کاراکتر اول رشته را به حرف بزرگ تبدیل میکند.
challenge = 'thirty days of python'
print(challenge.capitalize()) # 'Thirty days of python'
count(): تعداد وقوع زیررشته را در رشته برمیگرداند،count(substring, start=.., end=..).startاندیس شروع برای شمارش وendآخرین اندیس برای شمارش است.
challenge = 'thirty days of python'
print(challenge.count('y')) # 3
print(challenge.count('y', 7, 14)) # 1,
print(challenge.count('th')) # 2`
endswith(): بررسی میکند که آیا یک رشته با پسوند مشخصی خاتمه مییابد.
challenge = 'thirty days of python'
print(challenge.endswith('on')) # True
print(challenge.endswith('tion')) # False
expandtabs(): کاراکتر تب را با فاصله جایگزین میکند، اندازه تب پیشفرض ۸ است. این متد آرگومان اندازه تب را میپذیرد.
challenge = 'thirty\tdays\tof\tpython'
print(challenge.expandtabs()) # 'thirty days of python'
print(challenge.expandtabs(10)) # 'thirty days of python'
find(): اندیس اولین وقوع یک زیررشته را برمیگرداند، در صورت عدم وجود -۱ را برمیگرداند.
challenge = 'thirty days of python'
print(challenge.find('y')) # 5
print(challenge.find('th')) # 0
rfind(): اندیس آخرین وقوع یک زیررشته را برمیگرداند، در صورت عدم وجود -۱ را برمیگرداند.
challenge = 'thirty days of python'
print(challenge.rfind('y')) # 16
print(challenge.rfind('th')) # 17
format(): رشته را به خروجی زیباتری قالببندی میکند. برای اطلاعات بیشتر در مورد قالببندی رشته این لینک را بررسی کنید.
first_name = 'Asabeneh'
last_name = 'Yetayeh'
age = 250
job = 'teacher'
country = 'Finland'
sentence = 'I am {} {}. I am a {}. I am {} years old. I live in {}.'.format(first_name, last_name, age, job, country)
print(sentence) # I am Asabeneh Yetayeh. I am 250 years old. I am a teacher. I live in Finland.
radius = 10
pi = 3.14
area = pi * radius ** 2
result = 'The area of a circle with radius {} is {}'.format(str(radius), str(area))
print(result) # The area of a circle with radius 10 is 314
index(): پایینترین اندیس یک زیررشته را برمیگرداند، آرگومانهای اضافی اندیس شروع و پایان را مشخص میکنند (پیشفرض ۰ و طول رشته - ۱). اگر زیررشته پیدا نشود،valueErrorایجاد میکند.
challenge = 'thirty days of python'
sub_string = 'da'
print(challenge.index(sub_string)) # 7
print(challenge.index(sub_string, 9)) # error
rindex(): بالاترین اندیس یک زیررشته را برمیگرداند، آرگومانهای اضافی اندیس شروع و پایان را مشخص میکنند (پیشفرض ۰ و طول رشته - ۱).
challenge = 'thirty days of python'
sub_string = 'da'
print(challenge.rindex(sub_string)) # 7
print(challenge.rindex(sub_string, 9)) # error
print(challenge.rindex('on', 8)) # 19
isalnum(): کاراکتر حرفی-عددی (alphanumeric) را بررسی میکند.
challenge = 'ThirtyDaysPython'
print(challenge.isalnum()) # True
challenge = '30DaysPython'
print(challenge.isalnum()) # True
challenge = 'thirty days of python'
print(challenge.isalnum()) # False, فاصله یک کاراکتر حرفی-عددی نیست
challenge = 'thirty days of python 2019'
print(challenge.isalnum()) # False
isalpha(): بررسی میکند که آیا تمام عناصر رشته حروف الفبا هستند (a-z و A-Z).
challenge = 'thirty days of python'
print(challenge.isalpha()) # False, فاصله یک بار دیگر مستثنی شده است
challenge = 'ThirtyDaysPython'
print(challenge.isalpha()) # True
num = '123'
print(num.isalpha()) # False
isdecimal(): بررسی میکند که آیا تمام کاراکترهای یک رشته دهدهی (decimal) هستند (۰-۹).
challenge = 'thirty days of python'
print(challenge.isdecimal()) # False
challenge = '123'
print(challenge.isdecimal()) # True
challenge = '\u00B2'
print(challenge.isdigit()) # False
challenge = '12 3'
print(challenge.isdecimal()) # False, فاصله مجاز نیست
isdigit(): بررسی میکند که آیا تمام کاراکترهای یک رشته عدد هستند (۰-۹ و برخی دیگر از کاراکترهای یونیکد برای اعداد).
challenge = 'Thirty'
print(challenge.isdigit()) # False
challenge = '30'
print(challenge.isdigit()) # True
challenge = '\u00B2'
print(challenge.isdigit()) # True
isnumeric(): بررسی میکند که آیا تمام کاراکترهای یک رشته عددی یا مرتبط با عدد هستند (درست مانندisdigit()، فقط نمادهای بیشتری مانند ½ را میپذیرد).
num = '10'
print(num.isnumeric()) # True
num = '\u00BD' # ½
print(num.isnumeric()) # True
num = '10.5'
print(num.isnumeric()) # False
isidentifier(): یک شناسه (identifier) معتبر را بررسی میکند - بررسی میکند که آیا یک رشته نام متغیر معتبری است.
challenge = '30DaysOfPython'
print(challenge.isidentifier()) # False, زیرا با عدد شروع میشود
challenge = 'thirty_days_of_python'
print(challenge.isidentifier()) # True
islower(): بررسی میکند که آیا تمام کاراکترهای الفبایی در رشته حروف کوچک هستند.
challenge = 'thirty days of python'
print(challenge.islower()) # True
challenge = 'Thirty days of python'
print(challenge.islower()) # False
isupper(): بررسی میکند که آیا تمام کاراکترهای الفبایی در رشته حروف بزرگ هستند.
challenge = 'thirty days of python'
print(challenge.isupper()) # False
challenge = 'THIRTY DAYS OF PYTHON'
print(challenge.isupper()) # True
join(): یک رشته الحاق شده را برمیگرداند.
web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
result = ' '.join(web_tech)
print(result) # 'HTML CSS JavaScript React'
web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
result = '# '.join(web_tech)
print(result) # 'HTML# CSS# JavaScript# React'
strip(): تمام کاراکترهای داده شده را از ابتدا و انتهای رشته حذف میکند.
challenge = 'thirty days of pythoonnn'
print(challenge.strip('noth')) # 'irty days of py'
replace(): زیررشته را با یک رشته داده شده جایگزین میکند.
challenge = 'thirty days of python'
print(challenge.replace('python', 'coding')) # 'thirty days of coding'
split(): رشته را با استفاده از رشته داده شده یا فاصله به عنوان جداکننده، تقسیم میکند.
challenge = 'thirty days of python'
print(challenge.split()) # ['thirty', 'days', 'of', 'python']
challenge = 'thirty, days, of, python'
print(challenge.split(', ')) # ['thirty', 'days', 'of', 'python']
title(): یک رشته با حالت عنوان (title case) برمیگرداند.
challenge = 'thirty days of python'
print(challenge.title()) # Thirty Days Of Python
swapcase(): تمام کاراکترهای بزرگ را به کوچک و تمام کاراکترهای کوچک را به بزرگ تبدیل میکند.
challenge = 'thirty days of python'
print(challenge.swapcase()) # THIRTY DAYS OF PYTHON
challenge = 'Thirty Days Of Python'
print(challenge.swapcase()) # tHIRTY dAYS oF pYTHON
startswith(): بررسی میکند که آیا رشته با رشته مشخص شده شروع میشود.
challenge = 'thirty days of python'
print(challenge.startswith('thirty')) # True
challenge = '30 days of python'
print(challenge.startswith('thirty')) # False
🌕 شما یک فرد فوقالعاده هستید و پتانسیل قابل توجهی دارید. شما به تازگی چالشهای روز چهارم را به پایان رساندهاید و چهار قدم در راه رسیدن به بزرگی جلوتر هستید. اکنون برای مغز و عضلات خود تمریناتی انجام دهید.
💻 تمرینات - روز چهارم
- رشتههای 'Thirty'، 'Days'، 'Of'، 'Python' را به یک رشته واحد، 'Thirty Days Of Python' الحاق کنید.
- رشتههای 'Coding'، 'For'، 'All' را به یک رشته واحد، 'Coding For All' الحاق کنید.
- متغیری به نام
companyتعریف کرده و مقدار اولیه "Coding For All" را به آن اختصاص دهید. - متغیر
companyرا با استفاده از_print()چاپ کنید. - طول رشته
companyرا با استفاده از متد_len()و_print()چاپ کنید. - تمام کاراکترها را با استفاده از متد
_upper()به حروف بزرگ تبدیل کنید. - تمام کاراکترها را با استفاده از متد
_lower()به حروف کوچک تبدیل کنید. - از متدهای
capitalize()،title()،swapcase()برای قالببندی مقدار رشته_Coding For All_استفاده کنید. - کلمه اول رشته
_Coding For All_را برش دهید (slice کنید). - بررسی کنید که آیا رشته
_Coding For All_حاوی کلمهCodingاست یا خیر، با استفاده از متدindex،findیا متدهای دیگر. - کلمه
codingرا در رشته 'Coding For All' باPythonجایگزین کنید. - عبارت 'Python for Everyone' را با استفاده از متد
replaceیا متدهای دیگر به 'Python for All' تغییر دهید. - رشته 'Coding For All' را با استفاده از فاصله به عنوان جداکننده تقسیم کنید (
split()). - رشته "Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon" را در کاما تقسیم کنید.
- کاراکتر در اندیس ۰ در رشته
_Coding For All_چیست؟ - آخرین اندیس رشته
_Coding For All_چیست؟ - کاراکتر در اندیس ۱۰ در رشته "Coding For All" چیست؟
- یک مخفف یا سرواژه برای نام 'Python For Everyone' ایجاد کنید.
- یک مخفف یا سرواژه برای نام 'Coding For All' ایجاد کنید.
- از
indexبرای تعیین موقعیت اولین وقوعCدرCoding For Allاستفاده کنید. - از
indexبرای تعیین موقعیت اولین وقوعFدرCoding For Allاستفاده کنید. - از
rfindبرای تعیین موقعیت آخرین وقوعlدرCoding For All Peopleاستفاده کنید. - از
indexیاfindبرای یافتن موقعیت اولین وقوع کلمه 'because' در جمله زیر استفاده کنید: 'You cannot end a sentence with because because because is a conjunction' - از
rindexبرای یافتن موقعیت آخرین وقوع کلمهbecauseدر جمله زیر استفاده کنید: 'You cannot end a sentence with because because because is a conjunction' - عبارت 'because because because' را از جمله زیر برش دهید: 'You cannot end a sentence with because because because is a conjunction'
- موقعیت اولین وقوع کلمه 'because' را در جمله زیر پیدا کنید: 'You cannot end a sentence with because because because is a conjunction'
- عبارت 'because because because' را از جمله زیر برش دهید: 'You cannot end a sentence with because because because is a conjunction'
- آیا 'Coding For All' با زیررشته
_Coding_شروع میشود؟ - آیا 'Coding For All' با زیررشته
_coding_خاتمه مییابد؟ - در رشته داده شده ' Coding For All '، فضاهای خالی اضافی سمت چپ و راست را حذف کنید.
- کدام یک از متغیرهای زیر هنگام استفاده از متد
isidentifier()مقدارTrueرا برمیگرداند؟30DaysOfPythonthirty_days_of_python
- لیست زیر حاوی نام برخی از کتابخانههای پایتون است:
['Django', 'Flask', 'Bottle', 'Pyramid', 'Falcon']. لیست را با یک رشته هش با فاصله به هم متصل کنید. - از سکانس گریز خط جدید برای جدا کردن جملات زیر استفاده کنید.
I am enjoying this challenge. I just wonder what is next. - از سکانس گریز تب برای نوشتن خطوط زیر استفاده کنید.
Name Age Country City Asabeneh 250 Finland Helsinki - با استفاده از متد قالببندی رشته، موارد زیر را نمایش دهید:
radius = 10
area = 3.14 * radius ** 2
The area of a circle with radius 10 is 314 meters square.
- موارد زیر را با استفاده از متدهای قالببندی رشته ایجاد کنید:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
8 % 6 = 2
8 // 6 = 1
8 ** 6 = 262144
🎉 تبریک میگویم! 🎉