들여 쓰기가 참이 아니며 "방법"을 사용하는 방식이 클래스를 사용하려는 것과 같지 않기 때문에 여기에 수업을하는 이유가 확실하지 않습니다. 두 코드가 있습니다. 하나는 클래스를 사용하고 다른 하나는 none입니다.
첫째, 당신이 정말로 클래스를 사용한다고 가정 (그리고 나는 당신의 문제에 대한이 가장 좋은 생각) : 당신이 클래스를 사용할 때
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) 변수 : 값 을 할당 한 후을 할당해야합니다.
그래서, 여기에 내가 해결 한 코드입니다 :
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 코드를 편집했습니다. 나는 그것을 어수선하게 만들 것이라고 생각했다. –