2

我想写一个 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
4

4 回答 4

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")}
}
于 2012-06-18T18:42:37.357 回答
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")
}
于 2012-06-18T18:44:49.103 回答
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

于 2012-06-18T18:43:12.710 回答
4

其他人提到while,您也可以repeatif条件调用一起使用break。这可用于创建其他语言所称的“直到”循环。

这感觉更像是问题所问的,而不是while选项(但它主要只是一种不同的语法风格,两者最终在编程上是等效的)。

于 2012-06-18T19:01:28.313 回答