题目: 传入两个字符串s,n,在字符串s中查找字符串n最后出现的位置,并输出。如果完全找不到第字符串n,输出 -1:
方案一:
def find_last(s,n):if s.find(n) == -1:
return -1
else:
a = s.find(n) #在传入的两字符串中,定位首次出现字符串2的位置,并赋值给a
while True: #始终循环
a = s.find(n,a+1) #把字符串的下一个位置值赋值给a
if s.find(n,a+1) == -1: #如果找不到字符串2的下一个位置,中断循环跳出,并不给a赋值
break
return a #输出a的值
print find_last('aaaa', 'a')
以上我的这个方案首先判断是否字符串n出现过;然后用循环持续查找字符串n的位置,但只输出最后一个。自我感觉完美,结果课程中给的答案更简单。
方案二:
def find_last(s,n):
last_pos = -1 #要输出的值可能为-1
while True:
pos = s.find(n,last_pos+1) #如果能找到字符串n,在第1次循环时,正好从位置0找起
if pos == -1:
return last_pos
last_pos = pos
print find_last('aaaa', 'a')
这个方案,把找到n的位置初识赋值-1,在while循环开始时,+1正好使查找正好从字符串s的首位字符开始,设计的确巧妙!
不太明白的是, if语句中没有break, 这个循环是怎样跳出的?