基础编程 10
Question 28
嗯,啥也不懂的情况下 先试试瞎写
居然有答案
用find功能查了一下原文档,这Lorem
只有四个而已,嗯,所以文法出问题,还是老老实实看看文档去
先思考一下,感觉关键点不是如何“计数”而是如何用文法表述出“不同的单词”,然后直接count就能展示出字数了...如何在file中区隔出单词呢...
本来想说把全部文本替换成array,直接用array的count的功能不就搞定?结果...
然后认真一看这split的功能...果然不是...预想中的...
同样的思路,但换一种文法,感觉靠谱一些了
这样虽然有进展,但是把一些符号也都算进去了,完全不是计算“单词个数”而已...那么“如何分离出单词”呢?!
最后感叹一下,我以为是要把文档格式改成array
才能解决 没想到竟然要改成 string
的格式才能真正的解决问题啊~ 但思路OK的~这可以表扬自己
参考视频 https://www.youtube.com/watch?v=I988sReFcRM
打开文档本身测试了一下 downcase.scan(/\w+/)
的效果,用find的功能找出的一些词的词频不同...高度怀疑是“mi.”这类带着句号的词汇被 scan
功能给剔除了...
果然还是要进一步的提升功能,scan不够用啊...还是要把全部的“奇异符号”都去除掉,然后用“空格键”这区隔当做识别是否为“单词”的手段来计算词频才比较合理...
不对,后来认真在text原文档跑了一遍,把elit
这个在原文用find
功能找出5处,而我的代码只找到3处的词汇用find功能逐个看下来,发现多出来的2个是 velit
这个词 啊哈!!!scan是强大的哈哈哈哈!!!
一个小发现
找视频看的过程 发现一个新的写法
i = 0
j = 1
可以写成更简短的
i, j = 0, 1
居然能合并成一行,真是厉害了我的逗号啊哈哈哈哈哈
Question 29
开始尝试前 对题目的最初想法如下
“每一行就是一个待办事项”的话,就是用\n
来当分隔符号的意思
“可以新增和删除代办事项,最后可以存盘离开”就是用new
delete
来操作,但是这个存盘,莫非就直接用 save
吗?
“重新执行这只程序,可以继续上次的代办事项” 就是说这个程序的文法要能达到“永久改变文档”的功效 所以应该是把原文档搬去一个新变量里,随便去改动这个新变量内容就好,保证原文档不被动刀。那么“继续上次”的话...就是用save!
这样的代码吗?
嗯,想到这里就没别的想法了,纠结啊,没客户端操作页面的话...就是没前端的按钮们,要怎么进行人机互交的操作啊...一直用金手指指令来操作不成?这个比较困惑 没想法...
嗯,等等,没有按钮等前端的互动设计,就用def
定义需要的功能,到时候用.
来调用定义好的功能不就搞定?!
啊,“离开”原来是break
啊 用循环好方便耶 根本不用def呢...
目前的新想法是 “重新执行这只程序,可以继续上次的代办事项” 会不会是指“运用file的写入能力 把原文档改动了”?! 不然下次运行还是去读取“没有被改变的原文档”啊!!!
被自己的写法提醒到 得出下面的结论
搞定!逃避了四五天了...真是的...明明不难,被自己完美主义吓退的体验还要来多少次才能学乖啊...
BTW
File.open("todos.txt", "w+") do |f|
todos.each do |i|
f << i
f << "\n"
end
end
这里直接用 f << i
是OK的~