作者AmigoSafin ()
看板Python
标题Re: [问题] 简单的回圈问题
时间Mon Jul 8 01:39:20 2019
大家好~
不好意思又来打扰
我今天忙完其他作业
又打开练习 重新写一次
如下:
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://webptt.com/cn.aspx?n=bbs/Python/M.1562521163.A.14E.html
1F:推 ckc1ark: 印出来之前counter先加1了 07/08 01:48
2F:→ AmigoSafin: yup!已解决 先if然後counter=counter+1 谢谢!! 07/08 01:54
3F:→ justoncetime: 逻辑不对吧,当你评估c*c<n时是你要的,隔行就该print 07/08 15:23
4F:→ justoncetime: 接下来才做c=c+1,以备下次评估及显示用,交换不就OK? 07/08 15:24
5F:→ justoncetime: 也不是逻辑不对,是两行交换就少一次评估的需要了。 07/08 15:25
6F:推 lmk999999: 因为还在 counter = 5 的时候你 就先 +1 再印出,所以 07/09 08:37
7F:→ lmk999999: 才会出现 6 的 36 ,因此应该让 while 验证完毕後立 07/09 08:37
8F:→ lmk999999: 即印出,才会精确;如果是为了不印出 0 的话,可以使 07/09 08:37
9F:→ lmk999999: counter 从 1 开始,就可以得到需要的结果了。 07/09 08:37