好吧,我正在做一個家庭作業,以在python中建立一個hang子手遊戲。到目前爲止,這是很順利,直到我得到這個惱人的錯誤:Hangman蟒蛇遊戲索引錯誤在For循環與列表
Traceback (most recent call last):
File "/Users/Toly/Downloads/ps2 6/ps2_hangman.py", line 82, in <module>
if (remLetters[i] == userGuess):
IndexError: string index out of range
這裏是我的代碼:
# 6.00 Problem Set 3
#
# Hangman
#
# -----------------------------------
# Helper code
# (you don't need to understand this helper code)
import random
import string
import time
WORDLIST_FILENAME = "words.txt"
def load_words():
print "Loading word list from file..."
# inFile: file
inFile = open(WORDLIST_FILENAME, 'r', 0)
# line: string
line = inFile.readline()
# wordlist: list of strings
wordlist = string.split(line)
print " ", len(wordlist), "words loaded."
return wordlist
def choose_word(wordlist):
"""
wordlist (list): list of words (strings)
Returns a word from wordlist at random
"""
return random.choice(wordlist)
wordlist = load_words()
blankword="_ "
word=random.choice (wordlist)
remLetters = string.lowercase
remGuesses = 8 #starting number of guesses
remWord=len(word)
#makes a blank with the length of the word
print "Welcome to Hangman"
time.sleep(1)
print
print "Your word is", remWord,"letters long."
print
time.sleep (1)
while (remGuesses != 0 or blankword != word):
remBlankword=len(blankword)
remWordDoubled=remWord*2
while (remWordDoubled!=len(blankword)):
blankword=blankword + "_ "
print blankword
print
print "You have",remGuesses," guesses left."
print
time.sleep(1)
userGuess= str(raw_input ("Guess a letter:"))
print
if (userGuess in word):
print "Excellent guess!"
else:
print "Bad Guess"
remGuesses=remGuesses-1
for i in range (1, len(remLetters)):
if (remLetters[i] == userGuess):
remLetters = remLetters[0:i] + remLetters[i+1:len(remLetters)]
print remLetters
if (remGuesses == 0):
print
print "Sorry, you died! Ha, sucks!"
print
print
time.sleep (1)
print "End of Game"
if (blankword == word):
print
print "Congradulations! You won!"
print
time.sleep(1)
print
print
print
print "End of Game"
FWIW,蟒蛇不需要對控制結構括號 - '如果( remGuesses == 0):'如果remGuesses == 0的話比python更少'' – Eric
因爲沒有人提到過 - '.split()'使用'string'模塊有什麼用處 - 這已經不合時宜了 - 而且我沒有看到任何優勢打開wordlist作爲無緩衝... –