본문 바로가기

Python/Python Programming

Python Basic 01.

Python


파이썬 : 컴퓨터 프로그래밍 언어

컴퓨터 구성요소

  1. 연산처리장치
  2. 기억장치 
  3. 입력 장치 -키보드 마우스 스캐너 마이크
  4. 출력 장치- 모니터 프린터 스피커

 

파이썬이라는 프로그래밍 언어로 컴퓨터와 의사소통

  • 명령을 내린다
  • 무엇을 입력받아라
  • 무엇을 출력해라
  • 무엇을 기억해둬라
  • 무엇을 연산해라

 

프로그래밍: 프로그램을 만들다. -> 프로그램이란? 할 일들의 목록

컴퓨터 프로그램을 만든다. -> 컴퓨터가 할일들의 목록을 만든다.

언어 : 컴퓨터와 의사소통 하기 위한 중간 언어(공용 언어)

파이썬, C, C++, 자바 .......

 

파이썬을 데이터 분석하는데 왜 사용하느냐?

  1. 쉽다 - 문법적으로 쉽다
  2. 공용 - 데이터 분석용 언어로 정착
  3. 파이썬으로 데이터 분석, 코딩(프로그래밍)을 한다.
  • IDE(통합개발환경) : VScode ->파이썬을 가지고 공용 프로그램을 만들때
  • Jupiter Notebook, Colab -> 실시간으로 데이터 분석을 확인 가능
 
 

 Jupiter Notebook  단축키


 
  • 실행 단축키 ctrl + Enter, Alt + enter, Shift + Enter
  • 추가 : A, B
  • 삭제 : DD, X
  • 복사 : C
  • 붙여넣기 : V
  • 출력결과 접기 : O

 

Python 기본 문법


 
프린트 명령어

 

print(1234)
1234

 

 

 

# sep=" " 사용하면 추가/제거 가능

 

print("1234", "Hi", 4444, 3.14, "Python",sep=" ")
>>> 1234 Hi 4444 3.14 Python
print("1234", "hi", 4444, sep="")
>>> 1234Hi44443.14Python
print("1234", "Hi", 4444, 3.14, "Python",sep=",")
>>> 1234,Hi,4444,3.14,Python

 

 
변수명(변수이름, 그릇이름) = 저장할 값
 
num = 1
num2 = 3.14

str1 = "hi"
str2 = 'hi'
str3 = """hi"""

sss = """hi
asdf
asdf
asdf"""

num = 1
num2 = '1'
 
문법적 규칙(안 지키면 오류난다.)
  1. 대소문자 구분 : A, a
  2. 숫자로 시작 불가 : 7a(x), a7(o)
  3. 특수문자, 띄어쓰기 불가 : _(언더바만 가능)
  4. 예약어 사용 불가 : 문법 용어는 변수명으로 사용 금지
 
관례적 규칙(사람끼리 약속한 것.)
  1. 명사, 동사 사용(형용사 사용은 지양)
  2. 저장한 값의 의미를 명확히 나타내기
  3. 표기방법
  • 카멜 : myNameIs (함수명)
  • 파스칼 : MyNameIs (클래스명)
  • 스네이크 : my_name_is (변수명)
  • 헝가리안 : strMynameis  (잘안씀)
                      intMynameis

저장 (변수)

출력 (print)

입력 (input) : 어떤 값을 입력 받아서 다음에 재활용하고 싶어서

 
# 아래쪽에 출력 결과가 튀어 나온다면 값을 복사해둔 것이다.
# 아래쪽에 뭔가 값이 튀어 나온다면 실행 후 반환값이 있다는 것이다
 
name = input("이름을 입력하세요 : ") # 어떤 값을 입력 받아서 다음에 재활용하고 싶어서
이름을 입력하세요 : jinseongeun
print(name)
>>> jinseongeun
name
>>> out[]: 'jinseongeun'
 
 

Q1.

# 사용자로 부터 취미를 입력받아
# 화면에 출력하는 프로그램을 작성하시오.
 
# 분할정복

긴 문제를 만났을 때 내가 해야할 일들을 우선 한글로 정리한다. 
1. input을 사용해서 취미를 입력받는다.
2. 입력받은 내용을 저장한 변수를 print를 사용해서 화면에 출력한다.
 
Hobby = input("취미를 입력하세요 : ")
print(Hobby)
취미를 입력하세요 : running
running

 

연산


산술연산   문자열 연산  
+ 더하기 + 합치기
- 뺴기 * 이어 붙이기
* 곱하기    
/ 나누기    
특수연산   연산자의 우선순위
% 나머지 **
// //  %  /  *
** 거듭제곱 +  -

 

7 ** 2  # 거듭제곱
>>> 49
7 // 2  # 몫
>>> 3
7 % 3   # 나머지
>>> 1
 

 

할당 연산자

연산자 역할
= 오른쪽 값을 왼쪽 변수에 할당함
+= 기존 왼쪽 변수 값과 오른쪽 변수를 더한 후 재할당
-= 기존 왼쪽 변수 값과 오른쪽 변수를 뺀 후 재할당
*= 기존 왼쪽 변수 값과 오른쪽 변수를 곱한 후 재할당
/= 기존 왼쪽 변수 값과 오른쪽 변수를 나눈 후 재할당
%= 기존 왼쪽 변수 값과 오른쪽 변수로 나눈 나머지를 재할당
//= 기존 왼쪽 변수 값과 오른쪽 변수로 나눈 후 내림한 값을 재할당
**= 기존 왼쪽 변수 값에 오른쪽 변수만큼 제곱을 한 후 재할당

 

논리 연산자

연산자 역할
and  and를 두고 좌우 조건문이 모두 참이면
or or을 두고 좌우 조건문중 하나라도 참이면
not 조건문 자체가 거짓이라면

 

비교 연산자

연산자 역할
== 같다면.
!= 같지 않다면
> 왼쪽 값이 더 크다면
< 오른쪽 값이 더 크다면
>= 왼쪽 같이 크거나 같다면
<= 오른쪽 값이 크거나 같다면

 

항등 연산자

 

a = [1, 3, 4, 5]
b = [1, 3, 4, 5]

print(a == b)
print(a is b)
print(a is not b)
>>> True
>>> False
>>> True
  • a와 b는 같은 값의 리스트를 할당 받았다.
  • == 연산자는 값이 같기에 True를  반환 한다,
  • 반면 is 는 false를 리턴 한다.
  • 같은 메모리 주소가 아니기 때문이다. is not 은 반대이기때문에 true를 리턴한다.

 

 

양식 문자열


  • % 문법
  • format 명령어
  • f-string

 

% 문법

 

"내 이름은 %s입니다. %d, %.2f" % ("jake", 19, 3.14)
>>> '내 이름은 jake입니다. 19, 3.14'

 

format 명령어

 

"내 이름은 {0}입니다. {1}, {2}".format("jake", 19, 3.14)
>>> '내 이름은 jake입니다. 19, 3.14'

"내 이름은 {2}입니다. {1}, {0}".format("jake", 19, 3.14)
>>> '내 이름은 3.14입니다. 19, jake'

 

f-string

 

name = "jake"
f"내 이름은 {name}입니다."
>>> '내 이름은 jake입니다.'
number1 = 10
number2 = 30
f"{number1} + {number2} = {number1+number2} 입니다."
>>> '10 + 30 = 40 입니다.'

 

Q2


# 입력 + 연산
# 계산기
# 두개의 정수를 입력받아
# 두 숫자의 사칙연산을 하는 프로그램을 작성하시오.

 

a = int(input("정수 하나를 입력하시오 : "))
b = int(input("다음 정수를 입력하시오 : "))
print("a+b = ", a + b) 
print("a-b = ", a - b)
print("a/b = ", a / b)
print("a*b = ", a * b)
정수 하나를 입력하시오 : 5
다음 정수를 입력하시오 : 3
a+b =  8
a-b =  2
a/b =  1.6666666666666667
a*b =  15
 
 
number1 = input("첫번째 정수 : ")
number2 = input("두번째 정수 : ")
number1 = int(number1)
number2 = int(number2)

# 파이썬의 input은 무조건 문자로만 입력 받아진다.
# 내가 숫자로 바꾸고자 하면 type castiong 형변환을 해서 사용해야 한다.

print(f"{number1} + {number2} = {number1 + number2} 입니다.")
print(f"{number1} - {number2} = {number1 - number2} 입니다.")
print(f"{number1} * {number2} = {number1 * number2} 입니다.")
print(f"{number1} / {number2} = {number1 / number2} 입니다.")
첫번째 정수 : 55
두번째 정수 : 35
55 + 35 = 90 입니다.
55 - 35 = 20 입니다.
55 * 35 = 1925 입니다.
55 / 35 = 1.5714285714285714 입니다.
 
 
 

비교 구문 if - elif - else


 

# if  (조건문) : 만약 조건문이 참이라면, 실행문을 실행한다.

# elif if의 조건문이 거짓일때 elif의 조건문이 참이면 실행문을 실행한다.

# 다른 모든 조건문이 거짓일때, else의 실행문을 실행한다.

# 조건문 혹은 조건식
# 명제 라고 할 수 있다. 
# True, False 라고 결과값이 나오는 식

 

if (조건문 혹은 조건식):
    # 꼭 한번은 나와야한다.
    실행문
elif 조건문 혹은 조건식:
    # 여러번 혹은 0번 나올 수 있다.
    실행문
else:
    # 0번 혹은 1번 나올 수 있다.
    실행문
 
 
 
 
 
 

Q3


# BMI 계산기
# 체중(kg) / 신장(m)의 제곱
# 사용자의 체중과 신장을 입력받고
# BMI 를 계산하여 출력하시오.
# 단, 출력 문구는
# "체중 xx.xx kg, 신장 xxx.xx cm 일 때 BMI는 xxx.xx 입니다."
# 라고 출력하시오.

 

# 명기법 
# 1. 체중을 입력받는다.
weight = input("체중을 입력하세요 : ")
# 1-1 실수형변환한다. 
weight = float(weight)
# 2. 신장을 입력받는다.
height = input("신장을 입력하세요 : ")
# 2-1. 실수형변환한다. 
height = float(height)
# 3. bmi를 계산한다.
bmi = weight / ((height/100) ** 2)
# 4. 양식문자열을 만든다.
msg = f"체중 {weight:.2f} kg, 신장 {height:.2f} cm 일 때 BMI는 {bmi:.2f} 입니다."
# 5. 만들어진 문자열을 출력한다. 
print(msg)
if bmi < 18.5:
    print("저체중")
elif 18.5 <= bmi < 23:
    print("정상체중")
else:
    print("과체중")
 
체중을 입력하세요 : 68.4
신장을 입력하세요 : 177.9
체중 68.40 kg, 신장 177.90 cm 일 때 BMI는 21.61 입니다.
정상체중
 
 
 
 

오류 처리


 
# 오류처리--> 프로그래밍에서 제일 중요한 것
 

# 오류의 종류
# 문법(95%) : 오타 
# 실행(4%) : 이미지 파일이 해당 위치에 없다
# 논리(1%) : 논리적으로 문제가 있는 경우(짝코딩 pair programming)

 

# 오류 처리 구문

# 오류처리 
try:
    오류가 발생할 수도 있는 실행문
except:
    오류가 발생했을때 후속 처리할 실행문

 

# 정수타입으로 변환할 수 있는 타입을 입력해야 하지만, ab라는 문자열 타입을 입력하여 오류가 발생하였다.

int("ab")
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [61], in <cell line: 1>()
----> 1 int("ab")

ValueError: invalid literal for int() with base 10: 'ab'
 
 
try: 
    a = input("정수를 입력하세요")
    a = int(a)
except ValueError: 
    print("값 변환 오류")
except: 
    print("오류 발생")
else:
    print("오류 없음")
정수를 입력하세요 : asd
값 변환 오류
 

 

 

 

Q4


# 현재 환율 : 1 USD : 1,306.5원
# 1. 메뉴를 구성한다.
# 1번을 선택하면 원을 입력받아서 -> 몇 달러인지 계산해주고
# 2번을 선택하면 달러를 입력받아서 -> 몇 원인지 계산해주는
# 프로그램을 작성하시오.
 
print("1. 원 -> 달러 환율 계산 ")
print("2. 달러 -> 원 환율 계산 ")
a = input("1번과 2번을 선택하시오. ")
a = int(a)

if (a == 1) :
    try: 
        Won = input("원을 입력하세요")
        Won = float(Won)
    except:
        Won = 0
        print("숫자로 반환이 불가능 합니다.")
    Dollar = Won / 1306.05
    print(f"{Dollar: .2f}달러 입니다. ")
    
elif (a == 2) :
    try: 
        Dollar = input()
        Dollar = float(Dollar) 
    except:
        Dollar= 0
        print("숫자로 반환이 불가능 합니다.")
    Won = Dollar * 1306.05
    print(f"{Won: .2f}원 입니다. ")
 
1. 원 -> 달러 환율 계산 
2. 달러 -> 원 환율 계산 
1번과 2번을 선택하시오. 1
원을 입력하세요10000
 7.66달러 입니다. 

 

 

 

 

 

 

Futher reference


  • 밑바닥 부터 딥러닝--> 수학 중심 머신러닝 
  • 혼자 공부하는 머신러닝+딥러닝 --> 혼자보는데 도움이 된다
  • 혼자 공부하는 파이썬 --> 학구적으로 공부하고 싶다? 
  • 3회독 필수! 사자마자 일주일 안에 소설책 보듯이 읽자,
  • 2회독째 코드만 실행이 되게만 하고 넘어감, 이해할 필요는 없다(한달 안 걸림)
  • 3회독째에 이해 하면서 공부!
  • 이외에 기본 책을 보지말고, 저자 깃허브에 소스 다있음.