Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- fastapi를 사용한 파이썬 웹 개발
- rao
- system hacking
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- PCA
- Dreamhack
- FastAPI
- ML
- Got
- bloc
- MATLAB
- BOF
- pytorch
- Kaggle
- C++
- DART
- llm을 활용 단어장 앱 개발일지
- Image Processing
- Flutter
- BFS
- Stream
- Widget
- Algorithm
- 백준
- 영상처리
- MDP
- BAEKJOON
- Computer Architecture
- study book
- ARM
Archives
- Today
- Total
Bull
[Rust] 학생 성적 출력 만들기 #series of 3GNG 본문
series of 3GNG
강의 보는 게 귀찮아서, GPT로 능동적인 공부하기: 어차피 강의는 머리에 잘 안 남아..
Code
use std::io;
use std::collections::HashMap;
use std::io::Write; // flush를 사용하기 위해 필요합니다.
fn main() {
let mut student_grades = HashMap::new();
let mut input = String::new();
loop {
println!("학생 이름을 입력하세요 (종료하려면 'done' 입력):");
io::stdout().flush().unwrap(); // 터미널에 즉시 출력하도록 flush합니다.
input.clear(); // 이전 입력을 클리어합니다.
io::stdin().read_line(&mut input).expect("입력 실패");
let name = input.trim().to_string(); // 줄바꿈을 제거하고 새로운 String으로 복사합니다.
if name == "done" {
break;
}
println!("{}의 성적을 입력하세요:", name);
io::stdout().flush().unwrap();
input.clear();
io::stdin().read_line(&mut input).expect("입력 실패");
let grade: f32 = input.trim().parse().expect("성적 파싱 실패");
student_grades.insert(name, grade); // `name`이 이제 String이므로, 직접 사용 가능합니다.
}
println!("\n학생 성적 목록:");
for (name, grade) in &student_grades {
println!("{}: {:.2}", name, grade);
}
}
| let mut
가변적으로 사용할 수 있는 변수이다. (mutable)
let x = 5;
// x = 6; // 이 코드는 컴파일 에러를 발생시킵니다. 왜냐하면 x는 불변이므로 값을 변경할 수 없습니다.
let mut y = 5;
y = 6; // 가변 변수이므로 이 코드는 정상적으로 작동합니다. y의 값을 6으로 변경할 수 있습니다.
| io::stdout().flush().unwrap();
입력 버퍼를 지우고 unwrap()을 통해 "패닉" 발생 시 패닉을 피한 후 종료한다.
Rust에서 "패닉(panic)"은 프로그램이 복구 불가능한 상태에 빠졌을 때 발생하는 런타임 에러이다.
예외 비슷한 거라고 생각하고 우선은 가볍게 넘어가자.
| io::stdin().read_line(&mut input).expect("입력 실패");
입력을 받는다. expect()는 알기 쉬운 예외 발생 시에 대한 예외 처리를 진행한다. unwrap()에서 사용했던 패닉과 비슷하다.
| f32
f32는 float 32bit 부동 소수점을 변수에 명시해준다.
| let mut student_grades = HashMap::new();
HashMap은 일반적인 키, 값을 저장하는 표준 자료구조이다.