2017-06-27 10 views
2

私は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:上記の目的のために、私が使用できるより良いアルゴリズムがあれば、それをコメントで分かち合いましょう。しかし、それは今私にとって二次的なことです。

+1

最後のif文で比較しています: 'sub == temp'は' sub = temp'であるべきですか? – Secespitus

+0

うん!私は気付かなかった。..ありがとう! – AntonyP

+0

問題ありません。私たちの最善を尽くす。時間と再:Dハッピーコーディング;) – Secespitus

答えて

2

あなたは

sub == temp 

は "==" 演算子は、NOT割り当てのために、比較のためのものであることを覚えておいてくださいと言っています。あなたは割り当ての代わりにサブとtempを比較しています。 Use

sub = temp 
+0

ああ..あなたは正しい!私はそんなばかだ!ありがとうたくさん:) – AntonyP

+0

あなたはばかではありません。あなたは学習者です。そして、あなたは、Stackoverflowの良いフォーマットでよく定義された質問を書くことができました。それはあまりにも頻繁に欠場するものです。 – Matthias

関連する問題