رشته در زبانهای برنامهنویسی یکی از پرکاربردترین ساختمانهای دادهای هستند که تقریباً در تمام پروژهها با آنها سر و کار داریم. رشته در پایتون هم از این موضوع مستثنا نیست! در پایتون یک ساختمان داده پیشفرض به نام str وجود دارد که به کمک آن میتوان رشتههای فارسی، انگلیسی یا دارای کاراکترهای خاص ایجاد کرده و با آنها کارهای جذابی انجام دهیم.
رشته در پایتون یک نوع تغییرناپذیر (immutable) است. به این معنا که پس از تعریف یک رشته، نمیتوانیم آن را تغییر دهیم. برای مثال اگر یک رشته به صورت test
داشته باشیم، نمیتوانیم آن را به te3t
تبدیل کنیم!
برای اعمال تغییرات روی یک رشته، میبایست رشتهی جدیدی ایجاد کرد. در نتیجه با اعمال تغییرات روی یک رشته، رشتهای جدید خواهیم داشت.
در این آموزش به طور جامع مبحث رشتهها در پایتون را بررسی کرده و با متدها، توابع و ترفندها آن آشنا میشویم.
برای عضویت در دوره ویدئویی میتونید به «دوره جامع پایتون در کالج» مراجعه کنید. با ثبتنام رایگان در دوره، به تمام جلسات اصلی، جلسات تکمیلی، تمرینها، آزمونها و منابع مازاد دسترسی کامل خواهید داشت.
فهرست محتوای آموزش
تعریف رشته در پایتون
در زبان برنامه نویسی پایتون، مانند بسیاری دیگر از زبانها، یک رشتهی متنی با علامت نقل قول انگلیسی (کوتیشن) دوتایی یا تکی مشخص میشود.
"This is a String in Python!"
'This is another String in this code!'
"این یک رشته متنی در پایتون است"
"What is the result of 2 + 2 ?"
تقریباً میتوان گفت که این دو نوع تعریف تفاوت خاصی با هم ندارند. اما در جایی که میخواهید درون متن خود از یکی از این علامتها استفاده کنید، بهتر است که علامت مشخصکنندهی رشته، از آن نوع دیگر باشد. (یکی "
و دیگری '
)
رشتهها مانند لیست در پایتون، دارای اندیس است. اندیسهای رشته نیز دقیقاً مشابه لیستها، از ابتدا با صفر شروع شده و از انتهای آن با عدد -1 مشخص میشود.
معمولاً برای چاپ رشته در پایتون از دستور print()
استفاده میشود. این دستور در سادهترین حالت یک ورودی گرفته و آن را در کنسول برنامه چاپ میکند. (یادگیری دقیقتر: print پایتون)
print( "Hello World!" )
در قطعه کد زیر یک رشتهی متنی در پایتون تعریف کرده، آن را به متغیری به نام name
منسوب کردیم. سپس این مقدار را در خروجی نمایش دادهایم. (بیشتر بخوانید: متغیر در پایتون)
name = "omid"
print( name )
تعریف رشته چند خطی
برای تعریف یک رشتهی متنی چند خطی در پایتون، در ابتدا و انتهای رشته از علامت "
یا '
سه بار استفاده میکنیم.
مشابه کد زیر که یک پیام چهار خطی را با سه بار دابل کوتیشن تعریف کرده و درون متغیر txt ریختهایم.
txt = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
برش دادن رشته در پایتون
پیشتر گفتم که میتوان به رشته مانند یک لیست دسترسی پیدا کرد. تمام ویژگیها و ترفندهایی که برای دسترسی به لیستها وجود دارد، برای رشتهها نیز صدق میکند.
به کمک علامت []
در جلوی نام متغیر رشتهای، میتوان کاراکتری که در خانهی مورد نظر وجود دارد را فراخوانی کرد.
اگر متغیر ما (متغیر s) حاوی رشته 'omid'
باشد، s[2]
مقدار i را برگردانده و s[-1]
کاراکتر d را برمیگرداند.
برای برش دادن بخشی از یک رشته در پایتون، نیز از ترفندهای کار با لیست پایتون استفاده میکنیم. در قطعه کد زیر، عبارتی را در متغیر txt ذخیره کرده ولی صرفاً کاراکترهای خانهی 4، 5 و 6 را چاپ کردهایم.
txt = "sabzdanesh.com"
print( txt[ 4:7 ] )
اگر مقدار ایندکس وارد شده خارج از محدودهی رشته باشد، با خطای IndexError: string index out of range مواجه خواهیم شد.
عملگرها و توابع پرکاربرد رشته پایتون
در ادامه توابع مختلفی برای کار با رشتهها در پایتون معرفی خواهیم کرد؛ اما چهار مورد از پر کاربردترین آنها عبارتاند از:
تابع/عملگر | شرح عملیات |
---|---|
len() | رشته را به عنوان ورودی گرفته و اندازهی آن را به ما میدهد. |
str() | ورودی خود را تبدیل به رشته کرده و خروجی میدهد. |
+ | برای اتصال دو رشته در پایتون به یکدیگر استفاده میشود. |
== | برای بررسی برابر بودن دو رشته با هم کاربرد دارد. (مقایسه رشته) |
کار با رشته در پایتون
ما برنامهنویسها از رشته در برنامههایمان به وفور استفاده میکنیم. از گرفتن ورودی در پایتون از کاربر گرفته تا پردازش دادههای متنی و کارهایی سنگینتر و بزرگتر!
در ادامه با چهار ترفند کار با رشته در پایتون آشنا خواهید شد. پس از آن نیز توابع کاربردی رشته را بررسی میکنیم.
جداسازی رشته با کاراکتر خاص
فرض کنید اطلاعاتی را از کاربر گرفته و میخواهید عملیات تبدیل رشته به لیست در پایتون را انجام دهید. این کار شاید در نظر اول بسیار سخت و مشکل به نظر برسد!
اگر این دادهها را بهوسیلهی یک کاراکتر خاص از هم جدا کرده باشیم، کارمان بسیار ساده است. فقط کافی است متد split()
را روی رشته صدا بزنیم…
فرض کنید نمرات یک دانشجو را در قالب یک رشته و به صورت زیر در اختیار داریم.
grades_str = "18,17.5,20,14,16"
متد split()
یک ورودی میگیرد که به نام جداکننده (delimeter) شناخته میشود. جداکننده همان کاراکتر یا رشتهای است که دادههای ما را از یکدیگر تفکیک کرده است. در رشتهی ما، ویرگول (یا ,
) جداکننده نمرات خواهد بود.
grades_str = "18,17.5,20,14,16"
grades_list = grades_str.split(',')
print( grades_list )
خروجی این قطعه کد، یک لیست شامل تمام نمرات خواهد بود.
['18', '17.5', '20', '14', '16']
جداکننده میتواند هر چیزی باشد، یک حرف انگلیسی، یک علامت، یک عدد یا حتی یک رشتهی دیگر! مثلاً در قطعه کد زیر رشتهی مورد نظر را با رشته "step"
جدا شده است.
string = "step 1: hello step 2: world step 3: run step 4: python"
print( string.split("step") )
# ['', ' 1: hello ', ' 2: world ', ' 3: run ', ' 4: python']
دلیل ایجاد شدن یک رشتهی خالی در ابتدای لیست این است که کلمهی جداکننده در ابتدای رشته قرار گرفته است.
جستجو در رشته در پایتون
گاهی میخواهیم یک کاراکتر، کلمه یا رشته را درون رشتهای دیگر جستجو کنیم. برای جستجو در رشته از متد find()
استفاده میکنیم.
این تابع سه ورودی میگیرد که اولی اجباری و دو مورد دیگر اختیاری است.
- ورودی اول، کاراکتر یا رشتهی مورد جستجوی ماست.
- ورودی دوم، اندیس شروع عملیات جستجو را مشخص میکند.
- ورودی سوم هم اندیس پایان قسمت جستجو را مشخص میکند.
خروجی این تابع یک عدد است. اگر کاراکتر تعریف شده در رشته وجود داشت، اندیس اولین اتفاق (اولین جایی که کاراکتر در رشته دیده شده) به ما بازگردانده میشود. در غیر این صورت عدد -1 را به عنوان خروجی خواهیم داشت.
string = "Hello and Welcome to SabzDanesh WebSite!"
print( string.find("e") ) # 1
print( string.find("c") ) # 13
print( string.find("Sabz") ) # 21
ساخت رشته ساختارمند (فرمت دهی رشتهها)
گاهی لازم داریم عملیات قالبدهی به رشتهها در پایتون یا فرمت دهی آنها را انجام دهیم. فرض کنید میخواهیم یک رشته و یک عدد را در کنار هم نمایش دهیم. مثلاً، نمرهی دانشجو را در خروجی چاپ کنیم، چیزی شبیه متن زیر:
Your Grade is: 17.5
اولین کاری به ذهنمان میرسد استفاده از عملگرد + برای افزودن نمره به رشتهی پیغام و در نهایت چاپ آن است. برای این کار، کد زیر را نوشته و اجرا میکنیم.
grade = 17.5
print( "Your Grade is: " + grade )
با اجرای کد بالا، خطای زیر حاصل میشود!
متن خطا واضح است! امکان الصاق رشته و یک مقدار عددی وجود ندارد! دو راهحل داریم:
راهحل اول: استفاده از تابع str برای تبدیل عدد به رشته در پایتون
اولین راهحل تبدیل نمره (عدد) به رشته به کمک تابع str()
است. این تابع یک ورودی گرفته و به عنوان خروجی یک رشته از آن تحویل میدهد.
grade = 17.5
print( "Your Grade is: " + str(grade) )
راهحل دوم: فرمتدهی رشته با متد format
اما راهحل دوم استانداردتر و حرفهایتر خواهد بود. برای این کار به جای مقادیر متغیری که قرار است در رشته قرار بگیرد علامت {}
را قرار میدهیم.
سپس به کمک صدا زدن متد format()
روی رشتهی مورد نظر، مقادیر متغیر خود را به آن داده و رشتهی نهایی را ایجاد میکنیم.
برای درک بهتر روند به قطعه کد زیر توجه کنید.
grade = 17.5
msg = "Your Grade is: {}"
print( msg.format(grade) )
# Result: Your Grade is: 17.5
تابع format()
به هر تعداد دلخواهی میتواند ورودی بگیرد. در حقیقت شما میتوانید به هر تعداد که نیاز دارید، درون یک رشته متغیر تعریف کنید. برای یادگیری دقیق این تابع، به آموزش زیر مراجعه کنید:
پیمایش رشته در پایتون
با استفاده از حلقهها در پایتون میتوان در یک رشته پیمایش کرد. اولین ایده که احتمالاً به ذهن خودتان هم رسیده، استفاده از اندیسها برای دسترسی به تک تک کاراکترهای رشته است.
txt = "A test text from SabzDanesh"
for i in range( len(txt) ):
print( txt[i] )
در این قطعه کد یک متن را با استفاده از حلقهی for پیمایش کرده و تک تک کاراکترهای آن را چاپ میکنیم. همین کد با حلقهی while به صورت زیر خواهد شد.
txt = "A test text from SabzDanesh"
i = 0
while i < len( txt ):
print( txt[i] )
i += 1
یک ترفند جذاب و ساده برای پیمایش تک به تکِ کاراکترهای رشته، استفاده از in در حلقهی for است. ساختار این پیمایش به صورت زیر است.
for char in string:
# Do something with char
این نوع پیمایش بسیار ساده بوده و از نظر مفهوم کدنویسی نیز بسیار مناسب است. (به هر کاراکتر در رشتهی …)
قطعه کد پیمایش درون رشته در پایتون به این روش به صورت زیر خواهد شد.
txt = "A test text from SabzDanesh"
for char in txt:
print( char )
توابع مهم رشته پایتون
از آن جایی که رشتهها کاربردهای بسیاری در برنامه نویسی دارند، توابع مختلف و نسبتاً زیادی برای آنها وجود دارد. در این قسمت 8 مورد از مهمترین توابعی که ممکن است با آنها بیشتر سر و کار داشته باشید را معرفی میکنیم.
تمام این توابع به صورت متد و بر روی رشته صدا زده میشوند. یعنی اگر اسم تابع func()
بوده و متغیر رشتهی ما s باشد، فراخوانی آن به صورت s.func()
خواهد بود.
lower()
: تبدیل حروف موجود در رشته به حروف کوچک (در زبان انگلیسی)upper()
: تبدیل حروفِ رشته به حروف بزرگstrip()
: حذف فضای خالی (spaceهای اضافی) ابتدا و انتهای رشتهcount()
: تعداد تکرار کلمه یا کاراکتری که به عنوان ورودی گرفته را در رشته محاسبه میکند.isdigit()
: در صورتی که تمام کاراکترهای موجود در رشته عدد باشند، True و در غیر این صورت False میدهد.index()
: اندیس شروع کلمه یا کاراکتری که به عنوان ورودی گرفته را در رشته مشخص میکند. تفاوت آن با متد find این است که اگر مقدار مورد نظر را پیدا نکند، برنامه با خطا مواجه خواهد شد.
اگر میخواهید با تمام توابع کار با رشته در پایتون آشنا شوید، به جدول انتهای این منبع انگلیسی مراجعه کنید.
جایگزینی کلمات در رشته پایتون
اگر بخواهیم یک کلمه یا کاراکتر را با کلمه یا کاراکتر دیگری در رشته جایگزین کنیم، از متد replace()
استفاده میکنیم.
این تابع روی رشتهی مورد نظر صدا زده شده و دو ورودی میگیرد:
- ورودی اول: مقدار قدیمی
- ورودی دوم: مقدار جدید و جایگزین
در قطعه کد زیر تمام حروف e را به o تبدیل کردهایم.
txt = "Hello Dear SabzDanesh.com Users!"
print( txt.replace('e', 'o') )
# Hollo Doar SabzDanosh.com Usors!
اگر به جای کاراکترها یک کلمه یا عبارت هم جایگزین کنیم، عملیات جایگزینی بدون هیچ مشکلی اجرا خواهد شد.
txt = "Hello Dear SabzDanesh.com Users!"
print( txt.replace('Users', 'Admins') )
# Hello Dear SabzDanesh.com Admins!
تبدیل لیست به رشته در پایتون
اگر یک لیست از رشتهها یا کلمات دارید که میخواهید با اتصال آنها یک رشته ایجاد کنید، میبایست از متد join()
استفاده کرد.
تابع join()
یک ورودی میگیرد که میبایست از نوع تکرارگر در پایتون باشد. لیستها و تاپلها نیز نوعی تکرارگر (iterable) هستند.
این تابع تک تک اعضای تکرارگری که به عنوان ورودی گرفته شده را با رشته یا کاراکتری که روی آن صدا زده شده به هم وصل میکند.
بگذارید با یک مثال درک موضوع را راحتتر کنم. فرض کنید لیستی از اسامی افراد داریم که میخواهیم تمام آنها را درون یک رشته قرار داده و آنها را به کمک ,
از یکدیگر جدا کنیم. برای این کار خط دوم کد زیر را اجرا میکنیم.
lst = ["omid", "negar", "sara", "arian"]
string = ','.join( lst )
print(string)
# omid,negar,sara,arian
جمعبندی: رشته در پایتون
در این مقاله به آموزش جامع رشته در پایتون پرداختیم. با نحوه تعریف رشته آشنا شده و کار با رشتهها در پایتون را دیدیم. حداقل 13 تابع پرکاربرد را شناخته و نحوه استفاده از آنها را آموختیم.
دانستیم که با استفاده از عملگر + بین دو رشته، میتوان آنها را به یکدیگر متصل کرد. با تابع split()
عملیات تبدیل رشته به لیست در پایتون را انجام داده و برای تبدیل لیست به رشته در پایتون از متد join()
استفاده کردیم.
به نظر شما چه تابع دیگری در کار با رشتههای پایتون پرکاربرد است که ما معرفی نکردهایم ؟ لطفاً آن را از قسمت دیدگاهها با همه به اشتراک بگذارید.
این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش پایتون
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
با سلام
من میخواستم یک متن یا اسم اینگلیسی از کاربر بگیرم و بگم چند تا حروف صدا دار دارد میتوانید کمک کنید
سلام
از دوره رایگان پایتون جلسات حلقه و جلسه گرفتن ورودی رو ببینید. میتونید بعد از گرفتن ورودی، با یک حلقه روی حروف اون حرکت کنید و هر حرفی که صدادار بود مقدار یک شمارنده رو افزایش بدید.
سلام خسته نباشید لطفا راهنمایی کنید
من میخوام یک داده رو از استرینگ خارج کنم
باید چه کدی بنویسم؟؟؟
سلام
خیلی راهها داره! بستگی به داده، رشته و حتی تغییرات احتمالیشون داره. مثلاً اگه همیشه داده موردنظرتون از یه اندیس خاص شروع و در یه جا تموم میشه، از دسترسی اندیس استفاده کنید.
اگه یه ساختار خاص داره، از regexها. متناسب با دیتاهاتون باید اقدام کنید.
سلام میخواستم دامنه
Python.org از این سایت استخراج کنم بو وسیله رشته 3813-wnloads/release/pythonhttps://www.python.org/do
سلام
اگه کلمه خاصی مدنظرتونه میتونید از regular expression ها استفاده کنید. اگه ساختار مدنظرتونه شاید split کردن با کاراکتر مناسب و تشخیص کلمه نهایی راهحل مناسبی باشه.
سلام خسته نباشید من میخوام رشته هایی که وارد کردم و ذخیره کردم زمانی که تبدیل به برنامه میشه موقعی که رشته ها تموم میشه دوباره تکرار بشن
سلام
منظورتون از تبدیل به برنامه شدن چیه؟ شاید ساختار حلقه برای تکرار بتونه کمکتون کنه.
سلام من میخام دو رشته رو باهم مقایسه کنم و تعداد حروف متفاوت ببینم یا استفاده از تابع
سلام
اگه تک به تک قراره مقایسه بشن، برای حرکت روی رشتهها از حلقه استفاده کنید و دونه دونه مقایسه کنید.
اگر کلی هست، پیشنهاد میکنیم سعی کنید به شکل لیستی از حروف ببینیدشون تا مسئله براتون واضحتر بشه.
مسئله:برنامه ای بنویسید که رشته ای را گرفته،کاراکترهای اندیس فرد آن را نمایش دهد. چجوری اینو میتونم حل کنم؟!
میتونید از حلقهها و یک شرط استفاده کنید. یه روش حرفهایترش ممکنه بحث comprehension باشه که در دوره رایگان مکمل پایتون گفته شده.
میتونید این رو حل کنید به طوری که از لیست استفاده نشه
ببک یک جمله را گرفته، کلمات آن را جدا کرده و زیر یکدیگر چاپ کند. جملات شامل کلماتی هستند که فقط با یک فاصله از یکدیگر جدا شدهاند و در نهایت به یک نقطه (.) ختم میشوند.
سلام
میتونید از یه حلقه و ساختاری شرطی درون اون استفاده کنید.
سلام
میخایم از کاربر ی رشته بگیرم که این کاربر فقط بتونه اعداد دلخواه و از کاراکترهای که من میخام رو بتونه برا جدا کردنش استفاده کنه بعد من بیام اونا رو split کنم و و…
سلام
روش خاصی نداره! در یه نگاه کلی باید مقدار ورودی رو بررسی کنید که فقط با کاراکترهای مجازتون باشه؛ اگه نبود خطا بدید یا دوباره ورودی بگیرید.
اگه بخواید یکم حرفهایتر عمل کنید، برای این بررسی میتونید از regexها یا عبارات باقاعده هم استفاده کنید.
سلام برای وصل کردن حروف که تو جملمون جدان باید از چه متدی استفاده کرد تو پایتون
سلام
اگه منظورتون اتصال دو تا رشته است که میتونید از عملگر + استفاده کنید.
سلام خسته نباشید ببخشید برای حذف کل space ها چه در وسط چه در ابتدا و انتها از چی استفاده میشه که بتونه space رو در همه ی قسمت ها حذف بکنه
سلام
میتونید از متد replace استفاده کنید تا همهی spaceها با یه رشتهٔ خالی جایگزین بشن.
سلام ببخشید من میخوام وقتی یک رشته رو وارد میکنیم اگر سایزش از یک مقداری کمتر باشه رو قبول کنه چیکار با کرد؟(پایتون)
سلام
میتونید از یک حلقه بی نهایت while استفاده کنید و یه شرط بذارید که اگه طول رشته (
len(string)
) بیشتر بود، مجدد از کاربر بخواد مقداری رو وارد کنه. ابتدا جلسه شرطها رو ببینید و بعدش جلسه حلقهها قسمت while.سلام
من می خوام یک رشته عدد به برنامه بدم مثل زیر:
1,2,3,12,252,1325,..
بعد بتونم اعداد را از این برنامه به صورت زیر استخراج کنم:
1
2
3
12
252
1325
اینکار چطوری قابل انجامه
سلام
شما میتونی از متد
split()
برای جدا کردن و از تابعint()
برای تبدیل اینها از رشته به عدد استفاده کنید.با سلام
ممنون از پاسخ شما
چطور می توانم تشخیص دهم کاراکتر وارد شده عدد یا حرف است؟
سلام
میتونید از متد
isdigit()
روی رشته موردنظرتون استفاده کنید. خروجیش True یا False هست.سلام ممنون بابت آموزشتون
یه سوال دارم
برنامهای بنویسید که یک رشته را خوانده، سپس دو عدد را میخواند و از رشته ورودی از مکان عدد اول
به تعداد عدد دوم را حذف می کند(یعنی، بخشی از رشته را حذف مینماید)
ورودی : “hello world “
اعداد دریافتی 2 و 4
خروجی : helorld
یعنی از متن از ایندکس 2 تا ایندکس 6 رو حذف کرده. یعنی از 2 4 تا جلو رفته و اون فاصله رو حذف کرده. لطفا راهنمایی کنید
سلام تونستم بنویسم
ممنون از سایتتون و مهندسان عزیز
سلام
برنامه ای بنویسید که دو رشته را دریافت کند و چک کند که رشته دومی در رشته اولی وجود دارد یا نه؟(پایتون)
میشه کمک کنید؟
سلام
متناسب با محدودیتهایی که ممکنه داشته باشید میتونید جمله دوم رو در اولی جستجو کنید. یه راه دیگه هم اینه که کلمه به کلمه پیش برید. یعنی از جایی که کلمه اول رشته دومتون شروع میشه، دونه دونه کلمات رو چک کنید تا ببینید رشته دوم دقیقا در رشته اول تکرار شده یا خیر.
سلام
برنامه ای بنویسید که یک متن و یک حرف از ورودی دریافت کرده و چک کند که حرف مورد نظر در متن وجود دارد؟ در صورت وجود داشتن تعداد تکرار آن را نمایش دهد.
میشه راهنمایی کنید؟
سلام
برای بررسی وجود کاراکتر در متن میتونید از in استفاده کنید. توی جلسه شرطها مثالش رو بررسی کردیم.
برای شمارش هم از
count()
کمک بگیرید.با سلام و خداقوت ضمن تشکر از مطالب مفید سایتتون
امکانش هست یک راهنمایی برای نوشتن برنامه زیر کنین؟
برنامه ای نویسید که یک رشته را گرفته و به صورت سه کاراکتر سه کاراکتر آن را در یک لیست ذخیره کند و لیست را چاپ کند.
سلام
میتونید از حلقهها کمک بگیرید. با یه شمارنده تا سه بشمارید، زیررشته رو جدا کنید و درون لیست ذخیره کنید. فقط با یه شرط باید چک کنید اگه شمارنده به ۳ رسید، صفرش کنید و زیررشته رو اضافه کنید.
با سلام وخسته نباشید
لطفا راهنمایی کنید ؛ فایلی داریم که درآن اسم وشماره تلفن وموبایل وآدرس چندین شخص میباشد برای اینکه فقط ما مشخصات یک فردروجداگانه فراخوانی کنیم ازچه دستوری میتوانیم استفاده کنیم .
با تشکر عارف
سلام
فایلتون txt ساده هست؟ یه راه حل اینه که شما همه دیتاها رو به دیکشنری تبدیل کنید و بعدش به راحتی اطلاعات فرد مورد نظر (کلید دیکشنری) رو فراخوانی کنید.
اگه فایل شما ساختار خاصی داره یا اکسل و csv و … هست، میتونید اسم رو جستجو کنید. آموزش کار با فایل و اکسل هم در سایت هست که ایده بگیرید.
سلام میشه این برنامه رو بنویسید؟ زمانم خیلی کمه ممنون میشم
برنامهای بنویسید که رشتهای را از ورودی بخواند و اولین تکرار در حروف آن را با $ جایگزین کند و اگر حرف تکراری نداشت خودش را چاپ کند.
سلام
یه راه ساده اینه که با حلقهها و count تعداد تکرار هر حرف رو بررسی کنید. اگه بیشتر از یکی بود، دومیش رو replace کنید.
سلام ضمن تشکر از سایت خوبتون. من برای پیدا کردن بزرگترین طول رشته کد زیر را نوشتم اما چطور میتونم تابع len را با max ترکیب کنم
سلام
اول از همه پیشنهاد میکنم از کلمات کلیدی پایتون برای نامگذاری متغیرهاتون استفاده نکنید. (list در کد شما)
برای کاری که میخواید میتونید از پارامتر key در تابع max استفاده کنید؛ مثل
max(lst, key=len)
.پارامتر key تابع سنجش رو مشخص میکنه.
با سلام و احترام و خداقوت مطالب بسیار آموزنده است
مشکلی که دارم این هست که در پایتون وقتی به عنوان ورودی دو تا عدد دریافت می کنم و نتیجه را به صورت جمع ، تفریق و … نشان می دهد ( تعدادش می تواند کم یا زیاد باشد ) می خواهم در لحظه دریافت ورودی و در نهایت خروجی اعداد که کاربر وارد می کند یا در خرجی نمایش می دهد :
به صورتی دهگان صدگان هزارگان جداکننده داشته باشد تا خوانایی بهتری داشته باشد .
مثال : در حال حاضر نمایش ( 123456789) ، حالت مد نظر و زیباتر ( 123,456,789)
ضمنا در زمان تعریف اعداد به صورت float تعریف شده اند .
لطفا راهنمایی نمایید . باتشکر ، پیشاپیش از همکاری شما کمال تشکر را دارم
سلام
میتونید از ساختار
f'{value:,}'
استفاده کنید. value متغیر مقداره.ممنون از راهنمایی شما دوست بزرگوار
لطفا بیشتر توضیح دهید ؟!
تازه کار هستم
آموزش فرمت دهی رشته در پایتون رو که در سایت موجود هست ببینید. این یه ساختار f string برای فرمتدهی رشته متنیه که میتونید ازش استفاده کنید.
اگر در جاییش سؤالی داشتید مجدد بپرسید تا بیشتر راهنماییتون کنیم.
سلام بسیار مطالب مفید و اموزنده ایی بود فقط من از شما یه سوال داشتم اگر بخوایم مثلا کاری کنیم که پایتون حروف بزرگ و کوچک رو یکی حساب کنه باید چیکار کنیم ؟ برای مثال من مینویسم if input == yes مثلا فلان کارو بکن ولی الان مشکلم اینه مثلا اگر نوشته بشه YES (به جای yes)دیگه کد عمل نمیکنه باید چیکار کنم ؟؟؟
سلام
میتونید روی رشتهای که ورودی گرفتید متد
lower()
رو صدا بزنید. اینطوری مطمئنید مقدارش با حروف کوچک نوشته شده.یه سوال دارم. اگر بخوام متن رو دریافت کنم و بگم اگر در متن X، فلان کلمه بود true را چاپ کن . چجوری بنویسم .
کافیه از یه شرط ساده با کلمه کلیدی in استفاده کنید؛ مثل
if w in string
.ممنون از شما
مرسی ازتون خیلی عالی و واضح
سلام وقتتون بخیر.
من قبل از آشنایی با این سایت، دوره های مختلف دیگه ای رو گذروندم ولی هیچ کدومشون به اندازه سایت شما مفاهیم رو قابل فهم منتقل نمی کرد.
واقعا ازتون ممنونم که این بستر رو برامون فراهم کردین. اگر دوره های یادگیری ماشین و یا عمیق هم اضافه کنین که عالی میشه.
مرسی
خیلی خوشحالم که تلاشمون برای انتقال مفاهیم نتیجه داده. 🙂 ممنونم بابت لطفتون.
حتماً سعی میکنیم با راهاندازی بخش آموزش جدید روی سایت، کم کم از مهارتهای سایر دوستانمون هم برای دورههای جدیدتر و پیشرفتهتر کمک بگیریم تا آموزشهای کاربردیای منتشر بشه.
سلام .تشکر از شما و سایت خوبتون
یک سوال داشتم اگه لیستی از اسم ها رو داشته باشیم بخوایم بیشترین و کمترین اسمی ک دارای کاراکتر هست رو نشون بدیم باید از چه دستوری استفاده کنیم؟
سلام
در سادهترین حالت میتونید از یه حلقه برای پیدا کردن کوتاهترین و طولانیترین رشته استفاده کنید. در هر چرخش حلقه، اگه رشتهای کوتاهتر از کوتاهترین تا اون لحظه بود، نگهش دارید؛ همینطور برای طولانیترین.
ترکیب تابع
max()
وlen()
روی اعضای لیست هم میتونه کاربردی باشه.سلام.ممنون از سایت عالیتون. من توی idle shell که میرم و new file رو میزنم و دستور رو مینویسم، میتونم اجراش کنم یا نه؟ مثلا میگم اگه عدد 7 بود این متن رو تایپ کن. بعد میتونم اجراش کنم که وقتی عدد 7 رو میزنم اون متن رو برام بنویسه؟
سلام
بله؛ شما میتونید اون رو با فرمت
.py
ذخیره و اجراش کنید. در همون idle هم اگه F5 بزنید اجرا میشه. جلسه اجرای کد پایتون که اوایل دوره رایگان هست رو ببنید تا با همه روشهای اجرای برنامه آشنا بشید.سلام, عالی همه چی عالی
از همه چی اومده دست شما درد نکنه خیلی خوب بود
خدا بهتون خیر و قوت بده
خیلی ممنون
سلام حسن عزیز
خیلی خوشحالیم که آموزشها رو استفاده میکنید و اونها مفید میدونید. ممنون برای انرژی خوبتون 🙂
باسلام وقت بخیر
مرسی از مطالب مفید و پرکاربرد شما ک کمک بزرگی به من در نوشتن برنامه هام کرد
بنده درگیر کد نویسیه یک ابزار برای تولید کلمه، با داده مشخص شده هستم ، یکسری سوالاتی داشتم ممنون میشم توضیح بدین
البته اینجا فکر کنم جا نباشه برا توضیح پروژه ، بنابراین ممنونم اگر در واتساپ مقدور است یه صحبتی داشته باشیم
*********** 💛💛💛💛
سلام
خیلی خوشحالیم که آموزشهامون براتون کاربردی بوده.
برای سؤالاتتون از قسمت فرم تماس با ما برامون ارسال کنید و مجدد ایمیل و شمارهتون رو ثبت کنید (از داخل دیدگاه حذف شد که عمومی نباشه) تا بتونیم بهتر راهنماییتون کنیم.
سلام و درود بر شما عزیزان
خیلی ممنونم بابت اشتراک گذاری مطالب بابت ( ناب بودن مطالب و گرم بودن نحوه آموزش و خوانا بودن کد و سادگی در نحوه آموزش و غیره . . . )
امیدوارم همه انسانهای خوب و مثبت به درجات بالای علم و موفقیت و تندرستی بِرِسَند
سلام علی عزیز
ممنونم برای پیام فوقالعادت
خوشحالم که از آموزشهامون برای افزایش مهارتهاتون استفاده میکنی و اونها رو مفید میدونی.
این پیامت انرژی ما رو حداقل برای یه ماه شارژ کرد! 🙂 شاد و موفق باشی.
واقعا مطالبتون عالیههههه
ممنون
خیلی خوشحالم که آموزشهامون براتون مفیده.
حدود یک ماه دیگه دوره مکمل همین دوره که اونم رایگان هست منتشر میشه. پیشنهاد میکنم حتماً بهمون سر بزنید. 😉
سلام خسته نباشید
میخواستم ببینم چجوری میشه تشخیض داد یک رشته آینه ای هست یا نه
از متد خاصی باید پیروی کنم؟
سلام
تابع تعریفشدهای در پایتون برای این کار وجود نداره. اما میتونید به روشهای مختلفی اون رو پیاده کنید. مثلاً از حلقهها استفاده کنید یا رشته رو با برعکسش مقایسه کنید.
دم شما گرم🙌
توضیحات خیلی خوب بود
ممنونم بابت انرژی خوبت دانیال عزیز
موفق باشی
سلام چطور میشه رشته مورد نظر خودمون رو وسط صفحه چاپ کنیم
سلام
تابع خاصی برای چاپ متن در وسط صفحه نداریم. میتونید با تابع center() مشخص کنید که متنتون در یک فضای مثلا 30 کاراکتری در وسط چاپ بشه. با توجه به اندازه صفحه یا محیط کنسول میتونید این تعداد رو تغییر بدید.
سلام وقت بخیر
با for می تونیم یک list رو به str تبدیل کنیم؟
سلام
چرا از
join()
استفاده نمیکنید؟اگر اجباراً باید از حلقه استفاده کنید، یک for روی لیست بزنید و هر عضو رو با اپراتور
+
به انتهای متغیر رشته متصل کنید.سلام وقت بخیر
چطور میتونیم یک رشته طولانی چند خطی رو به عنوان ورودی از کاربر بگیریم؟
سلام
آموزش گرفتن ورودی با پایتون رو ببینید.
پیشنهادم اینه که داخل یک حلقه، تا زمانی که کاربر یک کاراکتر خاص رو وارد کرد ورودی بگیرید و داخل لیست قرارش بدید.
از کتابخونه sys تابع
sys.stdin.readlines()
رو اگه صدا بزنید هم کار مشابهی میکنه. فقط به عنوان کاراکتر پایانی بایدctrl+z
توی ویندوز وctrl+d
در لینوکس وارد بشه.سلام وقتتون بخیر ممنون از توضیحاتتون عالی بود
اگر بخواهیم یک رشته در دیتاست بخوانیم که حداکثر چهار تا تغییر داشته باشد نمیدونیم رشته چی هست بخواهیم رشته پیدا کنیم که نسبت به رشته واقعی چقدر تفاوت داردباید چه کار کنیم ممنون میشم راهنمایی کنید
سلام
اول از همه باید تفاوت رو معنی کنیم! اینکه حروف اولی در دومی باشه کافیه یا باید جایگاه حروف هم درست باشند؟ مثلاً sabz با sbaz در حالت دوم دو تا اختلاف دارند.
اگر اینطوریه میتونید با حلقه روی رشته متنی اول یا طول اون حرکت کنید و حروف رو دو به دو چک کنید. (شبیه
s1[i]==s2[i]
)سوال من این هست که نمیدانیم تفاوت در کجا هست 30 تاکه طول رشته هم 1000 هست ما دنبال رشته 30تایی هستیم که حداکثر 4 تا تغییر دارد که تغییرات هم نمیدونیم کجاست
متأسفانه الان ایدهای برای حلش ندارم! در مورد python regex جستجو کنید، احتمالا بتونه کمکتون کنه تا تفاوت رو در زیر رشتههای مختلف بررسی کنید.
موفق باشید.
اگه مثل نمونه ای که با استفاده از تابع join نوشتیم بخوایم به این صورت بنویسم چی ؟
a.b.c.
یعنی علامتی که قرار میدیم قبل از حرف هم باشه راهنمایی کنید
یک راه خیلی ساده که افزودن کاراکتر به ابتدا یا انتهای نتیجه نهایی هست.
ولی یک راه حرفهایتر استفاده از فرمت دهی رشته در پایتون هست که با روش f برای افزودن علامت به ابتدای رشته لیست چیزی شبیه زیر رو میتونیم تعریف کنیم:
موفق باشید.
بسیار مفید و عالی توضیح داده بودید. رنگبندی و قالب بندی بسیار خوب صفحه شما کمک میکنه مطالب راحت تر فهمیده شوند و به چشم و مغز کمتر فشار بیاد. یک نمونه خوب برای انتشار مطالب آموزشی.
کاش برای فونت کدها و واژه های انگلیسی، از فونت خواناتری استفاده کنید.
درود حامد عزیز
خوشحالم که براتون مفید بوده و رضایتتون جلب شده.
بله درست میفرمایید؛ در حال اعمال تغییراتی روی سیستم سایت هستیم به همین دلیل کدها با فونت فارسی نمایش داده میشه. طی یک هفته آینده این مورد اصلاح میشه.
بسیار توضیح خوب و واضحی بود در ضمن ممنون بابت اشتراک گزاری منبع انگلیسی
خوشحالم که براتون مفید بوده و ممنون از انرژیای که به ما میدید!
موفق باشید.