【发布时间】:2021-10-14 10:14:54
【问题描述】:
以下是使用 Ruby 计算 Excel 公式的代码。此处仅显示 SUM 函数。我用两种语言实现了这个功能Ruby和Python
Python 3.10.0
def SUM(a,b):
return a+b
for i in range(int(input())):
s=input()
if s[0]!="=":
print("INVALID")
else:
try:
print(eval(s.replace('=','')))
except:
print("INVALID")
Ruby 3.0.2
def SUM a,b
a+b
end
gets
puts $<.map{
if !_1[/^=/]
:INVALID
else
eval(_1.tr(?=,'')) rescue :INVALID
end
}
考虑以下输入
输入 1
4
=SUM(8, 99)
=SUM(343, -b1)
=SUM(-8, -99)
=SUM(101 , -25) + 6
输入 2
3
SUM(4, 1)
=SUM(5, 1
=SuM(2, 1)
对于输入 1,Ruby 和 Python 代码都可以完美运行。他们都捕获了错误b1 not defined,因此转到except 或rescue
但是对于输入 2,只有 Python 代码可以完美运行,而 Ruby 无法捕获错误 ) missing(在第 3 行)。它不会转到rescue。我也尝试使用begin 和resuce。但什么都没有。如何挽救 Ruby 中的此类错误?
【问题讨论】:
-
我也看不出这对“评估 EXCEL 公式”有何帮助
-
我想问一下如何像在Pyton中一样模拟
try和except -
这不是
try/except,实际的“问题”是为什么ruby 中的eval不会像您期望的那样引发错误。我对 Ruby 不熟悉,但这是你应该问的。 -
你的 Ruby 代码让我眼花缭乱。你能正确格式化吗?在那之后,也许解释一下你真正想要做什么。
标签: python ruby error-handling