풍성한 라벤더농장이 될때까지
article thumbnail

오늘 공부한 내용

☁️

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;
}


어려웠던 내용

키워드 포매팅은 어떤 언어든 좀 머리아픈 것 같다


오늘의 느낀점

다시 열심히 원상복구 시키자!

profile

풍성한 라벤더농장이 될때까지

@그레이라벤더

느리지만 꾸준히 굴러서 큰 바다가 되고싶은 개발 어린이