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

Lua 我有没有办法修复这个if语句?,lua,Lua,我对Lua的编码比较陌生,但我对Python有一点经验。我想尝试一些不同的方法,随机数被滚动,你必须试着猜出数字是什么。如果你做对了,这个项目就结束了,那就是在我空闲时间做一些简单的事情。然而,我遇到了Lua的一个问题,第16行的if语句不起作用 打印(“测试”) 打印(---------------------------------------------) 游戏=1 x=数学随机(1,6) 而game==1做什么 x=数学随机(1,6) io.write(“输入一个数字。如果你在骰子上掷那

我对Lua的编码比较陌生,但我对Python有一点经验。我想尝试一些不同的方法,随机数被滚动,你必须试着猜出数字是什么。如果你做对了,这个项目就结束了,那就是在我空闲时间做一些简单的事情。然而,我遇到了Lua的一个问题,第16行的if语句不起作用

打印(“测试”)
打印(---------------------------------------------)
游戏=1
x=数学随机(1,6)
而game==1做什么
x=数学随机(1,6)
io.write(“输入一个数字。如果你在骰子上掷那个数字,你就赢了:”)
用户输入=io.read()
打印(“”)
打印(“您选择”。.用户输入)
打印(“”)
打印(x)
如果用户输入==x,则---------------->此行不起作用
打印(“”)
打印(“您滚动了您选择的号码。”)
游戏=2
其他的
打印(“”)
打印(“您没有滚动随机数。”)
打印(---------------------------------------------)
结束
结束

您似乎正在从控制台获取输入并将其存储为字符串。您当前正在将字符串与整数进行比较。这意味着你将永远以错误告终。在这里,我修改了您的代码,使其将输入作为整数而不是字符串,这样语句现在就可以工作了

 print("Test")
 print("--------------------------------------")

 game = 1

 x = math.random(1,6)

 while game == 1 do
   x = math.random(1,6)
   io.write("Enter a number. If you roll that number on the dice you win: ")
   user_input = io.read("*number")
   print(" ")
   print("You chose " .. user_input)
   print(" ")
   print(x)
   if user_input == x then
     print(" ")
     print("You rolled the number you chose.")
     game = 2
   else
     print(" ")
     print("You did not roll the random number.")
     print("--------------------------------------")
   end
 end

如果用户输入==x,则将
替换为
如果TonNumber(用户输入)==x,则替换为
。您应该很清楚,
user\u input
是一个字符串,
x
是一个数字;Lua中没有隐式类型转换

奖金:

  • 如果唯一的参数是字符串或表,则可以在函数调用中删除括号:
    f(“a”)
    → <代码>f'a'
  • 要结束循环,只需使用
    break
    ,就可以完全去掉
    game
    变量(使用
    while(true)
  • 通常,除非您有特殊理由不这样做,否则请将变量声明为
    local
    。在您的示例中,这适用于
    x
    user\u输入
    ,如果不是多余的,也适用于
    游戏
  • Lua具有HereDoc语法,因此您可以替换:
  • 打印(“”)
    打印(“您没有滚动随机数。”)
    打印(---------------------------------------------)
    

    打印[[
    你没有滚动随机数。
    --------------------------------------
    ]]
    
    math.random(1,6)
    返回数字
    io.read()
    返回字符串。数字永远不等于字符串。在比较之前,请使用
    tostring()
    tonumber()
    。您还可以执行
    打印('\n您没有滚动随机数。\n---------------------------------------)
    ,删除括号应该是一项简单的操作crime@Nifim,我疲惫的眼睛不同意。可读性很重要
    stringplus“potato”:mymatch“tato”:totable()
    @Nifim,在引号前添加空格,用单引号替换双引号,您(对于人类)的语句比用括号更可读。尽管如此,何时删除括号的决定应该基于语义上的原因,而不是形式上的原因。