«بسم الله الرحمن الرحیم»
یکی ازکاربردهای پردازش رشته را در مسئله زیر بیان می کنیم.
فرض کنید یک زمان به شکل ثانیه:دقیقه :ساعت را به شکل یک رشته در پایگاه داده ذخیره می کنید . حال می خواهید برای ذخیره کردن وفراخوانی این رشته یا چندین رشته پردازش های زیر راانجام دهید
-------------------------
str_time="13:14:20";یک رشته توسط کاربر وارد می شود-
# ابتدا ببینیم فرمت وارد شده برای زمان می باشد یا نه.
ابتدا طولش رابررسی می کنیم .اگر زمان به صورت 00:00:00 وارد شود دارای طول 8 می باشد
بررسی می شود find فرمت درصورتی درست است که دارای : باشد که با تابع
ودرمکان 3 و6 دارای : می باشد
if(len(str_time) ==8 and str_time.find(":")!=-1 and str_time[3]==":" and str_time[6]==":" --- #operation else: --- print("not correct"))
# بررسی ساعت ودقیقه وثانیه که درست وارد شده است یا نه
رشته جدا می شود ودر یک لیست ذخیره می شود split توسط تابع
عنصراول=ساعت ،عنصردوم=دقیقه ،عنصرسوم =ثانیه
list_time=str_time.split(":"); #خروجی list_time=["13","14","20"]
حال گزینه اول را بررسی می کنیم آیاساعت ،دقیقه ،ثانیه درست وارد شده است .
if(int(list_time[0])<25 and int(list_time[1])<61 and int(list_time[2])<61):
#save database
else:
print("زمان به طور صحیح وارد نشده است ")
بعدازاین که زمان را به طور صحیح وارد کردیم آن را در پایگاه داده ذخیره می کنیم
------------------------------------------------------------------------
حال چطور زمان فراخوانی شده از پایگاه داده را باهم جمع کنیم. مثلا مجموع ساعت کاری یک فرد دریک هفته
روی دورشته نمی توان عملیات جمع یا تفریف و... را انجام داد اما پردازش رشته این کار انجام می شود.
str_time1="13:14:15" # ساعت فراخوانی ازپایگاه داده که به صورت رشته می باشد
str_time2="15:14:15" # ساعت فراخوانی دوم ازپایگاه داده که به صورت رشته می باشد
توابع بالا را ابتدا روی هر دو ساعت اجرا می کنیم سپس عملیات جمع یا تفریق راروی آن انجام می دهیم
#چون که فرض کردیم دوساعت از پایگاه داده استخراج شده است پس دوساعت درست می باشد حال به سراغ جمع دوساعت می رویم
list_time1=str_time1.split(":") #خروجی list_time=["13","14","50" list_time2=str_time2.split(":") #خروجی list_time=["15","14","20"] for(i in range(0,len(list_time1)): ------temp=list_time1[i].Split(':')//temp[0] =hour ;temp[1]:minute;temp[2]=second ------hour+= int(temp[0]) ------ min += int(temp[1]) ------sec += inte(temp[2]) ------while (min>=60): #اگر دقیقه بزرگتر از 60 شد به ساعت 1 اضافه شود ------------hour += 1 ------------min -= 60 ------while(sec>=60) : #اگرثانیه بزرگتر از60 شدبه دقیقه 1 اضافه شود ------------min += 1 ------------sec -= 60] str_sum =str(hour) + ":" + str(min) + ":" + str(sec)
دومین مسئله که می توان برای پردازش رشته انجام شود به شرح زیر است -
فرض کنید دریک برنامه ساعت ورود وخروج یک شخص را دارید ومی خواهید مجموع ساعت ورود وخروج را دریک هفته یا هرچند روز محاسبه کنید
الگوریتم:
ابتدا ساعت خروج وساعت ورود هرروز ازهم کم می کنیم سپس حاصل هرروز را درکل باهم جمع می کنیم .جمع دوساعت با چند ساعت فرقی ندارد و در بالا توضیح داده شده است اما به تفریق یا کم کردن دوساعت پرداخت می شود
list_time1=str_time1.split(":") #خروجی list_time=["13","14","50"] به عنوان ساعت ورو list_time2=str_time2.split(":") #خروجی list_time=["15","14","20"] به عنوان ساعت خروج for(i in range(0,len(list_time1)) ---if (int(list_time[i]) >= int(list_time1[i]) ------cal = int(time2[i]) - int(time1[i]) ------str_cal = str(cal) + ":" + str_cal ---else #result neg ------ #convert int to str and reverse ------ temp = int(time2[i]) + 60 ------time2[i] =int(temp) #----- ------temp = int(time2[i -1]) - 1 ------time2[i - 1] = str(temp) #----- ------cal = int(time2[i]) - int(time1[i]); ------str_cal = str(cal)+ ":" + str_cal; str_time=str_cal #تفاضل ساعت ورود وخروجد
تفاضل ساعت ورود وخروج دریک روز محاسبه شده است برای محاسبه دریک هفته این تفاضل هارا باید باهم جمع شود که مجموع در بالا توضیح داده شده است
موفق باشید
به امید خدا