Как я могу устранить ошибку, когда пользователь вводит только «ввод» в R? - PullRequest
0 голосов
/ 30 апреля 2020

Я делаю код на основе настольной игры. В начале кода он должен спросить у игрока имя игрока, а когда игрок вводит «enter», мой код показывает ошибку. Я хочу, чтобы, когда игрок вводил «ввод», программа говорит что-то вроде «Это имя неверно», попросите повторить, спрашивая имя игрока. Вот часть моего кода:

  repeat{
    if(r==1){
      print("Name Player 1: ")
      name1=scan(,what="character",1)
      if(any(name1==gamers)){
        r=readline(prompt = "This player is already in the file. Would you like to change the name? \n 1. Yes \n 2. No \n Select an option: ")
        if(r==0){
          r<-99
        }

1 Ответ

0 голосов
/ 01 мая 2020

Вместо print(...); name1=scan(...) я бы использовал readline следующим образом:

while (!nzchar(name1 <- readline("Name Player 1: "))) TRUE
# Name Player 1:                     <-- me just hitting <enter>
# Name Player 1:                     <-- again
# Name Player 1: r2evans
name1
# [1] "r2evans"

Вы можете предпочесть максимальное количество неудачных попыток, хотя вместо того, чтобы требовать от пользователя прерывания процесс с ctrl-c, поэтому, возможно:

tries <- 3L
while (tries > 0 && !nzchar(name1 <- readline("Name Player 1: "))) tries <- tries - 1L
# Name Player 1: 
# Name Player 1: 
# Name Player 1: 

И l oop просто остановился / вышел. Вы «знаете», что пользователь решил выйти, потому что после l oop, tries == 0L и !nzchar(name1) оба указывают на намерение пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...