오늘 공부한 내용
☁️
JS 코드팩토리 섹션 ~1-5
// 1_hello_world
console.log('Hello World');
console.log('Hello', 'World');
// 2_comments
// 주석처리
/**
* 주석처리
* 가능
* 와우
*/
console.log("이건 출력");
// 3_declaring_variable
/**
* variable 선언하기
*
* var - 사용안함(let, const로 다 대체됨)
* let
* const
*/
// var
var name = "code factory";
console.log(name);
var age = 32;
console.log(age);
// let
let ive = "king_god_ive";
console.log(ive);
// 이때 let과 var로 선언한 변수는 추후 값 변경 가능
ive = "love dive";
console.log(ive);
// const
const infinite = "inft";
console.log(infinite);
// infinite = "0609";
// const 변수는 추후 값 변경 불가능
/**
* 선언과 할당
*
* 선언 - 변수를 선언
* var name;
*
* 할당 - 변수에 값을 할당
* name = hchaehyun;
*
* 변수를 선언만 하고 할당하지 않는 것 가능
* let cuteCat;
* 이때 결과는 undefined로 출력됨
* const는 불가능. 무조건 할당해야 한다(값을 초기화 해야함)
*/
python chapter 4-5~
[문자열 포매팅]
문자열 포매팅: 사용자가 문자열의 포맷을 지정하는 것
이 포맷코드를 활용하면 같은 코드라도 가독성을 높일 수 있다
#수정 전
city = "seoul"
today = 12
day = "화요일"
temperature = 26
#정수형 temperature은 문자열과 덧셈 불가 -> str(문자열)로 형변환
announcement = city + "의 " + str(today) + "일 " +day + " 기온은 " + str(temperature) + "도 입니다."
#1번 방법
print(city,"의",today,"일",day,"기온은",temperature,"도 입니다.")
#2번 방법
print(announcement)
#수정 후
city = "seoul"
today = 12
day = "화요일"
temperature = 26
announcement = "%s의 %d일 %s 기온은 %d도 입니다." %(city, today, day, temperature)
print("%s의 %d일 %s 기온은 %d도 입니다." %(city, today, day, temperature)) #1번 방법
print(announcement) #2번 방법
- 숫자형은 문자열 포맷 코드 사용해 표현 가능하지만, 문자열은 숫자형 포맷 코드 사용 불가
- %.f 형태로 소수점 자리수 지정 가능 (%.2f → 소수점 둘째 자리까지)
- 정수형 → 실수형, 실수형 → 정수형 포매팅 가능
- 단, 정수 → 실수 경우 .0이 붙고, 실수 → 정수 경우 소수점 첫째 자리에서 내림 처리
- 출력시 출력 폭 지정 가능. 자동 오른쪽 정렬, 왼쪽 공백 생김. %폭d(%8d → 출력되는 내용 포함 8칸 내에서 나머지 공백)
- 왼쪽 정렬 하고싶으면 %-폭d
format()
- % 키워드 포매팅보다 더 세세한 사용 가능
- 인덱스값으로 바로 대입
- %d같은 포맷 대신 {인덱스값} 사용해 format() 함수 안의 값을 순서 상관없이 사용 가능
- 형식: “문자열.format{요소1, 요소2….}”
name1 = "김구름"
name2 = "박에듀"
age = 25
height = 181.123
print("저의 이름은 {2}입니다. 그리고 나이는 {1}살이고 키는 {0}cm입니다.".format(height, age, name1))
print("{1}의 나이:{0}, {2}의 나이: {0}".format(age, name1, name2))
- 변수 이름으로 대입
- format()a 함수 내에서 변수를 선언하고 초기화하면 그 값을 {변수명} 형식으로 받아올 수 있음
- 인덱스값과 혼용사용 가능
print("저의 이름은 {1}입니다. 그리고 나이는 {age}살이고 키는 {0}cm입니다. 제 가장 친한 친구는 {name}입니다."
.format(181.12, "김구름",height = 181.123, age = 25, name = "박에듀"))
- ”{인덱스값 또는 변수:{출력형식}}”.format(요소)” 형식으로 출력 폭 지정 가능
print("{length: >10d}".format(length = 30))
# 공백문자: (공백) ,정렬: 오른쪽 정렬, 폭: 10
# 순서대로 입력해야하고 생략 가능
print("{0:0^10}".format("goorm"))
# 공백문자: 0 ,정렬: 가운데 정렬, 폭: 10
# 순서대로 입력해야하고 생략 가능
print("{height:!>13.2f}".format(height = 181.24363))
# 공백문자: ! ,정렬: 오른쪽 정렬, 폭: 13, 소수점 2자리 표시
# 순서대로 입력해야하고 생략 가능
- f 문자열 포매팅(f-string)
- 3.6 버전 이후부터 사용 가능
- {}는 그대로 사용, 문자열 앞에 f만 붙이면 끝!
name = "김구름"
age = 25
height = 181.123
print(f"저의 이름은 {name}입니다. 그리고 나이는 {age+10}살이고 키는 {height:!^10.2f}cm입니다.")
[문자열 함수]
파이썬은 데이터를 다루는데 매우 유용하고 직관적인 내장함수(기본 함수)를 가지고 있다.
함수: 특정 기능을 수행하기 위해 제작된 명령 묶음 (ex. print())
전달인자: 함수명 옆 괄호에 들어가는 값
문자열 함수의 예시
str = " Hello goorm! I study Python. "
num = str.count(' ') #빈칸의 개수
print("빈칸의 개수는 %d입니다." %num)
print("처음 등장하는 'l'의 인덱스 값은 %d입니다." %str.find('l'))
print("Good day에서 처음 등장하는 'y'의 인덱스 값은 %d입니다." %"Good day".index('y'))
print(" ".join(str))
print(str.upper())
print(str.lower())
print(str.lstrip())
print(str.rstrip())
print(str.replace('Python', 'C'))
print(str.split())
- 이때 공백 또한 하나의 문자로 취급되는 것 유념
- 형태: 변수이름(또는 문자열 자체).함수()
len() 함수는 문자열 뿐 아니라 여러 값이 모여있는 자료형의 길이를 반환하는 함수
- 형태: len(변수 또는 값 자체)
- 공백까지 결과에 포함
#len() 예시
sentence = "I like studying Python"
print(len(sentence), len("goorm"))
🫠(개인공부)
프로그래밍실습 과제
fopen, fread, fclose 함수를 이용하여 다음의 작업을 하는 프로그램을 작성
- 이진파일 score.dat 오픈
- 아래 과정을 파일 끝에 도달할 때 까지 반복(몇 번 반복할지 알 수 없음)
- 파일에서 구조체 struct student 읽어온다
- 구조체의 내용을 콘솔 출력
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct student{
char name[10];
int hakbun;
int score;
};
int main(){
FILE *fp;
struct student s;
fp = fopen("/Users/hamchaehyeon/Documents/score.dat", "rb");
if(fp == NULL){
printf("파일열기 실패");
return 0;
}
while(fread (&s, sizeof(struct student), 1, fp) == 1){
printf("%s, ", s.name);
printf("%d, ", s.hakbun);
printf("%d\n", s.score);
}
fclose(fp);
return 0;
}
어려웠던 내용
키워드 포매팅은 어떤 언어든 좀 머리아픈 것 같다
오늘의 느낀점
다시 열심히 원상복구 시키자!
'구름 풀스택 1기 9oormthon training > 첫번째스터디 - GeepHub' 카테고리의 다른 글
[Conflict - Merge] #define _CRT_SECURE_NO_WARNING (0) | 2023.08.24 |
---|---|
[3주차] TIL - 230608 (0) | 2023.08.24 |
[3주차] TIL - 230606 (0) | 2023.08.24 |
[Conflict - Merge] 기수정렬(Radix Sort) (0) | 2023.08.24 |
[3주차] TIL - 230605 (0) | 2023.08.24 |