جزوه دستورات شرطی پایتون
جلسه دوم - رشته (String) در پایتون
مرجع کامل: تعریف، Indexing، Slicing، متدها، عملگرها و دستورات شرطی - کدها قابل کپی هستند.
رشته (String)
رشته (String) در پایتون یعنی مجموعهای از کاراکترها (حروف، عدد، نماد و فاصله) که داخل کوتیشن (' ') یا (" ") قرار میگیره.
name = "Hamid"
message = 'Hello World!'
هر دو درسته؛ فقط باید شروع و پایانش با یک نوع کوتیشن باشه.
چند نکته مهم درباره رشتهها
- رشتهها در پایتون
immutableهستن، یعنی بعد از ساخته شدن قابل تغییر نیستن. - برای رشتههای چندخطی از سه کوتیشن (
''' ... ''') یا (""" ... """) استفاده میکنیم.
text = """This is
a multi-line
string."""
- برای جدا کردن کاراکتر خاص مثل نقلقول داخل رشته از
\(بکاسلش) استفاده میشه:
quote = "He said: \"Python is fun!\""
print(quote)
# خروجی:
# He said: "Python is fun!"
Indexing (دسترسی به یک کاراکتر مشخص)
هر رشته در پایتون مثل یک لیست از کاراکترها عمل میکنه و به هر کاراکترش یک اندیس (Index) تعلق میگیره.
- اندیسها از 0 شروع میشن
- میتونی از اندیس منفی هم استفاده کنی تا از آخر رشته به اول شمارش کنی
text = "Python"
print(text[0]) # حرف اول
print(text[3]) # حرف چهارم
print(text[-1]) # حرف آخر
print(text[-2]) # حرف قبل از آخر
# خروجی:
# P
# h
# n
# o
Slicing (بریدن بخشی از رشته)
با Slicing میتونی بخش مشخصی از رشته رو جدا کنی.
ساختار کلی:
string[start : stop : step]
- پارامترها:
start- اندیسی که برش از آن شروع میشود (شامل آن)stop- اندیسی که برش تا آن ادامه دارد (شامل آن نیست)step- فاصله بین اندیسها (پیشفرض ۱)
text = "Python"
print(text[0:4]) # از اندیس 0 تا 3
print(text[2:]) # از اندیس 2 تا آخر
print(text[:4]) # از ابتدا تا اندیس 3
print(text[::2]) # هر دو کاراکتر
print(text[::-1]) # معکوس رشته
# خروجی:
# Pyth
# thon
# Pyth
# Pto
# nohtyP
نکات مهم
- اندیس منفی = شمارش از آخر رشته
- Stop شامل خودش نیست
- step میتواند منفی باشد → معکوس کردن رشته
- Slicing روی رشته یک کپی ایجاد میکند، رشته اصلی تغییر نمیکند (چون immutable است)
متدهای مهم رشتهها در پایتون
در پایتون، رشتهها مثل یه آبجکت هستن و کلی متد آماده دارن برای کار با متنها.
تابع len()
تابع len() یکی از توابع داخلی (Built-in Function) پایتون است که برای
محاسبهی طول یا تعداد عناصر یک شیء قابل شمارش (مثل رشته، لیست، تاپل، دیکشنری و...) استفاده میشود.
text = "Hamid"
print(len(text))
# خروجی:
# 5
متد startswith()
متد startswith() برای بررسی این استفاده میشود که آیا رشته با یک بخش خاص
(substring) شروع میشود یا نه.
text = "Python is fun"
print(text.startswith("Python"))
# خروجی:
# True
متد endswith()
متد endswith() بررسی میکند که آیا رشته با یک عبارت خاص در انتها تمام
میشود یا نه.
text = "hello.py"
print(text.endswith(".py"))
# خروجی:
# True
متد isalpha()
متد isalpha() بررسی میکند که آیا تمام کاراکترهای رشته فقط حروف الفبا
(A–Z یا a–z) هستند یا نه.
text = "Python3"
print(text.isalpha())
# خروجی:
# False
متد isdigit()
متد isdigit() بررسی میکند که آیا تمام کاراکترهای رشته فقط عدد (0 تا 9)
هستند یا نه.
age = "25"
print(age.isdigit())
# خروجی:
# True
متد lower()
متد lower() تمام حروف بزرگ (Uppercase) یک رشته را به حروف کوچک
(Lowercase) تبدیل میکند.
text = "PYTHON"
print(text.lower())
# خروجی:
# python
متد upper()
متد upper() تمام حروف کوچک (Lowercase) یک رشته را به حروف بزرگ
(Uppercase) تبدیل میکند.
text = "python"
print(text.upper())
# خروجی:
# PYTHON
متد title()
متد title() اول هر کلمه در رشته را بزرگ (Uppercase) میکند و باقی حروف را
کوچک (Lowercase) میکند.
text = "hello world"
print(text.title())
# خروجی:
# Hello World
متد capitalize()
متد capitalize() فقط حرف اول رشته را بزرگ (Uppercase) میکند و بقیه حروف
را کوچک (Lowercase) میکند.
text = "hello world"
print(text.capitalize())
# خروجی:
# Hello world
متد swapcase()
متد swapcase() تمام حروف بزرگ (Uppercase) را به کوچک (Lowercase) و تمام
حروف کوچک را به بزرگ تبدیل میکند.
text = "PyThOn"
print(text.swapcase())
# خروجی:
# pYtHoN
متد strip()
متد strip() فاصلهها و کاراکترهای اضافی در ابتدا و انتهای رشته را حذف
میکند.
text = " Hello World! "
print(text.strip())
# خروجی:
# Hello World!
# حذف کاراکترهای خاص:
text = "!!!Hello!!!"
print(text.strip("!"))
# خروجی:
# Hello
متد split()
متد split() یک رشته را به چند بخش تقسیم میکند و آنها را به صورت لیست
برمیگرداند.
text = "apple,banana,cherry"
print(text.split(","))
# خروجی:
# ['apple', 'banana', 'cherry']
متد join()
متد join() برای ترکیب عناصر یک لیست یا هر iterable از رشتهها به یک رشته
واحد استفاده میشود.
words = ["Python", "is", "fun"]
result = " ".join(words)
print(result)
# خروجی:
# Python is fun
fruits = ["apple", "banana", "cherry"]
result = ",".join(fruits)
print(result)
# خروجی:
# apple,banana,cherry
متد find()
متد find() برای جستجوی یک زیررشته (substring) در رشته اصلی استفاده
میشود.
text = "Python is fun"
print(text.find("is"))
# خروجی:
# 7
متد index()
متد index() برای پیدا کردن موقعیت اولین occurrence از یک زیررشته
(substring) در رشته اصلی استفاده میشود.
text = "Python is fun"
pos = text.index("is")
print(pos)
# خروجی:
# 7
# اگر پیدا نشود:
# ValueError: substring not found
متد replace()
متد replace() برای جایگزینی بخشی از رشته با متن دیگر استفاده میشود.
text = "Python is fun"
new_text = text.replace("fun", "awesome")
print(new_text)
# خروجی:
# Python is awesome
متد count()
متد count() برای شمردن تعداد دفعاتی که یک زیررشته (substring) در رشته
اصلی وجود دارد استفاده میشود.
text = "hello hello world"
print(text.count("hello"))
# خروجی:
# 2
متد islower()
متد islower() بررسی میکند که تمام حروف الفبای رشته کوچک (lowercase)
باشند یا نه.
text = "python"
print(text.islower())
# خروجی:
# True
متد isupper()
متد isupper() بررسی میکند که تمام حروف الفبای رشته بزرگ (uppercase)
باشند یا نه.
text = "PYTHON"
print(text.isupper())
# خروجی:
# True
متد center()
متد center() یک رشته را در وسط با فاصله یا کاراکتر دلخواه پر میکند.
text = "Python"
print(text.center(10, "*"))
# خروجی:
# **Python**
متد zfill()
متد zfill() رشته را با صفر (0) از سمت چپ پر میکند.
num = "42"
print(num.zfill(5))
# خروجی:
# 00042
انواع عملگرها در پایتون
در پایتون، عملگرها (Operators) ابزارهایی هستند که برای انجام محاسبات، مقایسهها و کنترل دادهها استفاده میشوند.
عملگرهای ریاضی (Arithmetic Operators)
برای انجام محاسبات ریاضی استفاده میشوند.
| عملگر | توضیح | مثال | نتیجه |
|---|---|---|---|
| + | جمع | 5 + 3 | 8 |
| - | تفریق | 5 - 3 | 2 |
| * | ضرب | 5 * 3 | 15 |
| / | تقسیم (با نتیجه اعشاری) | 5 / 2 | 2.5 |
| // | تقسیم صحیح (بدون اعشار) | 5 // 2 | 2 |
| % | باقیمانده تقسیم | 5 % 2 | 1 |
| ** | توان (به توان رساندن) | 2 ** 3 | 8 |
عملگرهای مقایسهای (Comparison Operators)
برای مقایسه دو مقدار بهکار میروند و نتیجهی آنها همیشه True یا False است.
| عملگر | توضیح | مثال | نتیجه |
|---|---|---|---|
| == | برابر است با | 5 == 5 | True |
| != | نابرابر است با | 5 != 3 | True |
| > | بزرگتر است | 5 > 3 | True |
| < | کوچکتر است | 5 < 3 | False |
| >= | بزرگتر یا مساوی است | 5 >= 5 | True |
| <= | کوچکتر یا مساوی است | 4 <= 5 | True |
عملگرهای انتسابی (Assignment Operators)
برای اختصاص دادن مقدار به متغیرها استفاده میشوند.
| عملگر | توضیح | مثال | معادل |
|---|---|---|---|
| = | انتساب مقدار | x = 5 | - |
| += | جمع و انتساب | x += 3 | x = x + 3 |
| -= | تفریق و انتساب | x -= 3 | x = x - 3 |
| *= | ضرب و انتساب | x *= 3 | x = x * 3 |
| /= | تقسیم و انتساب | x /= 3 | x = x / 3 |
| //= | تقسیم صحیح و انتساب | x //= 3 | x = x // 3 |
| %= | باقیمانده و انتساب | x %= 3 | x = x % 3 |
| **= | توان و انتساب | x **= 2 | x = x ** 2 |
عملگرهای منطقی (Logical Operators)
برای ترکیب عبارات منطقی استفاده میشوند.
| عملگر | توضیح | مثال | نتیجه |
|---|---|---|---|
| and | درست است اگر هر دو درست باشند | (5 > 3) and (4 < 6) | True |
| or | درست است اگر یکی درست باشد | (5 > 3) or (4 > 6) | True |
| not | نتیجه را معکوس میکند | not(5 > 3) | False |
عملگرهای عضویت (Membership Operators)
برای بررسی حضور یک مقدار در مجموعه (مثل لیست، رشته، تاپل و ...) بهکار میروند.
| عملگر | توضیح | مثال | نتیجه |
|---|---|---|---|
| in | اگر مقدار در مجموعه وجود داشته باشد | 'a' in 'Hamid' | True |
| not in | اگر مقدار در مجموعه وجود نداشته باشد | 'z' not in 'Hamid' | True |
عملگرهای مقایسهی هویت (Identity Operators)
برای بررسی میکنند که آیا دو متغیر به یک شیء در حافظه اشاره میکنند یا نه
| عملگر | توضیح | مثال | نتیجه |
|---|---|---|---|
| is | اگر دو متغیر به یک شیء اشاره کنند | x is y | True/False |
| is not | اگر دو متغیر به اشیاء متفاوت اشاره کنند | x is not y | True/False |
تقدم و تأخر عملگرهای ریاضی در پایتون
در محاسبات ریاضی، ترتیب اجرای عملگرها خیلی مهمه. پایتون هم مثل ریاضیات از یک اولویتبندی مشخص پیروی میکنه:
- پرانتز
- توان
- ضرب و تقسیم
- جمع و تفریق
نکات مهم:
- اگر چند عملگر همتقدم باشند، از چپ به راست انجام میشوند (بهجز ** که راست به چپ است.)
- همیشه میتوان با پرانتز ترتیب انجام عملیات را تغییر داد.
- عملگرهای / و // هر دو تقسیم هستند ولی خروجی متفاوت دارند:
- / → عدد اعشاری
- // → تقسیم صحیح (بدون قسمت اعشاری)
جدول ارزش منطقی (Truth Table)
| x | y | x and y | x or y | not x |
|---|---|---|---|---|
| T | T | T | T | F |
| T | F | F | T | F |
| F | T | F | T | T |
| F | F | F | F | T |
دستورات شرطی در پایتون (if, elif, else)
در پایتون از دستورات شرطی برای بررسی شرایط و تصمیمگیری استفاده میشود.
if شرط:
# دستور یا کد در صورت درست بودن شرط
elif شرط دیگر:
# دستور در صورت درست بودن این شرط
else:
# دستور در صورت برقرار نبودن هیچکدام از شرایط بالا
نکات مهم:
- شرط ها به صورت T/F برآورد می شود. خط به خط شرط را بررسی میکنه اگر شرط برقرار بود میره داخل تورفتگی محاسبه را انجام می دهد
- در یک بلوک شرطی نمیتوان 2 if بگذاریم
- elif اختیاری هست و میتواند هر چندتا که میخواهیم باشه
- else اختیاری هست ولی اگر بگذاریم فقط یکی میتونه باشه
- در هر خط اگر شرط برقرار باشه دستورات انجام میده و از حلقه شرط خارج میشه و بقیه بررسی نمیشه
- موقع نوشتن شرط ها همه حالات رو پوشش دهد مگر تعمدی و شرط ها با هم همپوشانی نداشته باشد مگر تعمدی
چند مثال ساده برای درک بهتر
مثال: یک برنامه بنویسید که سن فرد را دریافت کند و براساس سن دریافتی مشخص کند
age = 18
if age < 13:
print("Child")
elif age < 18:
print("Teenager")
else:
print("Adult")
# خروجی:
# Adult
مثال: یک برنامه بنویسید که عدد وارد شده را بررسی کرده و نوع آن را مشخص کند
x = 10
if x > 0:
if x % 2 == 0:
print("Positive even number")
else:
print("Positive odd number")
else:
print("Negative number")
# خروجی:
# Positive even number
💡 تمرینها و سوالات
در این بخش 20 سوال از سطح ساده تا پیشرفته آماده شده است. سعی کنید ابتدا خودتان حل کنید و سپس پاسخ را مشاهده کنید.
سوال 1: طول رشته
رشتهای از کاربر دریافت کنید و طول آن را نمایش دهید.
# نمونه ورودی:
# رشته: Python
# نمونه خروجی:
# طول رشته: 6
# دریافت رشته از کاربر
text = input("رشته: ")
# محاسبه طول رشته
length = len(text)
# نمایش نتیجه
print(f"طول رشته: {length}")
سوال 2: تبدیل به حروف بزرگ
رشتهای دریافت کنید و آن را به حروف بزرگ تبدیل کنید.
# نمونه ورودی:
# متن: hello world
# نمونه خروجی:
# HELLO WORLD
# دریافت متن
text = input("متن: ")
# تبدیل به حروف بزرگ
result = text.upper()
# نمایش نتیجه
print(result)
سوال 3: شمارش کاراکتر مشخص
یک رشته و یک کاراکتر دریافت کنید و تعداد تکرار آن کاراکتر را نمایش دهید.
# نمونه ورودی:
# رشته: hello
# کاراکتر: l
# نمونه خروجی:
# تعداد: 2
# دریافت رشته و کاراکتر
text = input("رشته: ")
char = input("کاراکتر: ")
# شمارش تعداد تکرار
count = text.count(char)
# نمایش نتیجه
print(f"تعداد: {count}")
سوال 4: معکوس کردن رشته
رشتهای دریافت کنید و آن را معکوس کنید.
# نمونه ورودی:
# رشته: Python
# نمونه خروجی:
# nohtyP
# دریافت رشته
text = input("رشته: ")
# معکوس کردن با slicing
reversed_text = text[::-1]
# نمایش نتیجه
print(reversed_text)
سوال 5: بررسی Palindrome
بررسی کنید که آیا رشته ورودی Palindrome است یا خیر. (رشتهای که از چپ و راست یکسان خوانده میشود)
# نمونه ورودی:
# رشته: radar
# نمونه خروجی:
# Palindrome است
# دریافت رشته
text = input("رشته: ")
# بررسی Palindrome بودن
if text == text[::-1]:
print("Palindrome است")
else:
print("Palindrome نیست")
سوال 6: جایگزینی کاراکتر
رشتهای دریافت کنید و تمام فاصلههای آن را با خط تیره جایگزین کنید.
# نمونه ورودی:
# متن: hello world python
# نمونه خروجی:
# hello-world-python
# دریافت متن
text = input("متن: ")
# جایگزینی فاصله با خط تیره
result = text.replace(" ", "-")
# نمایش نتیجه
print(result)
سوال 7: استخراج اعداد از رشته
رشتهای دریافت کنید و فقط اعداد موجود در آن را نمایش دهید.
# نمونه ورودی:
# متن: abc123def456
# نمونه خروجی:
# 123456
# دریافت متن
text = input("متن: ")
# استخراج اعداد
digits = ""
for char in text:
if char.isdigit():
digits += char
# نمایش نتیجه
print(digits)
سوال 8: بررسی شروع رشته
بررسی کنید که آیا رشته با "Python" شروع میشود یا خیر.
# نمونه ورودی:
# متن: Python is fun
# نمونه خروجی:
# با Python شروع میشود
# دریافت متن
text = input("متن: ")
# بررسی شروع رشته
if text.startswith("Python"):
print("با Python شروع میشود")
else:
print("با Python شروع نمیشود")
سوال 9: شمارش کلمات
تعداد کلمات یک جمله را بشمارید.
# نمونه ورودی:
# جمله: Python is a programming language
# نمونه خروجی:
# تعداد کلمات: 5
# دریافت جمله
sentence = input("جمله: ")
# تبدیل به لیست کلمات و شمارش
words = sentence.split()
count = len(words)
# نمایش نتیجه
print(f"تعداد کلمات: {count}")
سوال 10: حذف فضای خالی
فضاهای خالی ابتدا و انتهای رشته را حذف کنید.
# نمونه ورودی:
# متن: Hello World
# نمونه خروجی:
# Hello World
# دریافت متن
text = input("متن: ")
# حذف فضاهای خالی
cleaned = text.strip()
# نمایش نتیجه
print(cleaned)
سوال 11: title Case
هر کلمه از جمله را با حرف بزرگ شروع کنید.
# نمونه ورودی:
# جمله: hello world from python
# نمونه خروجی:
# Hello World From Python
# دریافت جمله
sentence = input("جمله: ")
# تبدیل به Title Case
result = sentence.title()
# نمایش نتیجه
print(result)
سوال 12: بررسی تمام حروف الفبا
بررسی کنید که آیا رشته فقط شامل حروف الفبا است یا خیر.
# نمونه ورودی:
# رشته: Python123
# نمونه خروجی:
# شامل غیر از حروف الفبا است
# دریافت رشته
text = input("رشته: ")
# بررسی حروف الفبا بودن
if text.isalpha():
print("فقط شامل حروف الفبا است")
else:
print("شامل غیر از حروف الفبا است")
سوال 13: پیدا کردن موقعیت کلمه
موقعیت اولین ظهور کلمه "Python" را در رشته پیدا کنید.
# نمونه ورودی:
# متن: I love Python programming
# نمونه خروجی:
# موقعیت: 7
# دریافت متن
text = input("متن: ")
# پیدا کردن موقعیت
position = text.find("Python")
# نمایش نتیجه
if position != -1:
print(f"موقعیت: {position}")
else:
print("پیدا نشد")
سوال 14: تبدیل به snake_case
جملهای دریافت کنید و آن را به فرمت snake_case تبدیل کنید.
# نمونه ورودی:
# جمله: Hello World Python
# نمونه خروجی:
# hello_world_python
# دریافت جمله
sentence = input("جمله: ")
# تبدیل به حروف کوچک و جایگزینی فاصله با underscore
snake_case = sentence.lower().replace(" ", "_")
# نمایش نتیجه
print(snake_case)
سوال 15: برش رشته
سه کاراکتر اول و سه کاراکتر آخر رشته را نمایش دهید.
# نمونه ورودی:
# رشته: Programming
# نمونه خروجی:
# اول: Pro
# آخر: ing
# دریافت رشته
text = input("رشته: ")
# برش کردن
first_three = text[:3]
last_three = text[-3:]
# نمایش نتیجه
print(f"اول: {first_three}")
print(f"آخر: {last_three}")
سوال 16: شمارش حروف بزرگ و کوچک
تعداد حروف بزرگ و کوچک در رشته را بشمارید.
# نمونه ورودی:
# متن: Hello World
# نمونه خروجی:
# حروف بزرگ: 2
# حروف کوچک: 8
# دریافت متن
text = input("متن: ")
# شمارش حروف
upper_count = 0
lower_count = 0
for char in text:
if char.isupper():
upper_count += 1
elif char.islower():
lower_count += 1
# نمایش نتیجه
print(f"حروف بزرگ: {upper_count}")
print(f"حروف کوچک: {lower_count}")
سوال 17: حذف کاراکتر خاص
تمام نقاط (.) از رشته را حذف کنید.
# نمونه ورودی:
# متن: Hello.World.Python.
# نمونه خروجی:
# HelloWorldPython
# دریافت متن
text = input("متن: ")
# حذف نقطه
result = text.replace(".", "")
# نمایش نتیجه
print(result)
سوال 18: ساخت ایمیل
نام و نام خانوادگی دریافت کنید و یک ایمیل با فرمت firstname.lastname@email.com بسازید.
# نمونه ورودی:
# نام: Ali
# نام خانوادگی: Ahmadi
# نمونه خروجی:
# ali.ahmadi@email.com
# دریافت نام و نام خانوادگی
firstname = input("نام: ")
lastname = input("نام خانوادگی: ")
# ساخت ایمیل (تبدیل به حروف کوچک)
email = f"{firstname.lower()}.{lastname.lower()}@email.com"
# نمایش نتیجه
print(email)
سوال 19: مخفف کلمات
حروف اول تمام کلمات یک جمله را استخراج کنید.
# نمونه ورودی:
# جمله: Python Programming Language
# نمونه خروجی:
# PPL
# دریافت جمله
sentence = input("جمله: ")
# تبدیل به لیست کلمات
words = sentence.split()
# استخراج حرف اول هر کلمه
acronym = ""
for word in words:
acronym += word[0].upper()
# نمایش نتیجه
print(acronym)
سوال 20: تشخیص رمز عبور قوی
بررسی کنید رمز عبور حداقل 8 کاراکتر، شامل حروف بزرگ، کوچک و عدد باشد.
# نمونه ورودی:
# رمز: Pass1234
# نمونه خروجی:
# رمز عبور قوی است
# دریافت رمز عبور
password = input("رمز: ")
# بررسی شرایط
has_upper = False
has_lower = False
has_digit = False
for char in password:
if char.isupper():
has_upper = True
elif char.islower():
has_lower = True
elif char.isdigit():
has_digit = True
# بررسی نهایی
if len(password) >= 8 and has_upper and has_lower and has_digit:
print("رمز عبور قوی است")
else:
print("رمز عبور ضعیف است")
دیدگاهتان را بنویسید