我不确定你为什么把课放在这里,因为缩进是不正确的,你使用“方法”的方式不像你想要使用类。我有两个代码。一个使用类而另一个不使用。
首先,假设你真的想使用类(我觉得这个最适合您的问题):
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(在其他地方输入name和assign value,而不是在任何函数中)。但在这种情况下,当你使用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()
希望这将帮助你:)
来源
2012-10-29 01:38:00
hqt
您使用“为单词中的单词“将通过单词中的单个字母进行。那是你的意图吗?我会建议将单词声明为一个列表而不是一个空字符串。 –
也许是因为get_words()不完整,而words =“”? – monkut
@monkut我编辑了代码。我认为这会让它变得混乱。 –