【问题标题】:while, if and for loops. First letter, last letter game on Pythonwhile、if 和 for 循环。 Python上的第一个字母,最后一个字母游戏
【发布时间】:2014-11-23 10:12:40
【问题描述】:

我很难弄清楚如何让它发挥作用。基本上我必须制作一个游戏,其中从 words.txt 文件中随机生成一个单词,然后交替的玩家必须键入一个以前一个单词的最后一个字母开头的单词。我想我已经掌握了它的基本原理,但有一些问题需要解决。

首先谁能告诉我为什么我的代码不起作用?当我运行它并输入一个应该完成 == True 的单词时,它似乎无法识别它。 代码如下:

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

【问题讨论】:

    标签: python if-statement for-loop while-loop


    【解决方案1】:

    问题是你有这个

     elif word in words_used_list:
                finished == True
    

    当你的意思是:

     elif word in words_used_list:
                finished = True
    

    (和其他 2 个地方类似)

    注意你也可以说

    while finished:
    

    而不是

    while finished == True:
    

    这可能会被认为更优雅。

    【讨论】:

    • 耶!乐意效劳。离开前请务必点击友好的“已接受答案”刻度线;)
    • @Waterdogs 在 python 中,使用 'is' 运算符与 False/True/None 进行比较是标准的。这可能会阻止这种情况发生,因为看到“x == True”会引发警告信号。
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2020-04-24
    • 2011-02-12
    • 1970-01-01
    • 2016-11-25
    • 2013-06-17
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多