作者ruisme (RU)
看板Python
标题[问题] if指令中的break使用问题
时间Sat Oct 10 00:20:30 2015
版上各位好,小弟今日练习题目时出现一个伤透脑的问题
(题目是找出第11个质数,不过我想问的跟题目没有很大关系)
我的解法如下:
x = 3
my_list = [2]
while len(my_list)<12:
smallerthan_x = range(2,x)
for t in smallerthan_x:
if x%t == 0:
break
my_list.append(x)
x += 1
print my_list[10]
-------------------------------------------------------
我的想法是只要出现比x小且能整除x的数就break (不要把所有比x小的数比完)
我的理想是break後x执行+1 但不要将这个非质数x加入my_list中
但我想破头也想不到my_list.append(x)能放哪里
依目前的状况,x不论是否是质数都会算到
请问依照我的写法,有办法顺利解吗?还是我的方式有根本上的问题?
(我有查到一些很精简的写法,但是我是新手很多指令看不懂,所以想先套用目前会的)
恳请各位赐教了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.240.95.41
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1444407632.A.61F.html
请问大大,在函式中如果if的return false被执行,那下面的return true是不是就不会
被执行了? 网路上找的很多解法都用您的方式,但我就是在两个return间搞不清楚怎麽运作的。
如果不麻烦您,可以替我解惑吗?
3F:→ ihcaoe: 原po原本的程式是少记录,有没有break,有break才append 10/10 08:39
请问您,for函数中的else触发时机是什麽? 是if被拒绝之後触发吗?
还是不论if结果为何都会触发? 那for回圈中的else可以单独存在吗?(不管有没有指令)
※ 编辑: ruisme (111.240.95.41), 10/10/2015 09:10:19
※ 编辑: ruisme (111.240.95.41), 10/10/2015 09:10:57
6F:→ bigpigbigpig: smallerthan_x 中所有的 t 均无法整除 x (for 回圈 10/10 09:24
7F:→ bigpigbigpig: 执行完毕) 时才会触发 else。此时可确定 x 是质数, 10/10 09:26
8F:→ bigpigbigpig: 故可将 x 加入 my_list。 10/10 09:26
所以您的意思是说,for回圈执行完没有任何指令被触发(确定是质数),for里面的else
就能够触发吗? 感谢你><
※ 编辑: ruisme (111.240.95.41), 10/10/2015 11:36:22
9F:→ alibuda174: 执行return的话,该函式就回传、结束了 10/10 22:07
10F:→ zerof: 因为你 break (for)之後, 後面几行还是会继续执行.... 10/30 00:18
11F:→ zerof: 简单解: flag = False (加在for後一行) 10/30 00:19
12F:→ zerof: flag = True (加在break前一行) 10/30 00:20
13F:→ zerof: if flag: continue (加在 my_list.append(x) 前一行) 10/30 00:20
14F:→ zerof: 然後 x +=1 要改放在 if flag: continue 的前一行 10/30 00:22