我不知道你为什么把类放在这里,因为缩进不是真的,你使用“方法”的方式不像你想使用类。我有两个代码。一个是使用类,另一个是没有。
首先,假设您真的想使用 class (我认为这最适合您的问题):
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)单词和字母可能不会被声明为 global。因此,当您在 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()
希望对你有帮助 :)