【问题标题】:Skips some parts of the file while reading阅读时跳过文件的某些部分
【发布时间】:2021-06-26 19:33:22
【问题描述】:

所以我在 lua 中制作了一个简单的程序,要求你写一个包含“ck”或“bv”之类的词,显然这些词必须在字典上,所以我有一个超过 50,000 个词的填充词在字典上,问题是当我输入文件上的单词时它说我输了,我放了一个 print(line) 进行调试,所以我可以看到发生了什么,我注意到它不会打印每个单词

例子:

文本文件

这是读取文件的代码:

local words_file = io.open("words.txt", "r")
local words = {}
local contains = {"br", "gg", "in", "et", "ck", "q", "it", "el", "st", "es", "be"}
local input

math.randomseed(os.time())


for line in words_file:lines() do
  words[line] = words_file:read("*l")
  print(line)
end
print("Loaded!")

这是游戏的代码:

while true do
    local contain = contains[math.random(#contains)]
    print("Write a word that contains \"" .. contain .."\"")
    input = io.read()
  if not (string.find(input, contain) and words[input:lower()]) then
    print("lol u bad")
    break
  end
end

【问题讨论】:

  • 相比显示渲染文本的图像,请更喜欢文本演示。

标签: string file lua


【解决方案1】:

您不应该在循环中调用words_file:read("*l"),您还会导致迭代器在文件中前进,从而导致您跳过行。

file:lines 的默认行为也是使用 l

返回一个迭代器函数,每次调用它时,都会根据给定的格式读取文件。如果没有给出格式,则使用“l”作为默认值。

您已经在循环变量line 中获得了行中的值。

你只需要这样做

for line in words_file:lines() do
  words[line] = true
  print(line)
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2014-04-28
    相关资源
    最近更新 更多