사용자 입력 받기
Coddy R 여정의 기초 섹션에 포함된 레슨 — 78개 중 34번째.
챌린지
쉬움이전 레슨에서 Bill Split Calculator를 위한 환영 메시지를 만들었습니다. 이제 청구서 계산을 위해 사용자 입력을 수집하는 기능을 추가해 보겠습니다.
기존 환영 메시지 다음에 사용자로부터 세 가지 입력을 읽어오세요:
- 총 청구 금액
- 팁 백분율 (정수로 입력, 예: 15%의 경우
15) - 청구서를 나누어 낼 인원수
(이 플랫폼과 같이) 비대화형으로 실행되는 R 스크립트에서는 표준 입력 스트림에서 입력을 읽습니다. 이를 위해 먼저 file()을 사용하여 "stdin"에 대한 연결을 열고, readLines()로 각 줄을 읽은 다음, 완료되면 연결을 닫습니다:
con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)각 부분의 역할은 다음과 같습니다:
file("stdin", "r")— 읽기를 위해 표준 입력 스트림을 열고 이를con에 저장합니다.readLines(con, n = 1)— 해당 연결에서 정확히 한 줄을 읽습니다. 참고:readLines()는readline()과 다릅니다.readLines()는 파일 연결(stdin포함)과 함께 작동하며n =을 사용하여 한 번에 여러 줄을 읽을 수 있는 반면,readline()은 R 콘솔에서 대화형으로만 작동합니다.suppressWarnings(...)— 이런 방식으로stdin에서 읽을 때 발생하는 무해한 경고를 숨깁니다. R이 스크립트에서stdin을 읽을 때, 모든 것이 올바르게 작동하더라도 "incomplete final line"과 같은 경고를 생성할 때가 있습니다. 호출을suppressWarnings()로 감싸면 이러한 메시지가 출력에 섞이지 않도록 숨겨주며, 읽어오는 값에는 영향을 주지 않습니다.as.numeric(...)— 텍스트 입력을 숫자로 변환합니다.close(con)— 모든 입력을 읽은 후 연결을 닫습니다.
세 개의 값을 bill, tip_percent, people이라는 이름의 변수에 저장하세요.
입력을 읽은 후, 입력된 내용을 다음 형식으로 보여주는 확인 메시지를 표시하세요:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]모든 출력에는 cat()을 사용하고 필요한 곳에 줄 바꿈 문자 \n을 포함하세요. 원치 않는 공백을 피하기 위해 각 cat() 호출에서 sep = ""를 사용하세요.
기본적으로 cat()은 출력하는 각 항목 사이에 공백을 삽입합니다. 예를 들어:
cat("Bill: $", 120, "\n") # 출력: Bill: $ 120 $와 120 사이, 그리고 줄 바꿈 문자 앞에 원치 않는 공백이 있는 것을 확인하세요. sep = ""를 추가하면 cat()에 구분 기호로 빈 문자열을 사용하도록 지시하므로 항목 사이에 아무것도 삽입되지 않습니다:
cat("Bill: $", 120, "\n", sep = "") # 출력: Bill: $120이 패턴을 세 개의 확인 메시지 라인 모두에 적용하세요:
cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")예를 들어, 입력값이 120, 18, 4인 경우 전체 출력은 다음과 같아야 합니다:
Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4직접 해보기
# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\n")