有没有办法修复这个if语句?

我在Lua编程方面比较新,但我有一点Python的经验。我想尝试一些不同的东西,其中会滚动一个随机数,然后您必须尝试猜测这个数字是什么。如果您猜对了,程序将结束,就是这样的一个简单的自由时间工作。然而,我在Lua中遇到了一个问题,即第16行上的这个if语句无法运行。

print("测试")
print("--------------------------------------")

game = 1

x = math.random(1,6)

while game == 1 do
  x = math.random(1,6)
  io.write("输入一个数字。如果您在骰子上掷出该数字,您将获胜:")
  user_input = io.read()
  print(" ")
  print("您选择了" .. user_input)
  print(" ")
  print(x)
  if user_input == x then ------------->这行不起作用
    print(" ")
    print("您掷出了您选择的数字。")
    game = 2
  else
    print(" ")
    print("您没有掷出随机数字。")
    print("--------------------------------------")
  end
end
点赞
用户9240484
用户9240484

看起来你从控制台输入并将其存储为字符串。你目前正在将一个字符串与一个整数进行比较。这意味着你将总是得到false。在这里,我更改了你的代码,使其接受整数输入,而不是字符串,以便语句现在可以正常工作。

print("测试")
print("--------------------------------------")

game = 1

x = math.random(1,6)

while game == 1 do
   x = math.random(1,6)
   io.write("输入一个数字。如果你在骰子上掷出这个数字,你就赢了:")
   user_input = io.read("*number")
   print(" ")
   print("你选择了" .. user_input)
   print(" ")
   print(x)
   if user_input == x then
      print(" ")
      print("你掷出了你选择的数字。")
      game = 2
   else
      print(" ")
      print("你没有掷出随机数字。")
      print("--------------------------------------")
   end
end
2020-10-01 13:53:28
用户6632736
用户6632736

使用 if tonumber( user_input ) == x then 替换 if user_input == x then。你应该明白 user_input 是字符串,x 是数字;在 Lua 中没有隐式类型转换。

额外奖励:

  • 如果函数调用只有一个字符串或表参数,可以省略括号:f("a")f'a'

  • 要结束循环,可以使用 break,完全摆脱 game 变量(使用 while ( true ))。

  • 始终声明变量为 local,除非有特殊原因不声明。在你的示例中,这适用于 xuser_input,如果不是多余的话,也适用于 game

  • Lua 有 HereDoc 语法,所以可以将:

        print(" ")
        print("You did not roll the random number.")
        print("--------------------------------------")
    

    替换为

        print [[
    
    You did not roll the random number.
    --------------------------------------
    ]]
    
2020-10-01 13:56:20