如何解决Ruby:调用定义的函数
我有一个 ruby 代码,它假设阅读一个段落并找到字符、单词和句子的总数,然后找到 ARI(自动可读性指数)并决定哪个年级。这是我第一次使用 ruby,我不知道如何调用该函数
这样写在最后一个结尾之后是否正确
calcARI("paragraph.txt")
paragraph.txt 是文件名
这是代码
def calcARI(paragraph)
file = File.open("paragraph.txt","r")
if file
file_data = file.read
file.close
charCount=0
wordCount=0
sentenceCount=0
ARIvalue==0
gradeLevel=""
file.each_line { |line|
charCount+=line.size
for i in 1..line.length
if(line[i]=='.')
sentenceCount+=1
end
if(line[i]==' ')
wordCount+=1
end
end
}
ARIvalue==4.71*(charCount/wordCount)+0.5*(wordCount/sentenceCount)-21.43
case ARIvalue
when 1
gradeLevel="5-6 Kindergarten"
when 2
gradeLevel="6-7 First/Second Grade"
when 3
gradeLevel="7-9 Third Grade"
when 4
gradeLevel="9-10 Fourth Grade"
when 5
gradeLevel="10-11Fifth Grade"
when 6
gradeLevel="11-12 Sixth Grade"
when 7
gradeLevel="12-13 Seventh Grade"
when 8
gradeLevel= "13-14 Eighth Grade"
when 9
gradeLevel= "14-15 Ninth Grade"
when 10
gradeLevel= "15-16 Tenth Grade"
when 11
gradeLevel= "16-17 Eleventh Grade"
when 12
gradeLevel= "17-18 Twelth Grade"
when 13
gradeLevel= "18-24 College student"
when 14
gradeLevel="24+ Professor"
end
puts "Total # of Charecter: #{charCount}"
puts "Total # of words: #{wordCount}"
puts "Total # of sentences: #{sentenceCount}"
puts "Total # of Automated Readability Index: #{ARIvalue}"
puts "Grade Level: '#{gradeLevel}''"
else
puts "Unable to open file!"
end
end
解决方法
您的代码中有很多(基本的?)错误。正确的写法如下:
def calcARI filepath
charCount = 0
wordCount = 0
sentenceCount = 0
IO.foreach(filepath) do |line|
charCount += line.size
wordCount += line.scan(/ /).count
sentenceCount += line.scan(/\./).count
end
ariValue = 4.71 * ( charCount.to_f / wordCount ) + 0.5 * ( wordCount.to_f / sentenceCount ) - 21.43
gradeLevel = case ariValue.ceil
when 1
"5-6 Kindergarten"
when 2
"6-7 First/Second Grade"
when 3
"7-9 Third Grade"
when 4
"9-10 Fourth Grade"
when 5
"10-11Fifth Grade"
when 6
"11-12 Sixth Grade"
when 7
"12-13 Seventh Grade"
when 8
"13-14 Eighth Grade"
when 9
"14-15 Ninth Grade"
when 10
"15-16 Tenth Grade"
when 11
"16-17 Eleventh Grade"
when 12
"17-18 Twelth Grade"
when 13
"18-24 College student"
when 14
"24+ Professor"
else
""
end
puts "Total # of Charecter: #{charCount}"
puts "Total # of words: #{wordCount}"
puts "Total # of sentences: #{sentenceCount}"
puts "Total # of Automated Readability Index: #{ariValue}"
puts "Grade Level: '#{gradeLevel}'"
rescue StandardError => e
STDERR.puts e.message
end
顺便说一句,您计算字符、单词和句子的方式远非准确,但如果您的 ARI 考虑到这一点,那么它们可能是正确的?
要回答您的问题,是的,您可以在定义后调用 calcARI
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。