2014-09-29 55 views
2

我很难搞清楚如何使这个工作。基本上我必须制作一个游戏,其中一个单词是从words.txt文件中随机生成的,然后交替玩家必须键入一个以前一个单词的最后一个字母开头的单词。我认为我有这个基本问题,但是我需要解决一些问题。while,if和for循环。 Python中的第一个字母,最后一个字母游戏

首先有人可以告诉我为什么我的代码不工作?当我运行它并输入一个应该完成==的单词时,它似乎不能识别它。 代码如下:

import random 

def dictionary_list(): 
    dictionary = open("words.txt","r") 
    dictionary_list = dictionary.read() 
    dictionary_list = dictionary_list.split() 
    dictionary.close() 
    return dictionary_list 

def start_word(dictionary_list): 
    random_number = random.randrange(0,len(dictionary_list)) 
    random_word = dictionary_list[random_number] 
    print("Starting word: ", random_word) 
    return random_word 

def get_word(player_number): 
    word = input(player_number) 
    return word 


def get_player_number(player_number): 
    if player_number == 1: 
     player_number = 2 
    else: 
     player_number = 1 
    return player_number 

def main(): 
    word_list = dictionary_list() 
    starting_word = start_word(word_list) 
    words_used_list = [starting_word] 
    print(words_used_list) 
    finished = False 
    previous_word = starting_word 
    count = 0 
    player_number = 1 
    while finished == False: 
     word = get_word(player_number) 
     last_letter_word = previous_word[-1] 
     if word[0] != last_letter_word: 
      finished == True 
     elif word not in word_list: 
      finished == True 
     elif word in words_used_list: 
      finished == True 

     elif finished == True: 
      print("=" * 40) 
      print("Winner is player",player_number) 
      print("Number of words played", count) 
      print("List of words:", words_used_list) 
      print("Losing word: ", word) 
      print("=" * 40) 
     else: 
      player_number = get_player_number(player_number) 
      previous_word = word 
      count = count + 1 
      words_used_list.append(word) 

main() 

下面是所需的输出应该是什么样子的截图: http://imgur.com/S9a2ema

回答

1

的问题是,你有这样的

elif word in words_used_list: 
      finished == True 

当你的意思是这个:

elif word in words_used_list: 
      finished = True 

(一第二在其他2处类似)

还要注意的是,你可以说的

while finished: 

代替

while finished == True: 

,这可能是多了几分优雅的考虑。

+0

耶!乐意效劳。请务必点击友好的“接受答案”勾号,然后再离开;) – GreenAsJade 2014-09-29 05:05:57

+0

@Waterdogs在Python中,使用'is'运算符进行比较为False/True/None是标准的。这可能阻止了这一点,因为看到'x == True'会发出警告信号。 – 2014-09-29 05:26:19

相关问题