对于R中的循环,模拟密码门

对于R中的循环,模拟密码门,r,for-loop,R,For Loop,我试图做一个简单的for循环来模拟密码门。您有三次机会输入正确的密码;否则门会被锁上。这是我的密码。然而,我得到一个错误消息由于NA 显然,在我在键盘上输入任何数字之前,代码试图计算if表达式。这真的让我对for循环在R中的工作方式感到困惑。有人能找出为什么会出现这样的错误消息以及如何修复它吗?谢谢 pw=2497 for (i in 1:3){ pw_entered=as.numeric(readline("Please enter the password: "))

我试图做一个简单的for循环来模拟密码门。您有三次机会输入正确的密码;否则门会被锁上。这是我的密码。然而,我得到一个错误消息由于NA

显然,在我在键盘上输入任何数字之前,代码试图计算if表达式。这真的让我对for循环在R中的工作方式感到困惑。有人能找出为什么会出现这样的错误消息以及如何修复它吗?谢谢

pw=2497

for (i in 1:3){
  pw_entered=as.numeric(readline("Please enter the password: "))

  if (pw_entered==pw){
    print("The door is opened. Welcome!")
    break
    
  } else {
    print("Password wrong. Please re-enter the password: ")
  }
  
} 

您可能应该将pw更改为
'2497'
删除为.numeric()
pw\u entered=readline(“请输入密码:”)


as.numeric()
将返回
NA
,如果无法将输入转换为数字。

对我来说效果很好。您输入什么输入?第一次迭代不要求我输入,而是将pw_输入为“”。这是我的更新代码:
pw=“2497”for(i in 1:3){pw_entered=readline(“请输入密码:”)print(pw_entered)if(pw_entered==pw){print(“门打开了。欢迎!”)break}else{if(i!=3){print(“请重新输入密码:”)else{print}(“密码错误。由于尝试次数过多,门已关闭。”)}}
结果如下:请输入密码:[1]”“[1]”请重新输入密码:“它跳过从键盘询问密码的第一次迭代,并将输入的密码作为”“。出于某种原因,my跳过了从键盘询问密码的第一次迭代,并将输入的密码作为”“。第一次迭代不询问我的输入,而是将输入的密码作为”“。”。这是我的更新代码:pw=“2497”for(i in 1:3){pw_entered=readline(“请输入密码:”)print(pw_entered)if(pw_entered==pw){print(“门打开了。欢迎!”)break}else{if(i!=3){print(请重新输入密码:)}else{print(“密码错误。由于尝试次数太多,门已关闭。”)}}}结果显示:请输入密码:[1]”“[1]”请重新输入密码:“我无法复制该密码。