如何创建一个给定正整数的函数,返回一个向量,该向量的数字是 5 的倍数?
Posted
技术标签:
【中文标题】如何创建一个给定正整数的函数,返回一个向量,该向量的数字是 5 的倍数?【英文标题】:How to create a function that given a positive integer, returns a vector with the numbers multiples of 5 that exist? 【发布时间】:2021-12-26 17:54:49 【问题描述】:我必须创建一个mult5
函数,给定一个正整数,返回一个向量,其中包含小于或等于该数字的 5 的倍数。例如,对于数字 17,mult5 (17)
应返回向量 (0, 5, 10, 15)。我不能使用任何类型的循环或 sapply / lapply。
我想我可以用 seq 函数做到这一点,但我不知道怎么做。这就是我尝试过的:
mult5 <- function(numero)
modulo = numero %% 5 == 0
seq = seq(from = 0, to = numero, by = modulo)
但我认为我不能将变量放入序列函数中并引发错误。 谁能解释或告诉我我能做什么?
测试:
is.list(mult5(24)) == FALSE
all(mult5(24) == c(0, 5, 10, 15, 20))
check.not.command("for", mult5)
check.not.command("while", mult5)
我不能使用 for/while。
错误信息:
Error in seq.default(from = 0, to = numero, by = modulo) :
invalid '(to - from)/by'
【问题讨论】:
不需要模数。seq(0, numero, by = 5)
结果和错误信息是什么?
您的错误是因为numero %% 5 == 0
返回TRUE/FALSE
,这不是seq
中by
参数的有效值
【参考方案1】:
如果numero
不是 5 的倍数,seq
函数已经具有您需要的行为,因此您可以将代码简化为:
mult5 <- function(numero)
seq(from = 0, to = numero, by = 5)
【讨论】:
【参考方案2】:这是我的例子:
def check(number: int):
lst = list(range(0, number, 5))
print(lst)
使用@diggusbiccus 建议编辑
【讨论】:
list(range(0,number,5)) @diggusbickus 你是对的,更pythonic的方式以上是关于如何创建一个给定正整数的函数,返回一个向量,该向量的数字是 5 的倍数?的主要内容,如果未能解决你的问题,请参考以下文章