我想写一个if语句,在满足某个条件之前会继续重复一个问题
这样的事情:
fun<-function(){
x<-readline("what is x? ")
if(x>5)
{print("X must be less than 5")
**repeat lines 3 & 4**
}else{
print("Correct")}
}
抱歉** - 但我不确定如何正确写出该行。我想要做的是每次输入大于5的数字时都要重复提示“什么是x”,直到给出小于5的数字。理论上,函数看起来像这样
fun()
what is x? 6
X must be less than 5
what is x? 8
X must be less than 5
what is x? 3
Correct
答案 0 :(得分:6)
我不太确定你正在使用的语言,但像while循环这样的东西应该这样做。
fun<-function(){
x<-readline("what is x? ")
while(x>5)
{
print("X must be less than 5")
x<-readline("what is x? ")
}
print("Correct")}
}
答案 1 :(得分:5)
readline
返回一个字符向量,因此您需要在if
之前将其强制转换为数字。然后你可以使用while
循环(正如其他人指出的那样)。
fun <- function() {
x <- as.numeric(readline("what is x? "))
if(is.na(x)) stop("x must be a number")
while(x > 5) {
print("X must be less than 5")
x <- as.numeric(readline("what is x? "))
if(is.na(x)) stop("x must be a number")
}
print("Correct")
}
答案 2 :(得分:4)
您可以使用控制结构while
:
continue <- FALSE
while(!continue){
x<-readline("what is x? ")
if(x>5){
print("X must be less than 5")
} else {
continue <- TRUE
print("Correct")
}
}
有关详细信息,请参阅?"while"
或?Control
答案 3 :(得分:4)
其他人提及while
,您也可以repeat
使用if
条件调用break
。这可用于创建其他语言称为“直到”循环的内容。
这感觉问题比while
选项更具问题(但它主要只是一种不同的语法风格,两者最终都会以编程方式对等)。