"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的方式提問,你自己決定. 畢竟這也是一種訓練,
但你是否要試著自己從問題中學習也是你的自由,只是如果因為沒有給足資訊
而遲遲得不到解決的辦法,那你也怪不得他人.
最後,既然你已經解決了你提出的問題,那是否能夠勞煩你在自己的文章中回覆
到底是出了什麼問題,而你又使用了什麼方法解決呢?
這樣一來,之後有相關問題的人也可能受到你的幫助. (建議標題也改清楚)
不過還是給你一個的鼓勵,因為你最後有在原文回覆說問題已解. 這樣至少可以
避免之後看到文章的人以為問題還沒有解答而白費時間在上面.
學會如何提出問題,對你學習的幫助絕對不小.