在Lua中,可以使用if、elseif和else将重复直到循环与条件语句结合起来使用。

我对 Lua 还不是很熟悉,我在这段代码上遇到了问题。它应该使用 io.read 来验证用户的输入,然后运行正确的 ifelseifelse 语句。一旦用户输入了正确的响应,代码应该结束。由于某种原因,代码只运行了最初的 if 语句。任何帮助都将不胜感激。

repeat
    resp1 = io.read()

    if resp1 == "Yes" or "yes" then
        print("好的,那么请进。")
        print("让我拿一下你的血液样本,像其他人一样,你就可以走了。")
    elseif resp1 == "No" or "no" then
        print("哦,你不是?那你在这儿干嘛?")
        print("哦,无所谓了。其实我只需要为每一个进城的人采集一份血样。")
        print("那么,我们现在就开始吧。")
    else
        print("请回答 Yes 或 No")
    end
until resp1 == "Yes" or resp1 == "No" or resp1 == "no" or resp1 == "yes"
点赞
用户828255
用户828255

你的问题在于这一行代码:

if resp1 == "Yes" or "yes" then

这里是两个独立的表达式,在 Lua 里,除了 nilfalse,其他值都是真值,所以它会执行这个 if 语句,因为 Lua 里的字符串,即使是空字符串,在条件判断里也会被视为真值。如果这样理解会有所帮助,可以这样看:

if (resp1 == "Yes") or ("yes") then

如果你真的想要比较 resp1 和两个值,应该这样写:

if resp1 == "Yes" or resp1 == "yes" then

不过,这个问题还有更简单的解决方法:

if resp1:lower() == 'yes' then

实际上,你还可以简化你的循环。让它更易读。使用多行字符串代替多次 printbreak

repeat
    resp1 = io.read():lower() -- 读取小写的输入

    if resp1 == 'yes' then
        print[[好的,进来吧。
让我来取一下你的血样,就像所有人一样,然后你就可以进城了。]]
        break -- 从循环中退出
    elseif resp1 == 'no' then
        print[[哦,你不是吗?那你来这里干什么?
哦,无所谓了。我只是要给每个要进城的人取一点血样。
我们现在就来搞定这件事,好吗?]]
        break
    else
        print'请回答 Yes 或 No'
    end

until false -- 一直重复直到退出
2013-12-01 21:38:04
用户6524120
用户6524120
重复
打印("请以“是”或“否”回答。")
    resp1 = io.read()

    如果 resp1 == "Yes" or resp1 == "yes" then
        打印("好的,进来吧。")
        打印("让我像对待其他人一样取你的血样,然后你就可以走了。")

    elseif resp1 == "No" or resp1 == "no" then
        打印("哦,你不是?那你上来干嘛?")
        打印("哦,算了。反正不关我的事。我只是负责给每个进城的人采集血样。")
        打印("那我们现在就开始吧,好吗?")
        else
        打印("请只使用“是”或“否”回答!!")
     结束

   直到 resp1 == "Yes" or resp1 == "No" and resp1 == "no" or resp1 == "yes"
2016-06-28 15:08:39