私は自分の好奇心の一部として自分でPythonを学んでいると言って、この前置きをさせてください。また、公開されている無料のオンラインコンピュータサイエンスコースを勧められたので、用語を間違って使用している場合はお詫びします。
私は以前にこの特定の問題に関する質問を見たことがありますが、それらとは別の質問があり、それらのスレッドをハイジャックしたくありませんでした。質問:
「サブストリングは、別のストリング内の文字の連続したシーケンスです。同じサブストリングは、同じストリング内で複数回発生する可能性があります。たとえば、「assesses」にはサブストリング「sses」が2回あり、「trans-Panamanianbanana」にはサブストリングがあります。 「6回。2行の入力を受け取るプログラムを作成します。最初の針と2番目の干し草の山を呼び出します。その針が干し草の山の部分文字列として出現する回数を出力します。」
私の解決策(これは機能します)は次のとおりです:
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)
お気づきの方もいらっしゃると思いますが、私は2つの別々の機会に、場所が0未満の場合は中断するというifステートメントを作成しました。これを「グローバル」条件にして、繰り返しコードがないようにする方法はありますか?プログラムの高度化に伴い効率が最優先されると思いますので、今は良い練習をしようとしています。
Pythonの達人はこのコードをどのように最適化するのでしょうか、それとも私はあまりにも気まぐれですか?