【问题标题】:Access an array in a separate file? [closed]访问单独文件中的数组? [关闭]
【发布时间】:2014-09-19 03:38:24
【问题描述】:

我正在学习 Python。我正在构建一个刽子手应用程序,我让用户选择一个单词中的字母数量。

我会有一个名为ThreeFourFive 等的数组,这些数组中包含相应的单词长度。我想让每个数组都有自己的文件,所以主脚本不是那么麻烦。

然后我希望能够使用random.randint 在用户指示他们想要的字母数量后从其中一个数组中选择一个单词。有没有简单的方法可以做到这一点?

【问题讨论】:

  • 请详细说明您所说的我想让每个数组都成为自己的文件。这些列表的原始来源是什么?到目前为止,您尝试过什么?
  • 例如,会有一个名为three.py 的文件,它只包含一个由三个字母组成的单词数组。四.py 会有四个字母的单词,依此类推。我不能尝试太多,因为我根本不知道python访问另一个python文件的命令,这就是我来这里的原因。
  • 您可以将您的列表存储在另一个.py 文件中并将它们导入到您的hangman 脚本中,您无需打开任何文件。

标签: python arrays python-2.7


【解决方案1】:

首先,确保所有的 python 文件都在同一个文件夹中。

完成此操作后,您可以简单地做from name_of_word_file import name_of_word_list

您可以为每个文件创建这些行之一,但我认为将所有单词列表简单地放入一个文件中,然后导入特定的单词列表变量会更容易。

至于从列表中选择单词,random.choice 可以像这样从列表中随机选择和元素

from random import choice
from words import four_letter_words

print choice(four_letter_words)

使用列表并导入它们就可以了,但是我建议您考虑将单词列表之类的内容保存到文本文件中,就像 Ken 在他的回答中提到的那样。

【讨论】:

    【解决方案2】:

    要访问文件,您需要open 命令。

    例如,要为 read 打开一个名为 three.dat 的文件,您可以:

    with open("three.dat") as f:
        # do stuff
    

    那里的with 设置文件句柄的范围,这样您就不需要显式地关闭它。当f 超出范围时,文件将自动关闭。

    更多信息open:

    https://docs.python.org/2/library/functions.html#open

    如果您只有相对较少的单词,比如十几个,适合每个存储桶,最好/最可行将它们简单地硬编码到 dictlists 中,其中key 是转换为字符串的长度。

    即某种形式的东西:

    word_dict = {'3': ['and', 'cat', 'dog', 'not'],
                 '4': ['four', 'moth'],
                 '5': ['batch', 'match']
                }
    

    但是,如果您想拥有整个字典的单词,那么硬编码方法将不可行(尽管将它们放入单独的文件中也很乏味)。

    最终,随着您对 Python 的学习取得进展,您可能希望研究类似的内容并将其应用到您的程序中:

    http://wordlist.aspell.net/

    【讨论】:

    • 我认为 OP 是关于一个模块来存储一些可以导入的变量,而不是实际在文件中。
    • 啊。所以也许@David Greydanus 的答案更多的是他正在寻找的。不过,我列出的所有警告似乎仍然适用(似乎使用这种方法整理导入的任何内容的内容仍然非常乏味)。
    • 这看起来也是个不错的方法。也许是大卫的答案和这个的结合。使用具有多个参数的一个对象作为字长存储将起作用。我只想要单独的文件,因为我使用了很多单词,所以将它们全部放在同一个文件中只会占用大量空间。谢谢!
    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多