그래서 학교 프로젝트를위한 교수형 집행자 게임을 만들고 있으며, 저의 삶에 대해 생각할 수없는 문제를 발견했습니다. 심지어 이 발생합니다. Python - Tkinter : 내 색인이 범위를 벗어났다는 오류가 발생했습니다.
word_list = ["APPLE", "PEAR", "BANNANA"]
word = word_list [random.randint(0,2)]
hidden_word = ["_ " * len(word)]
print (word)
코드의이 비트는 다음 문자열 변수로 만들어진 단어 중 하나 목록이며, :
word = word_list [random.randint(0,2)]
내가 다음으로, 숨겨진 단어는 새 목록을 '_' 그때 (개발) 단어를 인쇄
hidden_word = ["_ " * len(word)]
print (word)
: 길이를 얻어서, 숨기는 데 사용
문제가있는 코드로 이동합니다.
def click_1 (key):
if str(key) in word:
key_1 = word.index(key)
print (key_1)
hidden_word[key_1] = key
print (hidden_word)
else:
print ("Nope")
return letter
r = c = 0
for letter in string.ascii_uppercase:
Button(letter_frame, text=letter, command=functools.partial(click_1, letter)).grid(row=r, column=c, sticky=W)
c += 1
if c > 12:
c = 0
r += 1
이 있습니다 butons가 와서, 나는 문자로 버튼을 클릭 때 (순간) 다음 단어에, 그리고 경우, 인쇄 확인 :
BANNANA
>>> 0
['B']
은 if를 단어는 bannana입니다. 나는이 (가) 누를 때 문제는 :
1
가 온다, 내가 뭔가를 누르면,이 오류가 나타납니다
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/idlelib/run.py", line 121, in main
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/queue.py", line 175, in get
raise Empty
queue.Empty
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", line 1475, in __call__
return self.func(*args)
File "/Users/alexeacott/Desktop/Hangman.py", line 24, in click_1
hidden_word[key_1] = key
IndexError: list assignment index out of range
마지막 줄이 가장 intersest이다, Apparantly 히, N이기 때문에 범위를 벗어났습니다. 내 질문은, 왜 이런 일이 벌어지고, 어떻게 해결할 수 있는지입니다.
해피 홀리데이!
그래서 대괄호를 변경하기 만하면 무엇? 나는 바보였다. 하하, 고마워! 추가 질문이 하나 있습니다. 이제 버튼이 클릭되었을 때 결과가 올바르지 만, 문자의 인스턴스가 여러 개인 경우 해당 인스턴스가 바뀌지 않으므로 문자가 반복되면 끝낼 수 없습니다. 단어! 어디에서 시작해야할지 모르겠다./ – 18166
@ 18166,'list.index'는 첫 번째 항목의 인덱스를 반환합니다. 이를 사용하는 대신 목록 항목을 반복하고 항목이 입력 문자와 일치하는지 확인하고 일치하는 항목에 대해 적절한 작업을 수행하십시오. – falsetru