"2. 除错文务必清楚列出错误讯息,求助前必须附上想法或程式码
(附上的程式码需尽可能完整,因为不是每个人都能用水晶球debug的!)"
Python版没有像C_and_CPP版的版规2(上方节录)如此的硬性规定,但不表示发
问者不必为自己提出的问题负责.
你自己所谓单刀直入的提问方式,就像你冲去诊所找医生说要看病,却没有述说
一下自己的病史、最近的身体情况、病征...等等,然后就等著医生找出原因并
医治或开药给你.
...你认为这样医生可以有效率的帮助到你吗?
根据你原始的文章,我来帮忙指出几点可以改进的地方:
1. 错误讯息:
既然你都写出code了,何不执行一次看看直译器给你的错误讯息为何?
给了错误讯息后,看到文章的人就能够更快了解你的问题在哪. 毕竟有些问题
不单纯只跟code有关,也可能与执行环境有关. (e.g. python2 or python3)
而你单纯只贴code,那我们只能用"通灵"的方式帮你,像是你原文中有的问题:
1) 直译器错误讯息
def model(y, u ,t):
2dydt=-y+u
^ SyntaxError: invalid syntax
意: 语法错误
解: 变量名称开头不可为数字
2) PEP8相关 (code format, 基本上不影响执行结果)
比较基础的像是在第4行:
`def model(y, u ,t):` 就有以下3个PEP8的问题
line 4, E302: expected 2 blank lines, found 0
line 4, E203: whitespace before ','
line 4, E231: missing whitespace after ','
建议改为`def model(y, u, t):`,并且与上方import语法相隔两行空白
而你最后几行的
`plt. xlabel('time')`
`plt. ylabel('y(t)')`
建议不要在`plt.`与`xlabel(...)`之间多出空白,虽然这并不会引起错误
而基本上目前大部分python的IDE都会帮你检查code format,如果没有的话
可以自行使用pylint. 线上的资源则可以使用下的连结:
http://pep8online.com/
2. 预期与实际的执行结果差异:
如果上述关于code的问题解决了,却发现执行结果不是你想要的,那再麻烦你叙
述你预期的执行结果和实际上的执行结果.
多给点资讯,你通常可以更快得到答复. 因此而节省提问者和解答者的时间,好
习惯,不养成吗?
以上,关于你的原文我就只能指出这些点了.
而如果遇到code太多,不方便直接贴到ptt上面的话,除了可以用 @Neisseria
所说的方式以外,也可以用以下的几个服务:
https://repl.it/
https://ideone.com/
https://gist.github.com/
至于要不要照着SSCCE或MCVE的方式提问,你自己决定. 毕竟这也是一种训练,
但你是否要试着自己从问题中学习也是你的自由,只是如果因为没有给足资讯
而迟迟得不到解决的办法,那你也怪不得他人.
最后,既然你已经解决了你提出的问题,那是否能够劳烦你在自己的文章中回复
到底是出了什么问题,而你又使用了什么方法解决呢?
这样一来,之后有相关问题的人也可能受到你的帮助. (建议标题也改清楚)
不过还是给你一个的鼓励,因为你最后有在原文回复说问题已解. 这样至少可以
避免之后看到文章的人以为问题还没有解答而白费时间在上面.
学会如何提出问题,对你学习的帮助绝对不小.