Project1
标题: 自己做了一个小程序,能不能看看有什么错 [打印本页]
作者: 有丘直方    时间: 2016-1-19 13:25
标题: 自己做了一个小程序,能不能看看有什么错
 本帖最后由 有丘直方 于 2016-1-19 13:26 编辑 
最近刚刚开始学RGSS2……想做个脚本程序试试手……不过很遗憾的是第一个脚本就出现一个错误……帮我看看有什么错误好吗……
#==============================================================================
# ■ Calculator
#------------------------------------------------------------------------------
#  可以计算算式的程序。
#==============================================================================
 
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
first_count = 34
second_count = 28.67
symbol = "-"
#--------------------------------------------------------------------------
# ● 计算过程
#--------------------------------------------------------------------------
if symbol == "+"        # 加法
  def results
    result = first_count + second_count
    print "#{first_count} + #{second_count} = #{result}"
  end
elsif symbol == "-"     # 减法
  def results
    result = first_count - second_count
    print "#{first_count} - #{second_count} = #{result}"
  end
elsif symbol == "*"     # 乘法
  def results
    result = first_count * second_count
    print "#{first_count} * #{second_count} = #{result}"
  end
elsif symbol == "/"     # 除法
  def results
    result = first_count / second_count
    print "#{first_count} / #{second_count} = #{result}"
  end
elsif symbol == "%"     # 取模
  def results
    result = first_count % second_count
    print "#{first_count} % #{second_count} = #{result}"
  end
elsif symbol == "**"    # 乘方
  def results
    result = first_count ** second_count
    print "#{first_count} ** #{second_count} = #{result}"
  end
else                    # 错误算式
  def results
    print "ERROR!!!"
  end
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
results
#==============================================================================
# ■ Calculator
#------------------------------------------------------------------------------
#  可以计算算式的程序。
#==============================================================================
 
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
first_count = 34
second_count = 28.67
symbol = "-"
#--------------------------------------------------------------------------
# ● 计算过程
#--------------------------------------------------------------------------
if symbol == "+"        # 加法
  def results
    result = first_count + second_count
    print "#{first_count} + #{second_count} = #{result}"
  end
elsif symbol == "-"     # 减法
  def results
    result = first_count - second_count
    print "#{first_count} - #{second_count} = #{result}"
  end
elsif symbol == "*"     # 乘法
  def results
    result = first_count * second_count
    print "#{first_count} * #{second_count} = #{result}"
  end
elsif symbol == "/"     # 除法
  def results
    result = first_count / second_count
    print "#{first_count} / #{second_count} = #{result}"
  end
elsif symbol == "%"     # 取模
  def results
    result = first_count % second_count
    print "#{first_count} % #{second_count} = #{result}"
  end
elsif symbol == "**"    # 乘方
  def results
    result = first_count ** second_count
    print "#{first_count} ** #{second_count} = #{result}"
  end
else                    # 错误算式
  def results
    print "ERROR!!!"
  end
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
results
提示23行有错误。
line 23: NameError occurred.
undefined local variable or method 'first_count' for main:Object
以上是错误信息,谁能看看有没有什么错?抱歉我看不懂英语。
作者: 喵呜喵5    时间: 2016-1-19 15:56
 本帖最后由 喵呜喵5 于 2016-1-19 16:10 编辑 
下面是几个可行的解决方法:
1.不使用局部变量
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
First_count = 34
Second_count = 28.67
Symbol = "+"
#--------------------------------------------------------------------------
# ● 计算过程
#--------------------------------------------------------------------------
if Symbol == "+"        # 加法
  def results
    result = First_count + Second_count
    print "#{First_count} + #{Second_count} = #{result}"
  end
end
 
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
@first_count = 34
@second_count = 28.67
@symbol = "+"
if @symbol == "+"        # 加法
  def results    
    result = @first_count + @second_count
    print "#{@first_count} + #{@second_count} = #{result}"
  end
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
results
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
First_count = 34
Second_count = 28.67
Symbol = "+"
#--------------------------------------------------------------------------
# ● 计算过程
#--------------------------------------------------------------------------
if Symbol == "+"        # 加法
  def results
    result = First_count + Second_count
    print "#{First_count} + #{Second_count} = #{result}"
  end
end
 
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
@first_count = 34
@second_count = 28.67
@symbol = "+"
if @symbol == "+"        # 加法
  def results    
    result = @first_count + @second_count
    print "#{@first_count} + #{@second_count} = #{result}"
  end
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
results
2.别用这种古怪的思路,而是用正常的思路写这段代码(推荐)
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
first_count = 34
second_count = 28.67
symbol = "+"
 
def result(first_count, second_count, symbol)
  if symbol == "+"  
    result = first_count + second_count
    print "#{first_count} + #{second_count} = #{result}"
  end
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
result(first_count, second_count, symbol)
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
first_count = 34
second_count = 28.67
symbol = "+"
 
def result(first_count, second_count, symbol)
  if symbol == "+"  
    result = first_count + second_count
    print "#{first_count} + #{second_count} = #{result}"
  end
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
result(first_count, second_count, symbol)
附上修改后的代码:
#==============================================================================
# ■ Calculator
#------------------------------------------------------------------------------
#  可以计算算式的程序。
#==============================================================================
 
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
first_count = 34
second_count = 28.67
symbol = "-"
#--------------------------------------------------------------------------
# ● 计算过程
#--------------------------------------------------------------------------
def results(first_count, second_count, symbol)
  case symbol
  when '+'  then result = first_count + second_count
  when '-'  then result = first_count - second_count
  when '*'  then result = first_count * second_count
  when '/'  then result = first_count / second_count
  when '%'  then result = first_count % second_count
  when '**' then result = first_count ** second_count
  else
    print "ERROR!!!"
    return
  end
  print "#{first_count} #{symbol} #{second_count} = #{result}"
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
results(first_count, second_count, symbol)
#==============================================================================
# ■ Calculator
#------------------------------------------------------------------------------
#  可以计算算式的程序。
#==============================================================================
 
#--------------------------------------------------------------------------
# ● 输入变量
#--------------------------------------------------------------------------
first_count = 34
second_count = 28.67
symbol = "-"
#--------------------------------------------------------------------------
# ● 计算过程
#--------------------------------------------------------------------------
def results(first_count, second_count, symbol)
  case symbol
  when '+'  then result = first_count + second_count
  when '-'  then result = first_count - second_count
  when '*'  then result = first_count * second_count
  when '/'  then result = first_count / second_count
  when '%'  then result = first_count % second_count
  when '**' then result = first_count ** second_count
  else
    print "ERROR!!!"
    return
  end
  print "#{first_count} #{symbol} #{second_count} = #{result}"
end
#--------------------------------------------------------------------------
# ● 输出结果
#--------------------------------------------------------------------------
results(first_count, second_count, symbol)
作者: 有丘直方    时间: 2016-1-19 19:17
喵呜喵5 发表于 2016-1-19 15:56 
下面是几个可行的解决方法:
1.不使用局部变量
#------------------------------------------------------- ...
谢谢。不过,我有一个问题。最后附上的那个代码26行的“return”是干什么的?我曾以为它只能在函数的定义里表示返回值。
作者: 喵呜喵5    时间: 2016-1-19 19:28
有丘直方 发表于 2016-1-19 19:17 
谢谢。不过,我有一个问题。最后附上的那个代码26行的“return”是干什么的?我曾以为它只能在函数的定义 ...
结束执行(若该方法不需要返回值时,可省略返回值)
在这里的用处是,不执行 case 后面这句代码:
print "#{first_count} #{symbol} #{second_count} = #{result}"
作者: 有丘直方    时间: 2016-1-19 20:13
喵呜喵5 发表于 2016-1-19 19:28 
结束执行(若该方法不需要返回值时,可省略返回值)
在这里的用处是,不执行 case 后面这句代码:
print  ...
谢谢!
| 欢迎光临 Project1 (https://rpg.blue/) | 
Powered by Discuz! X3.1 |