【发布时间】:2012-07-29 06:20:56
【问题描述】:
请允许我先说我正在自学 Python 作为我自己好奇心的一部分,并且我被推荐了一个免费的在线计算机科学课程,该课程是公开的,所以如果我使用的术语不正确,我深表歉意。
我之前在这里看到过关于这个特定问题的问题 - 但我有一个单独的问题来自他们并且不想劫持这些线程。问题:
"一个子字符串是另一个字符串中任意连续的字符序列。同一个子字符串在同一个字符串中可能出现多次:例如,“assesses”有 2 次子字符串“sses”,而“trans-Panamanianbanana”有子字符串 "an" 6 次。编写一个接受两行输入的程序,我们调用第一个 needle 和第二个 haystack。打印该 needle 出现的次数作为 haystack 的子字符串。"
我的解决方案(有效)是:
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 大师会如何优化这段代码,还是我太挑剔了?
【问题讨论】:
-
在两个单独的路口断掉没有什么问题。
-
话虽如此,一个完整的循环退出的简单方法是将代码封装在一个函数中并使用return。
标签: python variables conditional break conditional-statements