Re: [問題] 簡單的迴圈問題

看板Python作者時間5年前 (2019/07/08 01:39), 編輯推噓2(207)
留言9則, 4人參與, 5年前最新討論串3/3 (看更多)
大家好~ 不好意思又來打擾 我今天忙完其他作業 又打開練習 重新寫一次 如下: n=int(input()) counter=0 while counter*counter<n: counter=counter+1 print(counter*counter) 但我的答案都會包含最後一個數值 例如n是36 我的答案都會包含36 但題目要的答案是 1 4 9 16 25 我的會多一個 思考了大約一小時還沒想出我的問題出在哪? 請問各位前輩我是否遺忘了什麼? 至於為何用while 因為給我的範例是用while 我也覺得改起來還蠻好理解的 我是蠻疑惑我明明寫counter*counter<n 是否該加一個 if ((counter+1)*(counter+1)=n): break ? 謝謝大家! ※ 引述《AmigoSafin ()》之銘言: : 大家好 : 題目是假設給一個n : 要print出小於n的square number : 例如 n給25 : 則print出 1 4 9 16 : 我的code會把0也print : 提示說就是寫一個while loop : 所以我也就是照提示寫 如下: : 還請各位高手幫忙 謝謝! : import math : n=int(input()) : counter=0 : while counter*counter<n: : A=counter*counter : if (A<0): : continue : counter = counter+1 : counter+1 <math.sqrt(n) : print(A) : 我試圖想要讓print只給我大於0的結果 : 但沒有成功 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.180.87.229 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1562521163.A.14E.html

07/08 01:48, 5年前 , 1F
印出來之前counter先加1了
07/08 01:48, 1F

07/08 01:54, 5年前 , 2F
yup!已解決 先if然後counter=counter+1 謝謝!!
07/08 01:54, 2F

07/08 15:23, 5年前 , 3F
邏輯不對吧,當你評估c*c<n時是你要的,隔行就該print
07/08 15:23, 3F

07/08 15:24, 5年前 , 4F
接下來才做c=c+1,以備下次評估及顯示用,交換不就OK?
07/08 15:24, 4F

07/08 15:25, 5年前 , 5F
也不是邏輯不對,是兩行交換就少一次評估的需要了。
07/08 15:25, 5F

07/09 08:37, 5年前 , 6F
因為還在 counter = 5 的時候你 就先 +1 再印出,所以
07/09 08:37, 6F

07/09 08:37, 5年前 , 7F
才會出現 6 的 36 ,因此應該讓 while 驗證完畢後立
07/09 08:37, 7F

07/09 08:37, 5年前 , 8F
即印出,才會精確;如果是為了不印出 0 的話,可以使
07/09 08:37, 8F

07/09 08:37, 5年前 , 9F
counter 從 1 開始,就可以得到需要的結果了。
07/09 08:37, 9F
文章代碼(AID): #1T8YvB5E (Python)
文章代碼(AID): #1T8YvB5E (Python)