没有错误消息,所以我不知道发生了什么错误

我正在写代码,但运行后没有反应,也没有显示任何错误消息,所以我不知道哪里出了问题。能有人修一下吗?

以下是代码:

math.randomseed(os.time())
value = {"a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "l", "m",
    "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
     1, 2, 3, 4, 5, 6, 7, 8, 9}

function makepassword(v)
 for i = 1, v do
  local v = math.random(1, 35)
  local ud = math.random(0, 1)
  if ud == 1 then
   local p = string.upper(value[v])
  else
   local p = value[v]
  end
  if(not a) then
   a = p
  else
   a = a..p
 end
 return a
end

start = makepassword(18)
print(start)

请帮帮我。

点赞
用户5920627
用户5920627

代码中有未关闭的 for 运算符,这就是它无法工作的原因。但仅仅关闭它还不够。以下是进一步调整代码的一些方法:

math.randomseed(os.time())

-- 更紧凑的存储字符集的方法是字符串:
local charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjklmnopqrstuvwxyz123456789"
-- 存储长度而不是每次计算:
local charset_length = string.len(charset)

function makepassword(length) -- 这里存在重复的变量名v
    local a = "" -- 没有使用全局a的必要
    for i = 1, length do
        local v = math.random(1, charset_length)
        a = a .. charset:sub(v, v)
    end
    return a
end

start = makepassword(18)
print(start)

说实话,我不太喜欢这种字符编码方式。Lua 函数string.char() 可以根据编码返回一个字符,例如 string.char(48) == "0"string.char(65) == "A" 等等。因此如果您不故意避免特殊字符,则会更加简单:

function makepassword(length)
    local a = ""
    for i = 1, length do
        a = a .. string.char(math.random(33, 126))
    end
    return a
end

print(makepassword(18))

欢迎使用 :)

2021-07-04 23:52:45