我需要编写一个函数TRUE
,它接受一个整数n>如果数字是素数,则返回False
,否则返回False
。但是当我输入2时,它总是返回def is_prime(x):
if(x > 1):
for i in range(2,x+1):
if( x % i == 0):
return False
else:
return True
else:
return False
。无论如何要纠正这个?
*scanf
答案 0 :(得分:2)
答案 1 :(得分:1)
两个问题:
第一个问题是范围包括数字本身,这意味着它将始终返回true(对于数字> 1),因为素数可以自行划分......
修正:将range(2,x+1)
更改为:range(2, x)
第二个问题,第一个else
应该与for
对齐(我们只有在尝试了所有数字后才会返回true并确保它们都没有划分x
)
固定代码:
def is_prime(x):
if x > 1:
for i in range(2,x):
if x % i == 0:
return False
else:
return True
else:
return False
答案 2 :(得分:0)
虽然@ alfasin的解决方案是正确的(+1),但我发现sp <- split(dat, dat$nutrient.component.)
res <- lapply(sp, function(x){
if(nrow(x) == 2 & is.na(x$nutrients[x$grain == "Brown Rice"]))
x$grain[x$grain == "Brown Rice"] <- "White Rice"
x
}
)
rm(sp) # tidy up
res <- do.call(rbind, res)
res
的使用使得理解起来更具挑战性。
else
循环上的else
特别要求我重读Python文档,因为大多数消息来源称for
表示 没有中断 ,但这实际上意味着 正常完成 ,对于根本没有运行的循环,这是正确的!
这是我的修改删除了else
语句,这些语句并非严格需要:
else
正如其他人会指出的那样,这可能是一个低效的主要测试,你可以写。但它确实有效。