请允许我先说一下我自己学习 Python 作为我自己好奇心的一部分,并且我被推荐了一个免费的在线计算机科学课程,该课程是公开的,所以如果我使用的术语不正确,我深表歉意。
我之前在这里看到过关于这个特定问题的问题 - 但我有一个单独的问题,不想劫持这些线程。问题:
“一个子字符串是另一个字符串中的任何连续字符序列。相同的子字符串可能在同一个字符串中出现多次:例如“assesses”有子字符串“sses”2次,而“trans-Panamanianbanana”有子字符串“ “6 次。编写一个接受两行输入的程序,我们称第一个针和第二个干草堆。打印该针作为干草堆的子字符串出现的次数。”
我的解决方案(有效)是:
first = str(input())
second = str(input())
count = 0
location = 0
while location < len(second):
if location == 0:
location = str.find(second,first,0)
if location < 0:
break
count = count + 1
location = str.find(second,first,location +1)
if location < 0:
break
count = count + 1
print(count)
如果你注意到,我在两个不同的场合做了 if 语句,如果位置小于 0,则中断。有没有办法让它成为“全局”条件,所以我没有重复的代码?我想随着程序复杂性的提高,效率变得至关重要,所以我现在正在努力发展良好的做法。
python 大师将如何优化这段代码,还是我太挑剔了?