Python hangman游戏中的函数有问题

2024-06-02 08:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python制作一个刽子手游戏,但在使用某个函数时遇到了一些问题。在我开始游戏之前,我需要做一些函数

最后一个我需要做的是一个函数,它将接收到一个txt文件的文件路径,该文件包含由空格分隔的单词,并且它将接收一个表示某个单词索引的数字。函数需要返回由两部分组成的元组:

  1. 文件中唯一单词的数量,意味着排除重复的单词
  2. 接收到的索引中的单词,将用于机密单词

玩家输入的索引需要从1开始,而不是从0开始, 如果索引大于文件中的字数,函数将继续循环计数(也就是说,当它返回到文件中的第一个字时)

下面是一个文件示例,其中包含名为words.txt的单词:

“刽子手之歌最广泛的是一首歌刽子手作品音乐作品广泛 通常为“”

下面是函数应该如何运行:

>>> choose_word(r"c:\words.txt", 3)
(9, 'most')
>>> choose_word(r"c:\words.txt", 15)
(9, 'hangman')

我已经做了大部分事情,但是当索引高于文件中的字数时,我很难做什么。这是我当前的代码:

def choose_word(file_path, index):
    file = open(file_path, 'r')
    num = index - 1
    list1 = []
    list2 = []
    word = ''
    counter = 0
    for x in file.split(" "):
        counter += 1
        if x not in list1:
            list1.append(x)
        if counter == num:
            word = word + x
    list2.append(len(list1))
    list2.append(word)
    list2 = tuple(list2)
    return list2

如果我能得到任何帮助,我将非常高兴,提前感谢您抽出时间来帮助我


Tags: 文件函数txt游戏counter单词wordfile
1条回答
网友
1楼 · 发布于 2024-06-02 08:13:53

您可以使用模(%)来计算索引,如下所示:

def choose_word(file_path, index):
    file = open(file_path, 'r').read()
    num = (index-1) % len(file.split(" "))
    list1 = []
    list2 = []
    word = ''
    counter = 0
    for x in file.split(" "):
        if x not in list1:
            list1.append(x)
        if counter == num:
            word = x
        counter += 1
    list2.append(len(list1))
    list2.append(word)
    list2 = tuple(list2)
    return list2

看看它是否适合你

相关问题 更多 >