基础编程 10

2020-05-26  本文已影响0人  RealAnalysis

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的~

上一篇下一篇

猜你喜欢

热点阅读