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 未満の数値が入力されるまで、5 より大きい数値が入力されるたびに「x とは何か」というプロンプトを繰り返すことです。理論的には、関数は次のようになります

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使用することもできます。これは、他の言語で「until」ループと呼ばれるものを作成するために使用できます。repeatifbreak

これは、オプションよりも質問が求めていることに少し似ているように感じwhileます(ただし、主に構文の違いにすぎず、どちらもプログラム的には同等になります)。

于 2012-06-18T19:01:28.313 に答える