Я не уверен, почему вы кладете класс здесь, потому что отступ не соответствует действительности, и способ, которым вы используете «метод», не похож на то, что вы хотите использовать класс. У меня есть два кода. Один использует класс, а другой - нет.
Во-первых, предположим, что вы действительно хотите использовать класс (и я думаю, что это лучше всего подходит для вашей проблемы):
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() не видит этого. Если вы компилируете и не допускаете ошибок, то по какой-то причине вы назначаете это значение SOMEWHERE в глобальном (введите имя и присвойте значение где-то в другом месте, а не в какой-либо функции). Но в случае этого, когда вы используете 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()
Надеется, что это поможет :)
Вашего использования «для слово в словах "будет проходить через отдельные буквы в словах. Это то, что вы намеревались? Я бы рекомендовал объявлять слова как список вместо пустой строки. –
возможно потому, что get_words() является неполным, а слова = ""? – monkut
@monkut Я редактировал код. Я думал, что это загромождает его. –