You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python转Lua实现机票计价功能的代码问题排查与修正

代码存在的核心问题
  • 星期表定义无效:你写的week_day是存储了若干字符串的列表,既没有实现数字到星期的映射关系,后续逻辑也完全没有调用这个表,属于冗余无效代码。
  • 输入类型不匹配:Lua中io.read()默认读取返回的是字符串类型,直接拿字符串和数字65、2做比较运算,无法触发预期的条件判断结果,必须先将输入内容转换为数值类型。
  • 细节拼写错误:表示票价的单词应为fare,你代码中写的fair词义为公平的,属于拼写失误。
修正后可直接运行的代码
-- 星期映射表,键为1-7的数字,值为对应星期名称,用于输入提示
local week_day = {
  [1] = "Monday",
  [2] = "Tuesday",
  [3] = "Wednesday",
  [4] = "Thursday",
  [5] = "Friday",
  [6] = "Saturday",
  [7] = "Sunday"
}

-- 打印输入提示,告知用户数字对应的星期
print("Week number rule:")
for idx, day_name in pairs(week_day) do
  print(string.format("%d = %s", idx, day_name))
end

-- 读取年龄输入并转为数字
print("Enter your age:")
local user_age = tonumber(io.read())

-- 读取星期输入并转为数字
print("Enter the day of the week (1-7):")
local input_day = tonumber(io.read())

-- 执行票价判断,增加输入合法性校验避免报错
if user_age and input_day and user_age >= 65 and input_day == 2 then
  print("Your fare is $75\n")
else
  print("Your fare is $150\n")
end
关键修改点说明
  • 重构了星期表的结构,真正实现数字序号到星期名称的映射,可直接用于给用户展示输入规则
  • 用tonumber()方法将用户输入的字符串内容转换为数值,解决类型不匹配导致条件判断失效的问题
  • 增加了输入合法性校验,当用户输入非数字内容时不会抛出异常,会直接走150美元票价的分支
  • 修正了票价相关的单词拼写错误,清理了不必要的冗余参数和缩进

内容的提问来源于stack exchange,提问作者elijahh7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:27:18