インデントが正しくなく、「メソッド」の使用方法がクラスの使用方法とは異なるため、なぜここにクラスを配置するのかわかりません。2つのコードがあります。1つはクラスを使用しており、もう1つはクラスを使用していません。
まず、あなたが本当にクラスを使いたいと仮定します(そして私はあなたの問題にこれが最善だと思います):
class Generator:
words = "" # you should put words and letters here. this will be attribute and both get_words() and sort_words() can see this
letters = []
def get_words(self):
words = raw_input("input the letters\n")
letters = []
# i = 0 : no effect. it just local variable with method get_words
def sort_words(self):
i = 0 # must be assign value before use
for word in words:
letters.append(word)
print letters[i]
i = i + 1
クラスを使用する場合、各メソッドにはキーワードが必要であることに注意してくださいself
。これがテストです:
generator = Generator()
generator.get_words()
generator.sort_words()
これが正常な機能である場合。いくつかの理由であなたの問題はうまくいきません:
1)単語や文字はグローバルとして宣言されない場合があります。したがって、get_words()でこれらの変数に値を割り当てると、sort_words()はそれを認識しません。コンパイルしてもエラーが発生しない場合は、何らかの理由で、これらの値をグローバルでどこかに割り当てています(名前を入力し、関数ではなく、別の場所に値を割り当てます)。ただし、その場合、get_words()を使用しても、それらのグローバルは更新されません。したがって、使用する「単語」はまだ更新されていないため、表示されている「単語の印刷」はありません。
2)i変数:使用する前に値を割り当てる必要があります。
だから、これが私が修正したコードです:
def get_words():
global words
global letters
words = raw_input("input the letters\n")
letters = []
# global i=0 : you can do that, but SHOULDN'T
def sort_words():
i = 0 # i must be assign value before use
for word in words:
letters.append(word)
print letters[i]
i = i + 1
テストは次のようになります。
get_words()
sort_words()
これがお役に立てば幸いです:)