how to return last condition if other 2 not met?
MRAB
python at mrabarnett.plus.com
Wed May 23 20:55:45 EDT 2018
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)
More information about the Python-list
mailing list