OSDir


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

how to return last condition if other 2 not met?


On Wednesday, May 23, 2018 at 8:55:59 PM UTC-4, MRAB wrote:
> On 2018-05-24 00:57, asa32sd23 at gmail.com wrote:
> > i want to check/return for 3 conditions, it loops shortest str and finds diff in other
> > 1. if difference is immediate before end of range, return index, exit
> > 2. if string length is same and index loop is done, return 'identical'
> > 3. if neither of above is found. it means the short loop ended and every letter was same so next letter of longer str is the diff, just return idex+1
> > but my last print statement always print. not sure how to end this
> > 
> > [code]
> > str1= "kitti cat"
> > str2= 'kitti catt'
> > lenStr1= len(str1)
> > lenStr2= len(str2)
> > 
> > #find shortest str and loop range with this one
> > if lenStr1 >= lenStr2:
> >      str= str2
> > else:
> >      str= str1
> >          
> > # loop each character of shortest string, compare to same index of longer string
> > # if any difference, exit and return index of difference
> > for idx in range(len(str)):
> >      a= str1[idx]
> >      b= str2[idx]
> >      if a != b:      #immeditely exit, since non-match found
> >          print(idx)
> >          break
> >      else:
> >         if len(str1) == len(str2) and idx == len(str1)-1: #if no difference print 'identical'
> >              print("identical")
> >              break
> > 
> > print(idx+1)
> > [/code]
> > 
> The 'for' loop (and also the 'while' loop) can have an 'else' clause, 
> which is run if it didn't break out of the loop:
> 
> for idx in range(len(str)):
>      # body of loop
>      ...
> else:
>      # didn't break out of the loop
>      print(idx+1)
---------------------

thats what it was... thank you!! i was stuck in the same thought process and couldnt see it