私はPythonの初心者です(そして一般的なプログラミング)。私は試行錯誤して学び、問題にぶつかってきました。forループの使用時のPython変数の範囲
実装しようとしているコードは、アルファベット順の最長部分文字列を取得することです。つまり、 ' abcdeasdccjh ' を入力するための
- で、出力が入力するための 'ABCDE'
- なければならない 'をabbcdabcd'、出力は ' abbcd' でなければなりません
私が書いたコードは以下の通りです:
s = 'abbcdabcd'
sub = ''
temp = ''
for index in range(len(s)):
temp = s[index]
for i in range(len(s[index:])):
if index+i+1 < len(s):
if s[index+i+1] < s[index+i]:
break
else:
temp += s[index+i+1]
if len(temp) >= len(sub):
sub == temp
print('final ',sub)
これはこれを実装する最適なロジックではないかもしれませんが、動作しているようです。問題は、最後のprint文がサブ変数の初期値を出力し続けることです。どのように私はこれを克服するのですか?
PS:上記の目的のために、私が使用できるより良いアルゴリズムがあれば、それをコメントで分かち合いましょう。しかし、それは今私にとって二次的なことです。
最後のif文で比較しています: 'sub == temp'は' sub = temp'であるべきですか? – Secespitus
うん!私は気付かなかった。..ありがとう! – AntonyP
問題ありません。私たちの最善を尽くす。時間と再:Dハッピーコーディング;) – Secespitus