지출 기록하기
Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 57번째.
이 프로젝트에서는 한 줄에 하나씩 명령을 읽는 지출 추적기를 만듭니다. 다섯 단계에 걸쳐 지출을 기록하고, 총액을 보고하고, 카테고리별 지출을 그룹화하고, 가장 큰 지출을 나열하고, 한 달을 요약하는 방법을 익힙니다. 각 단계는 동일한 tracker(commands) 함수를 확장합니다.
ADD 2024-05-01 food 12.50
ADD 2024-05-02 rent 500
TOTAL
CATEGORY
TOP 2
MONTH 2024-05지출 내역은 지출 항목 하나당 한 행이 있는 데이터 프레임에 저장됩니다. 처음에는 올바른 유형의 빈 열 세 개로 시작하고, rbind()는 유효한 ADD마다 한 행을 추가합니다:
expenses <- data.frame(date = character(0), category = character(0), amount = numeric(0))
expenses <- rbind(expenses, data.frame(date = "2024-05-01", category = "food", amount = 12.5))
print(nrow(expenses))
print(expenses$amount)출력:
[1] 1
[1] 12.5ADD 줄에는 네 부분과 양수가 있어야 합니다. suppressWarnings(as.numeric())를 사용하여 금액을 변환하면 잘못된 값이 경고 대신 NA가 되므로, 행을 추가하기 전에 이를 확인합니다:
parts <- strsplit("ADD 2024-05-01 food abc", " ")[[1]]
amount <- suppressWarnings(as.numeric(parts[4]))
print(length(parts) == 4 && !is.na(amount) && amount > 0)출력:
[1] FALSE챌린지
쉬움첫 번째 명령에 대해 tracker(commands)를 완성하세요:
ADD <date> <category> <amount>: 줄에 정확히 네 부분이 있고 amount가 0보다 큰 숫자라면 지출을 추가하고, amount를 소수점 둘째 자리까지 표시하여added <category> <amount>로 응답합니다. 예:added food 12.50. 그렇지 않으면invalid:뒤에 전체 명령을 이어 붙여 응답합니다.
제공된 코드는 각 입력 줄을 하나의 명령으로 tracker()에 전달하고, 반환된 각 응답을 한 줄씩 출력합니다. 날짜는 YYYY-MM-DD 형식으로 작성되며, 카테고리는 소문자 단어이고, 입력에는 지금까지 설명한 명령만 포함됩니다.
직접 해보기
tracker <- function(commands) {
expenses <- data.frame(date = character(0), category = character(0), amount = numeric(0))
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
# 여기에 코드를 작성하세요
}
replies
}
# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
cat(tracker(input), sep = "\n")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 R 컴파일러