12/27 PYTHON 2일차

빨강·2023년 12월 27일
0

기록 - Python

목록 보기
4/14
post-thumbnail

12/27

  • 08:00 오늘의 등교 송 - 이소라 ‘사랑이 아니라 말하지 말아요’

    • 내가 가는 길이 길이 아니라 말하지 말라
  • 08:50 정태옥 대학원장님 말씀

    • 기개세 : 새로운 일을 시작할 때의 각오는 이러해야 한다
      • 일본 석월성 스님의 시 장동유제벽

        <將東遊題壁 : 동쪽으로 떠나며 벽에 쓰다>

        男兒立志出鄕關 (남아입지출향관)

        學若不成死不還 (학약불성사불환)

        埋骨何期墳墓地 (매골가기분묘지)

        人間到處有靑山 (인간도처유청산)

        사나이 뜻을 세워 고향을 떠났으면

        배워서 뜻을 이루지 못할 바에야 죽어도 돌아가지 않으리.

        뼈 묻힐 땅이 어찌 그 땅 뿐이랴.

        인간이 가는 곳엔 푸른 산이 있느니라.

        출처 : https://blog.naver.com/mgblsori/221119526954

      • 안중근 의사

        국내 진입 작전 당시 읊었던 愛國詩(애국시)

        男兒有志出洋外 (남아유지출양외) 

        不事入謀難處身 (불사입모난처신)  

        望須同胞誓流血 (망수동포서류혈)  

        莫作世間無義神 (막작세간무의신) 

        사나이 뜻을 품고 나라밖에 나왔다가

        큰일을 못 이루니 몸 두기 어려워라.

        바라건 데 동포들은 죽기를 맹세하고

        세상에 의리 없는 귀신은 되지 말자.

        출처 : https://poslink.tistory.com/entry/안중근-의사-한시-남아유지출양외安重根-義士-漢詩-男兒有志出洋外

      • 모택동

        孩兒立志出郷關 해아입지출향관
        學不成名誓不還 학불성명서불환
        埋骨何須桑梓地 매골하수상재지
        人間無處不靑山 인간도처무청산

        은 모택동이 아니고 당시에 애송하던 구절이라는 출처 블로그글(https://koya-culture.com/news/article_print.html?no=131912)

      • 강사님 덧붙임 : 기업 특강 등은 적어두면 후에 이력서 등에 쓸 일이 생길 수도

  • 09:00 교재 [파이썬 코딩 도장] - 전 기수가 이전 교재를 어려워해서 바꿨다고 함

    • 어제 숙제는 앞으로 무엇을 할 지 생각해보라는 것 (도메인, 빅데이터, 인사이트, 자기 관심분야)
    • 추후에 수학능력 분석 숙제가 나갈 것(일주일 정도?)
    • 책에 있는 모든 내용은 해봐야 함 + 용어 숙지 - 1차 숙제
    • p.21쪽부터
    • p.32 우리는 IDLE 대신 아나콘다, 파이참 사용
    • p.42 코딩도장 파이썬 등록
    • p.44 퀴즈 풀기
    • 파이참 하단 My_38 외의 인터프리터 설정하는 법(현재 파이썬 3.8.xx)
    • hello.py print(”Hello~”)
    • 콘솔창에 대한 설명
      • print(”Hello~”) ⇒ 함수명(Data) 의 결과가 콘솔창에 나타남 ⇒ 콘솔창의 Hello~
    • “#” : 주석 comment - 인터프리터가 실행하지 않고 넘어감, 함께 일하는 개발자를 위해 작성하는 것. 코드에 대한 설명을 작성하는 용도, 과하지 않게 꼭 필요한 곳만
    • 토글링 : 블럭 설정 후 ctrl+/ 로 이전 주석의 반대상황을 만듦. 맥은 cmd+/
    • 콘솔 좌측 파이썬 모양(파이썬 콘솔) : “>>>”는 프롬프트, 이후 깜빡이는 커서는 명령어 입력 가능하다는 의미, 짧은 명령은 여기서 확인, 긴 명령어는 파일에 저장(스크립트 방식), 종료는 “exit()”
      • ‘명령어(시키고 싶은 일) 입력 - 결과 확인’ 대화형 방식/ interactive
      • 명령어/코드를 파일로 작성(.py) - 파일 단위로 실행 스크립트 방식
    • ‘’’ (내용) ‘’’ or “”” (내용) “””로 여러줄 주석 가능
    • 코드는 작성 후 반복 재사용하기 위해 함수명을 짓는 것
  • 10:10

    • MBTI 프로그램을 만든다면?
      • 재료
        • MBTI 질문 항목 30개 : 글자
        • 항목별 점수 : 숫자
        • MBTI별 특징 : ISTJ는 ~
      • 입력
        • 질문에 대한 답변 30개
      • 결과
        • 글자와 숫자 혼용
    • 계산기라면?
      • 재료
        • 숫자 0 ~ 9
      • 결과
        • 정수, 실수
    • 우리는 글자, 숫자(정수, 실수)를 이용하므로 이 데이터를 기계어 0과 1로 입력/표현하는 규칙을 알아야 함
      • 정수 int, 실수 float, 복소수 complex
      • 문자 str, ‘하늘’, “하늘”로 표기
    • 메모리 누수 관리를 잘 해야 함 = 효율적인 사용
      • 메모리를 일단 쪼개야 함 - 1개의 문자 저장 크기 = 2진수 8자리 - 1자리 당 비트bit, 8자리가 바이트byte
      • 바이트로 쪼갠 후 0번부터 번호 할당한 것이 주소memory address
      • 목적에 따라 다시 묶음
        • 텍스트 영역 or 코드 영역 : 메모리가 프로그램 시작~종료까지
        • 데이터 영역 : cpu가 실행
          • 스택 영역 : 고정된 데이터 값 저장(여러 파일에서 공통으로 사용), 함수/지역/매개변수
          • 힙 영역 : 변동되는 데이터 값 저장(이 파일에서만 사용) 객체/python memory manager 관리 - 객체지향언어는 메모리매니저가 자동으로 관리하는 방식으로 작동 (garbage collector가 garbage data를 정리) - C언어는 이게 안됨
          • 스택/힙 영역에서 메모리 누수가 발생됨
          • 우리는 코드 / 데이터 ㅡ (힙/스택) 정도를 이해하면 됨
          • "스택(Stack)"과 "힙(Heap)"이라는 용어는 각각 다른 의미와 콘텍스트에서 비롯된 것입니다.
          1. 스택(Stack):
            • 단어 의미: "쌓다"라는 뜻으로, 물건이나 데이터를 차곡차곡 쌓아 올리는 것을 의미합니다.
            • 콘텍스트: 메모리 스택은 데이터를 후입선출(Last In, First Out) 구조로 저장하는데, 이는 데이터를 마치 책 더미처럼 위에서부터 차곡차곡 쌓아 올린다는 아이디어에서 나온 용어입니다. 함수 호출이나 로컬 변수와 같이 스택에서 처리되는 데이터는 쌓이고 제거되는 구조를 갖습니다.
          2. 힙(Heap):
            • 단어 의미: "쌓아 올리다" 또는 "더미"를 의미하며, 어떤 무언가를 큰 더미로 쌓아 놓는 것을 나타냅니다.
            • 콘텍스트: 메모리 힙은 프로그램 실행 중에 동적으로 할당된 데이터를 저장하는 공간으로, 사용자가 직접 메모리를 할당하고 해제할 수 있습니다. 이는 프로그래머가 필요에 따라 메모리를 큰 더미로 쌓아 올릴 수 있다는 아이디어에서 비롯된 용어입니다.
  • 11:00

    • 표준 입출력 stdin stdout (std=standard)
    • 데이터 자체는 힙 영역에 저장되지만 그 주소는 스택 영역에 저장됨 = 변수는 스택, 데이터는 힙에
    • 변수명은 영어로 시작, 영어/숫자/_ 사용 가능 ; 변수 이름을 보고 알 수 있게 지어야,
      • 파이썬에서 변수 이름이 숫자로 시작하는 것이 허용되지 않는 이유에는 몇 가지가 있습니다:
      1. 파서의 일관성: 파이썬의 구문 분석기(parser)가 일관성 있게 동작하도록 하기 위함입니다. 숫자로 시작하는 식별자는 파서에서 다른 숫자 리터럴과의 모호성을 초래할 수 있습니다.
      2. 가독성: 변수 이름이 숫자로 시작하는 경우, 코드의 가독성이 떨어질 수 있습니다. 다른 프로그래머나 코드 리더가 해당 변수가 숫자로 시작한다는 사실을 인지하기 어렵고, 일관성 있는 명명 규칙을 유지하는 데 도움이 됩니다.
      3. 언어의 일관성: 파이썬은 PEP 8과 같은 코딩 스타일 가이드를 제공하며, 이는 코드의 일관성을 유지하고 가독성을 향상시키기 위한 것입니다. 이러한 가이드는 변수 명명 규칙을 정의하고 숫자로 시작하는 변수를 피하도록 권장합니다.
      4. 다른 언어와의 호환성: 다른 일부 프로그래밍 언어에서도 변수 이름이 숫자로 시작하는 것을 허용하지 않는 경우가 많습니다. 파이썬은 다양한 환경에서 사용되며, 언어 간의 일관성을 유지하여 코드 이식성을 높이는 것이 중요합니다.
    • 다른 언어는 스택영역에 데이터는 원시데이터(기본데이터)가 그대로 저장 - *파이썬은 힙에 저장 후 힙의 주소만 스택에 저장
    • https://pythontutor.com/visualize.html#mode=edit에서 볼 수 있음 - 설정 show all frames/ render all objects on the heap / draw pointers as arrows 후 Visualize Execution 실행
  • 13:00

    • 변수명 : 변수명은 영어로 시작, 영어/숫자/_ 사용 가능 ; 변수 이름을 보고 알 수 있게 지어야, 대소문자 구분, 예약어(특정 기능의 코드 묶음 즉, 파이썬에서 이미 사용하고 있는 단어들) 사용 불가
    • 크림스파게티의 재료와 조리법이 모두 있어야 하듯 메모리에 클래스와 데이터가 있어야 함 ⇒ 저장되면 이름이 객체(object)로 바뀜
    • 특징들을 모은 것이 클래스, 클래스에 해당하는 데이터가 객체가 됨 = 상세하게 표현하면 int instance / float instance / str instance
    • 함수 : 함수명(데이터1, 데이터2, …, 데이터n) ⇒ print( 1, 2, 3) 같은 식으로 가능
  • 14:00

    • 실습이 바빠서 내용정리 따로 없음. ex_print.py 참고
  • 15:20

    • input - 모든 입력문자는 str
    • 논리자료형(불 타입) : True, False 두 가지만 있음
    • type을 바꿀 때 : 형 변환(type casting) - 모든 언어에 다 있음
  • 16:20
    - 클래스 : 특징, 기능/역할에 따라 표준화, 이에 맞으면 포함
    - 변수와 함수(메서드)로 표현
    - (정수). 처럼 . 찍으면 정수에 쓸 수 있는 함수(메서드)와 필요 변수(해당 메서드에서만 쓸 수 있는 어트리뷰트, 프라퍼티)가 나옴





코딩도장 교재 연습 코드

코딩도장 퀴즈

1.    다음 중 'Hello, world!'를 출력하는 방법으로 올바른 것을 고르세요.

  • print(’Hello, world!’)
  1. 콘솔(터미널, 명령 프롬프트)에서 파이썬으로 dojang.py 파일을 실행하는 방법을 입력하세요.
  • python dojang.py
  1. 다음 중 10 / 4를 계산한 결과로 올바른 것을 고르세요(파이썬 3).
  • 2.5
  1. 다음 중 계산식의 결과를 실수로 만드는 방법으로 올바른 것을 고르세요.
  • float(10 // 3)
  1. 3. 7 + (10 - 5) * 2의 계산 결과를 입력하세요.
  • 17
  1. 다음 중 변수를 만드는 방법으로 올바른 것을 고르세요.
  • x = 10
  1. 다음 중 변수 이름으로 사용할 수 없는 것을 모두 고르세요.
  • a, c, e, g, h
  1. 다음 중 변수와 연산자의 사용 방법으로 올바르지 않은 것을 모두 고르세요(파이썬 3).
  • b, d







hello.py

# 주석 comment => 인터프리터가 해석하지 않는 코드
# 코드에 설명을 작성 하는 용도 => 필수!!
print("Hello~")

# 시키고 싶은 일 : 숫자, 글자 데이터를 화면에 출력하기
# 출력하기 ==> print(데이터)
# 숫자 데이터 출력 => 정수 int
print(2024)
#print(1227) print(33) SyntaxError: invalid syntax - 문법 에러 : 유효하지 않은 문법
print(1227)
print(33)
#한 줄에 하나씩 쓰는 것이 기본 원칙
print(1000)

# 숫자 데이터 출력 => 실수 float
print(2.9)
print(5.123)
print(1.) #'.'이 붙어서 실수가 됨. 0이 생략된 실수 형태이므로 1.0으로 표기

# 문자/글자/문자열 데이터 출력 => 글자 str
# '데이터', "데이터"
# print(홍길동) NameError: name '홍길동' is not defined
print('홍길동') #홍길동
print("'홍길동'") #'홍길동'
# print(""홍길동"") SyntaxError: invalid syntax
print('"홍길동"') #"홍길동"
# print(''홍길동'') SyntaxError: invalid syntax
print("Happy New Year")
print('2024.') #2024는 정수, 2024.은 실수 '2024.'는 문자열

#'''데이터'''', """데이터""" : 여러줄 문자열
print('''Good
Luck
Happy''') #여러줄 문자는 ''' 이용, 주석에도 이용되지만 데이터에 들어가면 용도 바뀜
print('''Good
         Luck
         Happy''') # Luck, Happy 앞의 공백까지 표기되므로 위와 같이 해야
#print('Good
#       Luck
#       Happy') 홑따옴표 하나만 있을 때는 에러남
print("""Good
        Luck
        Happy""") #Good /      Luck /     Happy 식으로 표기됨
save_data.py

'''
데이터를 메모리에 저장하는 방법
=> 파이썬 문법 : 변수명 = 저장할 데이터 - 오른쪽에 있는 것을 왼쪽에 저장
=> 파이썬의 변수는 힙영역에 저장된 데이터 주소를 저장하는 변수
=> 참조 변수
'''

# 나이를 메모리에 저장하기
# => 나이 : 정수 int ==> 힙 영역
# => 변수 = age
age = 100 #100은 힙에 저장되고, 100의 주소값이 age라는 변수에 저장됨
# 'age'=100의 경우는 변수가 아니라 문자로 인식하므로 값이 할당되지 않음

#이름을 메모리에 저장하기
# => 이름 : 문자 str ==> 힙 영역
# => 변수 ==> name

_name="홍길동"
name="홍길동"
my_name="홍길동"
# 99name="홍길동" <== X, 숫자는 변수이름으로 첫번째 불가

# if="Good" # 툴에서는 예약어가 있다고 알려주지만, 메모장 등에서 작성 시 구분이 안됨
# False="Good" #예시2

#메모리에 저장은 됨 ==> 저장된 데이터 위치 알 수 없음 => 다시 사용 불가
2024
"Good Luck"

year = 2024     #2024 데이터가 저장된 주소를 year 이름이 붙은 메모리에 저장한 것
                #year는 스택, 2024는 힙
print(year)

# --------------------------------------------------------
# 데이터의 주소를 확인하는 내장함수 => id( 실제 데이터 ) / id( 변수명 )
# --------------------------------------------------------

print(id(2024)) #4376126064 print 꼭 넣기
print(id(year)) #4376126064

year=2023
print( id(year)) #4349633360

# --------------------------------------------------------
# 변수가 저장하고 있는 데이터의 종류 즉, 데이터의 데이터 타입을 알려주는 함수
# => type( 데이터 ) 또는 type( 변수명 )
# --------------------------------------------------------

print(type(2024)) #<class 'int'>
print(type(4.)) #<class 'float'>
print(type('4.')) #<class 'str'>
ex_print.py

"""
출력 기능의 내장함수 print()
"""

# 1개 데이터 화면 출력--------------
print(1000)

# 2개 데이터 화면 출력--------------
print(100,200)
print(100, "Good Luck")

# 여러 개 데이터 화면 출력--------------
print("ABC", 5., "1000", "HappyNewYear") #print는 결괏값이 아님 중간 과정을 그냥 보여주는 것
data=print(100, "Good Luck")
print(data)

# 데이터가 없는 경우 화면 출력 ----------
print( ) #없어도 상관없음. 뒷쪽에 다시 다룰 것

# ---------------------------------
# 데이터 출력을 좀 더 편하게 하는 방법들
# => 문자열과 숫자가 섞여 있는 경우가 대부분
# ---------------------------------
# [출력] 오늘은 2024년 12월 27일입니다. -------------
print('오늘은 2024년 12월 27일입니다.') #오늘은 2024년 12월 27일입니다.

year = 2024
month = 12
day = 27

print('오늘은', year, '년', month, '월', day, '일입니다') #오늘은 2024 년 12 월 27 일입니다.

# 변수를 str에서 적용해서 출력하는 방법 --- (1) ' %알파벳1개 ' 서식지정자 방식
# %d -- 10진수~정수 ===> '당신의 나이는 %d입니다.' %age
# %f -- 실수       ===> '평균이 %f점입니다.' %avg
# %s -- 문자열      ===> '당신의 %s입니다.' %name

age = 130
avg = 98.4
name = '마징가'

print( '당신의 나이는', age, '세 입니다.')
print( '당신의 나이는 %d세입니다.'%age)
print( '평균이 %f점 입니다.'%avg)
print( '당신의 고향은 %s입니다.'%name)
print( '당신의 나이는 %d세, 평균은 %f점, 고향은 %s이군요')
print( '당신의 나이는', age, '세, 평균은', avg, '점, 고향은', name, '이군요')

print('오늘은 %d년 %f월 %s일입니다.'%(year, month, day)) #오늘은 2024년 12.000000월 27일입니다.
print('오늘은 %d년 %d월 %d일입니다.'%(year, month, day)) #오늘은 2024년 12월 27일입니다.

# 변수를 str에서 적용해서 출력하는 방법 --- (2) f' {변수명 ' f-스트링방식}

print(f'당신의 나이는 {age}세 입니다.')
print('당신의 나이는 {age}세 입니다.') #f가 없으므로 변수를 인지하지 못함

print(F'평균이 {avg}점 입니다.')
print(f'당신의 나이는 {age}세, 평균은 {avg}점, 고향은 {name}이군요')

# ----------------------------------------------------------
# [실습1] 본인 이름, 전공, 나이를 메모리 저장하기
#        저장된 정보를 아래와 같은 형태로 출력하세요.
#        이름 : 홍길돌
#        전공 : 체육학과
#        나이 : 21세
# ----------------------------------------------------------

name = '이시명'
major = '국어국문학과'
age = 34

print(f'''이름 : {name}
전공 : {major}
나이 : {age}세''')

print("이름 :", name)
print("전공 :", major)
print("나이 :", age, "세")

print("이름 : %s" %name)
print("전공 : %s" %major)
print("나이 : %d세" %age)

# -------------------------------------------------------------
# 특별한 의미를 가지는 문자 조합 ==> 이스케이프 문자
# \ 백슬러쉬 + 알파벳 1개
# \n --- new line 약자, 줄바꿈 --- 가장 많이 사용
# \t --- tap 약자, 키보드 탭키 만큼의 간격
# -------------------------------------------------------------

print(f"이름 : {name}\n전공 : {major}\n나이: {age}세") #\n와 f는 관계 없음
print(f"이름 : {name}\t전공 : {major}\t나이: {age}세")

# -------------------------------------------------------------
# print()함수에서 여러 개의 데이터를 분리해서 출력해주는 방법
# - 기본 : 공백
# - 변경 : sep 매개변수  => 여러 개 데이터를 화면에 보기 좋게 분리시켜주는 방법
# -------------------------------------------------------------
print("홍", "길동") #홍 길동 --- 기본 공백
print("홍", "길동", "의적") #홍 길동 의적
print("홍", "길동", "의적", sep="") #홍길동의적
print("홍", "길동", "의적", sep="*****") #홍*****길동*****의적

print(f"이름 : {name}", f"전공 : {major}", f"나이: {age}세", sep="\n")

# -------------------------------------------------------------
# print()함수에서 데이터 화면 출력 후 끝에 추가하는 문자 지정
# - 기본 : 줄바꿈 이스케이프 문자 \n
# - 변경 : end 매개변수 => 화면 출력 후 원하는 문자를 지정할 수 있음
# -------------------------------------------------------------
print("A", end='')                       #A
print("B", end='')                       #B
print("C")              #ABC             #C\n

print("A", end='')                       #A
print("B", end='***')                    #B***
print("C")              #AB***C          #C\n

# -------------------------------------------------------------
# [실습] 아래와 같이 출력이 되도록 코드를 작성하세요.
#       단, print()함수는 1개만 사용
#       ABCDEFG
#       123456789
#       ABCDEFG
# -------------------------------------------------------------
# [방법1] - 이스케이프문자 사용
print("ABCDEFG\n123456789\nABCDEFG")
# -------------------------------------------------------------
# [방법2] - print()함수의 sep 사용
print("ABCDEFG","123456789","ABCDEFG", sep='\n')
# -------------------------------------------------------------
# [방법3] - print()함수 여러 개 사용하는 경우
print("ABCDEFG")
print("123456789")
print("ABCDEFG")
# -------------------------------------------------------------
# [방법4] - ''' ''' 사용하는 경우
print('''ABCDEFG
123456789
ABCDEFG''')
# -------------------------------------------------------------
ex_input.py

'''
표준입력기능의 내장함수 => input()
- 문법 : input("요청메시지")
- 결과 : 입력받는 데이터, 데이터 종류는 str
'''

# 이름을 입력받기 ==> input
name = input("이름이 뭐니? ")
x = 123
#입력 받은 데이터 출력하기 ==> print(n)
print("당신 이름은 ", name, "이군요.", sep='')
print("당신 이름은 %s이군요."%name)
print(f"당신 이름은 {name}이군요.")

# 나이 입력 받기 => input
age = input("몇 살이야?")

# 입력 받은 나이와 타입 출력 => type()
print(age, type(age)) #32 <class 'str'>, input은 모두 str

# 숫자 2개를 입력 받기 => input() 2개 사용
number1 = input("정수 1개 입력: ")
number2 = input("정수 1개 입력: ")

print(number1, type(number1))
print(number2, type(number2))

# -------------------------------------------------------------
# str ==> int 타입으로 형 변환 즉, 타입 캐스팅(Type Casting)
# - 함수 : 타입명( 데이터 )
#         str( 데이터 )   : 데이터를 str 타입으로 형 변환
#         int( 데이터 )   : 데이터를 int 타입으로 형 변환
#         float( 데이터 ) : 데이터를 float 타입으로 형 변환
#         bool( 데이터 )  : 데이터를 bool 타입으로 형 변환
# -------------------------------------------------------------

# 입력받은 정수 2개 정수로 타입 변환
int(number1)  #이 순간만 int, 저장하지 않으므로 다시 str
int(number2)
print(number1, type(number1))  #13 <class 'str'>
print(number2, type(number2))  #15 <class 'str'>

number1 = int(number1) #저장하였으므로 int로 새롭게 할당
number2 = int(number2)
print(number1, type(number1))  #13 <class 'int'>
print(number2, type(number2))  #15 <class 'int'>

# -------------------------------------------------------------
# 계산하기 => 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/)
# -------------------------------------------------------------

print(number1+number2) #합 값만 나옴

#[출력] 10 + 30 = 40 식으로 표현하고 싶음

print(f"{number1} + {number2} = {number1+number2}") #10 + 30 = 40
print(f"{number1} - {number2} = {number1-number2}") #10 - 30 = -20
print(f"{number1} * {number2} = {number1*number2}") #10 * 30 = 300
print(f"{number1} / {number2} = {number1/number2}") #10 / 30 = 0.3333333333333333

# -------------------------------------------------------------
# 계산하기 => 몫(//), 나머지(%)
# -------------------------------------------------------------

print(f"{number1} // {number2} = {number1//number2}") #10 // 30 = 0
print(f"{number1} % {number2} = {number1%number2}") #10 % 30 = 10

# -------------------------------------------------------------
# 계산하기 => 제곱(**)
# -------------------------------------------------------------

print(f"{number1} ** {number2} = {number1**number2}") #10 // 30 = 0
ex_numberic.py

'''
수치 데이터 살펴보기
- 정수 => class int       : 양수, 0, 음수
- 실수 => class float     : 소수점 존재
- 복소수 => class complex
'''
# ----------------------------------------------------------
# [실습] 2개의 정수를 입력받기
# -> input() 함수 2개 사용
# -> str => int 타입 캐스팅
# ----------------------------------------------------------

# [방법1]
# number1 = int(input("첫 번째 정수를 입력해주세요: "))
# number2 = int(input("두 번째 정수를 입력해주세요: "))

# [방법2]
number1 = input("첫 번째 정수를 입력해주세요: ")
number2 = input("두 번째 정수를 입력해주세요: ")
number1 = int(number1)
number2 = int(number2)

# ----------------------------------------------------------
# 비교 연산 결과 출력
# [ 출력 ] 10>3 => True
print("%d>%d => %s" %(number1, number2, number1>number2))
# print(f"{number1}>{number2} => {number1>number2}")

print("%d<%d => %s" %(number1, number2, number1<number2))

print("%d>=%d => %s" %(number1, number2, number1>=number2))

print("%d<=%d => %s" %(number1, number2, number1<=number2))

print("%d==%d => %s" %(number1, number2, number1==number2))

print("%d!=%d => %s" %(number1, number2, number1!=number2))

# ----------------------------------------------------------
dojang.py

# p.50~

print('Hello, world!')
print('Python Programming')

print('Hello'); print('1234')

# Hello, world! 출력
print('Hello, world!')

a = 1 + 2 # 더하기
print('Hello, world!') #print('1234567890')

#print('Hello, world')
#print('12345667890')

# 더하기
# a = 1 + 2
print('Hello, world!')

# if a == 10:
# print('10입니다.') # IndentationError: expected an indented block

if a == 10:
    print('10입니다.')    #들여쓰기 공백은 4칸

if a == 10:
    print('10')
    print('입니다.')

#p.55~
#프롬프트에서 해보기
#사칙연산
# >>> 1+1
print(1+1)
# >>> 1-2
print(1-2)
# >>> 2*2
print(2*2)
# >>> 5/2
print(5/2)
# >>> 4/2
print(4/2)
#
# #몫 구하기
# >>> 5//2
print(5//2)
# >>> 4//2
print(4//2)
# >>> 5.5//2
print(5.5//2)
# >>> 4//2.0
print(4//2.0)
# >>> 4.1//2.1
print(4.1//2.1)
#
# #나머지 구하기
# >>> 5 % 2
print(5%2)
#
# #거듭제곱 구하기
# >>> 2 ** 10
print(2**10)

#값을 정수로 만들기
#int(3.3)
print(int(3.3))
#int(5/2)
print(int(5/2))
#int('10')
print(int('10'))

#몫과 나머지 함게 구하기
print(divmod(5,2)) #(2,1)
quotient, remainder = divmod(5,2)
print(quotient, remainder) #2 1

#2진수'0b', 8진수'0o', 16진수'0x' or '0X'
print(0b110) #6
print(0o10) #8
print(0xF) #15

#객체의 자료형 알아내기
print(type(10)) #<class 'int'>

#실수 계산하기
print(3.5 + 2.1) #5.6
print(4.3 - 2.7) #1.5999999999999996 실숫값의 오차로 반올림
print(1.5 * 3.1) #4.65
print(5.5 / 3.1) #1.7741935483870968

#실수와 정수를 함께 계산하면? - 표현 범위가 넓은 쪽으로 계산됨
print(4.2 + 5) #9.2

#값을 실수로 사용하기
print(float(5)) #숫자 5.0
print(float(1 + 2)) #계산식 3.0
print(float('5.3')) #문자열 5.3
print(type(3.5)) #<class 'float'>

#복소수 - 뒤에 j 붙여서
print( 1.2 + 1.3j) #(1.2+1.3j)
print(complex(1.2, 1.3)) #(1.2+1.3j)

#괄호 사용하기 - 곱셈, 나눗셈 먼저
print(35 + 1 * 2) #37
print((35 + 1) * 2) #72

# p.63 ~

# 변수 만들기
x = 10
print(x) #10

y = 'Hello, world!'
print(y) #Hello, world!
# "=" 기호는 오른 쪽 값을 변수에 할당한다는 의미, 실제 "="는 "=="로 표기

# 변수의 자료형 알아내기
print(type(x)) #<class 'int'>
print(type(y)) #<class 'str'>

x, y, z = 10, 20, 30
print(x) #10
print(y) #20
print(z) #30

# x, y, z = 10, 20
# print(x) #10
# print(y) #20
# print(z) #ValueError: not enough values to unpack (expected 3, got 2) - 값이 3개 필요한데 2개만 주어짐

x = y = z = 10
print(x) #10
print(y) #10
print(z) #10

x, y = 10, 20
x, y = y, x #x=10, y=20 값이 x=20, y=10으로 새로 할당됨
print(x) #20
print(y) #10

#변수 삭제하기
x = 10
del x
# print(x) NameError: name 'x' is not defined 변수 x가 정의되지 않음

#빈 변수 만들기
x = None
print(x) #None 다른 언어에서의 Null

#변수로 계산하기
a = 10
b = 20
c = a + b
print(c) #30

a = 10
print(a + 20) #30
print(a) #10

a = 10
a = a + 20
print(a)

a = 10
a += 20
print(a)

#d += 10 NameError: name 'd' is not defined 변수 d가 정의되지 않음

#부호 붙이기
x = -10
print(+x) #-10
print(-x) #10

#입력 값을 변수에 저장하기
#input() "Hello World!" 입력

#x = input()
#print(x) 입력한 값이 그대로 출력

# x = input('문자열을 입력하세요: ')
# print(x)

# 두 숫자의 합 구하기
# a = input('첫 번째 숫자를 입력하세요: ') #10
# b = input('두 번째 숫자를 입력하세요: ') #20
# print(a+b) #1020

# # 입력 값을 정수로 변환하기
# a = int(input('첫 번째 숫자를 입력하세요: ')) #10
# b = int(input('두 번째 숫자를 입력하세요: ')) #20
# print(a+b) #30

#입력 값을 변수 두 개에 저장하기
# a, b = input('문자열 두개를 입력하세요: ').split()
# Hello Python 입력
# print(a) Hello
# print(b) Python

# a,b = input('숫자 두 개를 입력하세요: ').split() #10 20
# print(a + b) #1020

# a, b = input('숫자 두 개를 입력하세요: ').split()
# a = int(a) #10
# b = int(b) #20
# print(a+b) #30
# print(int(a) + int(b)) #30

# a,b = map(int, input('숫자 두 개를 입력하세요: ').split()) #10 20
# print(a+b) #30

# a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) #10,20
# print(a+b) #30

#값을 여러 개 출력하기
print(1,2,3)
print('Hello', 'Python')
print(1, 2, 3, sep=', ')
print(4, 5, 6, sep=', ')
print('Hello', 'Python', sep='')
print(1920, 1080, sep='x')

#줄바꿈 활용하기
print(1, 2, 3)
print(1, 2, 3, sep='\n')
print('1\n2\n3')

#end 사용하기
print(1) # 1
print(2) # 2
print(3) # 3

print(1, end='')
print(2, end='')
print(3) #123

#불과 비교 연산자 사용하기
True
False

#비교 연산자의 판단 결과
print(3>1) #True

# 숫자가 같은지 다른지 비교하기
print( 10 == 10) #True
print( 10 != 5)  #True

#문자열이 같은지 다르지 비교하기
print('Python' == 'Python') #True
print('Python' == 'python') #False
print('Python' != 'python') #True

#부등호 사용하기
print(10 > 20) #False
print(10 < 20) #True
print(10 >= 10) #True
print(10 <= 10) #True



오늘의 질문

  1. 1 is 1.0 실행 시 경고
  • :1: SyntaxWarning: "is" with a literal. Did you mean "=="?
  • 1 과 1.0 의 함숫값이 같냐는 질문이므로 답은 False가 나옴
  • 혹시 1과 1.0의 값 크기를 비교해달라는 것인지 확인하는 경고임
  1. x= None / print(x) 의 결괏값은 None
  • None의 Type은 NoneType인데 이것도 자료형인건지..?
  • NoneType은 파이썬의 데이터 타입 중 하나로, 특히 어떤 변수나 함수가 아무 값도 반환하지 않을 때 사용됩니다.
  • Q1: NoneType은 주로 함수에서 어떤 값을 반환하지 않는 경우나, 변수가 초기화되지 않았을 때 사용됩니다. 함수가 특정 조건에 따라 값을 반환하거나 반환하지 않을 수 있을 때, 그 중 하나로 NoneType을 사용하여 반환하지 않음을 나타내곤 합니다.
  • Q2: 함수에서 아무 값도 반환하지 않아도 되는 경우가 있습니다. 예를 들어, 어떤 함수가 특정 조건을 만족하지 않으면 아무 작업을 수행하지 않고 그냥 종료될 수 있습니다. 이 경우, 함수가 명시적으로 어떤 값을 반환하지 않고 종료되면, 그 함수의 반환값은 None이 됩니다. 이는 함수의 실행이 성공적으로 완료되었지만 특별한 값이 없는 경우를 나타냅니다.
  • Q3: 변수 초기화나 함수 반환값을 다룰 때, NoneType은 종종 디폴트 값으로 사용됩니다. 변수를 초기화할 때 아무 값이 없는 상태를 나타내기 위해 None을 할당하거나, 함수가 특정 조건에 맞지 않아 값을 반환하지 않을 때 None을 반환하여 상태를 나타냅니다. 이를 통해 코드에서 특정 변수나 함수의 상태를 체크하고 처리할 수 있습니다.





오늘의 활동 목표

  • 수영 등록? 아침반? 자유반?
  • chatGPT 결제?





오늘의 과제
1. 아래에 데이터를 저장하는 코드를 작성하세요.
① 자신의 고향 도시 저장
② 자신의 혈액형 저장
③ 좋아하는 계절 저장
④ 자신의 키 저장
⑤ 전화번호 저장
⑥ 자신의 국적 저장
2. 화면출력 되도록 코드 작성하세요.
mbti=’INFP’
blood=’A’
gender=’M’
height=171.7
weight=77
[출력] ---------------------------------------------------------------------------------------
[ 신상 정보 ]
MBTI : INFP 혈액형 : A 성별 : M
몸무게 : 77 키 : 171.7
[코드] ---------------------------------------------------------------------------------------
① 여러데이터 출력 방식
② 서식지정자 출력 방식
③ F-스트링 출력 방식

  1. 아래 내용에 맞도록 코드 작성해 주세요.
    (3-1) 데이터에 해당하는 타입을 출력하세요. 함수를 사용해서 타입을 출력하세요.
    데이터 50 => <class ‘int’> 타입
    데이터 0.91 => <class ‘float’> 타입
    데이터 Winter => <class ‘str’> 타입
    데이터 False => <class ‘bool’ 타입
    화면 출력 형태 질문을 입력 받아서 답변을 출력하세요.
    [질문] 좋아하는 계절은? 여름
    [답변] 당신은 여름을 좋아하는 군요!
    [질문] 봄은 영어로? Spring
    [답변] 봄은 Spring입니다.
    [질문에 대한 답변 예시]

  2. 파이썬에서 메모리와 프로그램 코드와 관계입니다.
    빈칸에 해당하는 메모리 영역 이름을 적으세요.
    코드/텍스트 영역
    실행하는 프로그램 코드 저장
    데이터 영역
    라이브러리 및 내장 함수 저장
    ( )
    데이터 즉 객체 저장
    ( )
    변수 저장

  3. 아래에 요청하는 내용을 작성하세요.
    (5-1) 컴퓨터에 사용하는 데이터의 종류를 나눈 것입니다. 각 데이터에 맞는 데이터
    타입명을 적으세요.
    [사람][컴퓨터]

  • 정수 =====> ( ) : 4 , 9 , -1 , 0
  • 실수 =====> ( ) : 2. , -0.91
  • 글자 =====> ( ) : ‘가’ , “Hello”
  • 논리 =====> ( ) : True , False
    (5-2) 숫자를 표현하는 다양한 방법입니다. 빈칸을 채우세요.
    정수 11 ===> ‘정수 11은 ( )로 0b1011입니다.’
    정수 11 ===> ‘정수 11은 ( )로 0o13입니다.’
    정수 11 ===> ‘정수 11은 ( )로 0xb입니다.’
  1. 아래 내용에 맞도록 코드 작성해 주세요.
    직육면체의 가로(cm), 세로(cm), 높이(cm)를 입력 받은 후 넓이/부피 출력하세요.
    [질문] 직육면체 가로길이(cm) : 10
    [질문] 직육면체 세로길이(cm) : 10
    [질문] 직육면체 높이길이(cm) : 3
    [결과] 직사각형 넓이 : OOO
    직사각형 부피 : OOO
제출한 답
# 1. 아래에 데이터를 저장하는 코드를 작성하세요.
hometown = "대구"
blooddtype = "B"
season = "봄"
height = 172
callnumber = "010-5199-0181"
nation = "korea"

print('2. 화면출력 되도록 코드 작성하세요.')
mbti = 'INFP'
blood = 'A'
gender = 'M'
height = 171.7
weight = 77

#[출력] ---------------------------------------------------------------------------------------
#[ 신상 정보 ]
#MBTI : INFP 혈액형 : A 성별 : M
#몸무게 : 77 키 : 171.7
#[코드] ---------------------------------------------------------------------------------------
#① 여러데이터 출력 방식
print('[ 신상 정보 ]')
print('MBTI :', mbti, '혈액형 :', blood, '성별 :', gender)
print('몸무게 :', weight, '키 :', height)

# ② 서식지정자 출력 방식
print('[ 신상 정보 ]')
print('MBTI : %s 혈액형 : %s 성별 : %s'%(mbti, blood, gender))
print('몸무게 : %d 키 : %f'%(weight, height))

# ③ F-스트링 출력 방식

print(f'''[ 신상 정보 ]
MBTI : {mbti} 혈액형 : {blood} 성별 : {gender}
몸무게 : {weight} 키 : {height} ''')

print('3. 아래 내용에 맞도록 코드 작성해 주세요.')
print(type(50))
print(type(0.91))
print(type('Winter'))
print(type(False))

season1 = input("좋아하는 계절은? ")
print(f'당신은 {season}을 좋아하는 군요!')

season2 = input("봄은 영어로? ")
print(f'봄은 {season2}입니다.')

print('''4. 파이썬에서 메모리와 프로그램 코드와 관계입니다.
  빈칸에 해당하는 메모리 영역 이름을 적으세요.
- 힙 영역
- 스택 영역''')

print('''5. 아래에 요청하는 내용을 작성하세요.
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>''')

'''
[질문] 직육면체 가로길이(cm) : 10
[질문] 직육면체 세로길이(cm) : 10
[질문] 직육면체 높이길이(cm) : 3
[결과] 직사각형 넓이 : OOO
직사각형 부피 : OOO
'''
print('''6. 아래 내용에 맞도록 코드 작성해 주세요.
직육면체의 가로(cm), 세로(cm), 높이(cm)를 입력 받은 후 넓이/부피 출력하세요.''')
width = int(input('직육면체 가로길이(cm): '))
lenth = int(input('직육면체 세로길이(cm): '))
height = int(input('직육면체 높이길이(cm): '))
print('직사각형 넓이 :', width*lenth)
print('직육면체 부피 :', width*lenth*height)





내일 준비물

  • 슬리퍼, 컵홀더(O)
  • 가방걸이, 트랙패드?,
  • 서랍 플라스틱or박스(다이소?)
profile
갈림길인 줄 알았는데 알고보니 직진

0개의 댓글