'프로그래밍 기초 in Python' 2.프로그래밍 핵심 개념 in Python

인덱스·2023년 1월 6일
0

codeit

목록 보기
5/17

*2021. 6. 25. 11:55 에 작성한 글

다시 파이썬이다. 반복만이 살 길!


자료형

숫자형

  • 덧셈 : +
  • 뺄셈 : -
  • 곱셉 : *
  • 나머지 : %
  • 거듭제곱 : **
  • floor divison(버림 나눗셈)-소수 부분 버리기 : //
  • round(반올림)

문자열(str)

SyntaxError 문법 에러 방지

print("I\'m \"excited\" to learn Python!")

문장안에 ',"가 있을 경우 '와 "앞에 \를 붙여 준다!

형 변환(Type Conversion/Type Casting)

값을 한 자료형에서 다른 자료형으로 바꾸는 것

  • int() - 정수형 변환

  • float() - 소수형 변환

format을 이용한 문자열 포맷팅

#오늘은 2019년 10월 29일입니다.
year = 2019
month = 10
day = 29

print("오늘은" + str(year) + "년" + str(month) + "월" + str(day) + "일입니다."
print("오늘은 {}년 {}월 {}일입니다.".format(year, month, day))

date_string = "오늘은 {}년 {}월 {}일입니다."
print(date_string.format(year,  month, day))


format 다루기

num_1 = 1
num_2 = 3
print("{0} 나누기 {1}은 {2}입니다.".format(num_1, num_2, num_1/num_2)

#소수점 둘째자리로 반올림하고 싶으면?
print("{0} 나누기 {1}은 {2:2f}입니다.".format(num_1, num_2, num_1/num_2)
#.2f 에서 f=소수형(floating point) .2 = 소수점 둘째자리로

#round 함수를 쓰고 싶다면?
print("{0} 나누기 {1}은 {2}입니다.".format(num_1, num_2, round(num_1/num_2,2)))


문자열 포맷팅 방법

1.가장 오래된 방식(%기호)

name = "index"
age = 1080

print("제 이름은 %s이고 %d살입니다." % (name, age))

제 이름은 index이고 1080살입니다.

2.현재 가장 많이 쓰는 방식 (format 메소드)

name = "index"
age = 1080

print("제 이름은 {}이고 {}살입니다.".format(name, age))

제 이름은 index이고 1080살입니다.

3.새로운 방식 (f-string)

name = "index"
age = 1080

print(f"제 이름은 {name}이고 {age}살입니다.")

제 이름은 index이고 1080살입니다.

불 대수

  • 불 대수의 값 : 진리값(True or False)

  • 불 대수의 연산 : AND, OR, NOT

  • AND - x와 y가 모두 참일 때만 x AND y가 참

  • OR - x와 y 중 하나라도 참이면 x OR y는 참

  • NOT - 참이면 거짓, 거짓이면 참

불린(Boolean)

한 쪽이라도 참이면 참이다. 참참참!

type 함수

: 어떤 자료형을 썼는지 확인할 수 있음

print(type(3))
print(type(3.0))
print(type("3"))

<class 'int'>
<class 'float'>
<class 'str'>

*파이썬에서 나눗셈은 항상 정수가 아닌 소수로 표시된다.

추상화

  • 파이썬에서의 등호의 의미

  • "같다"의 의미 X -> 지정연산자 O

return
: (함수가) 무언가를 돌려주는 것!

retrun문의 역할

  • 값 돌려주기

  • 함수 즉시 종료하기

옵셔널 파라미터

  • 파라미터에 기본값(default value) 설정 가능

  • 옵셔널 파라미터(optional parameter) : 함수 호출할 때 파라미터에 값을 안 넘겨 줘도 되는 기본값

  • *옵셔널 파라미터는 꼭 마지막에!

Synatacic Sugar

# 다음 두 줄은 같습니다
x = x + 1
x += 1

# 다음 두 줄은 같습니다
x = x + 2
x += 2

# 다음 두 줄은 같습니다
x = x * 2
x *= 2

# 다음 두 줄은 같습니다
x = x - 3
x -= 3

# 다음 두 줄은 같습니다
x = x / 2
x /= 2

# 다음 두 줄은 같습니다
x = x % 7
x %= 7

scope(범위)

: 변수를 사용 가능한 범위

  • 글로벌 변수 : 변수를 정의한 함수 내에서만 사용 가능

  • 로컬 변수 : 모든 곳에서 사용 가능

상수(constant)

  • 규칙 : 모든 글자를 대문자로!
    -> 일반 변수와 상수 구분하기 위해, 실수하지 않기 위해.

스타일

이해하기 쉬운 코드 = 좋은 스타일을 가진 코드

띄어쓰기, 빈줄 : 화이트 스페이스 -> 적절히 활용하면 가독성 높임

파이썬에서 가장 많이 쓰이는 스타일 가이드 = PEP8

https://www.python.org/dev/peps/pep-0008

이름 규칙

  • 모든 변수와 함수 이름은 소문자, 여러 단어일 경우 _로 나눈다.

  • 모든 상수 이름은 대문자, 여러 단어일 경우 _로 나눈다.

  • 의미있는 이름

  • 화이트 스페이스

  • 들여쓰기

  • 들여쓰기는 무조건 스페이스 4개를 사용

함수 정의

  • 함수 정의 위아래로 빈 줄이 두 개씩 있어야 한다.

  • 하지만 파일의 첫 줄이 함수 정의인 경우 해당 함수 위에는 빈 줄이 없어도 된다.

괄호 안

  • 괄호 바로 안에는 띄어쓰기 X

함수 괄호

  • 함수를 정의하거나 호출할 때, 함수 이름과 괄호 사이에 띄어쓰기X

쉼표

  • 쉼표 앞에 띄어쓰기 X

지정 연산자

  • 지정 연산자 앞뒤로 띄어쓰기 하나씩

연산자

  • 기본적으로 연산자 앞뒤로 띄어쓰기 하나씩

  • 하지만 연산의 '우선 순위'를 강조하기 위해서 연산자 앞뒤로 붙이는 것을 권장

코멘트

  • 일반 코드와 같은 줄에 코멘트를 쓸 경우 코멘트 앞에 띄어쓰기 최소 두 개

제어문

while 반복문

무언가를 반복하기 위해 사용

while 조건 부분 :
수행부분

조건 부분 - 불린 값으로 계산되는 식

수행 부분 - 반복적으로 실행하고 싶은 명령

실습과제

Q.'while 반복문을 사용하여 1 이상 100 이하의 짝수를 모두 출력해 보세요.'

i = 1
while i <= 50:
    print(i * 2)
    i += 1

Q.while문을 사용하여, 100 이상의 자연수 중 가장 작은 23의 배수를 출력해 보세요.
i를 23으로 나눈 나머지(i % 23)가 0이 될 때까지 while문을 반복하면 된다.

i = 100
while i % 23 != 0:
    i += 1

print(i)

-> 이런 수학 응용적인 머리 굴림이 빠르지(사실,,,전혀 안돼,,,)가 못해 우는 중,,,

if 문

if 조건 부분 :
수행 부분

else

elif

실습과제

Q.while문과 if문을 활용하여, 100 이하의 자연수 중 8의 배수이지만 12의 배수는 아닌 것을 모두 출력하세요

이 과제의 질문,,, 추천 229개...ㅋㅋㅋㅋbb

차근 차근 하나씩 해보자

#1부터 100까지 모든 수 출력
i = 1
while i <= 100:
    print(i)
    i += 1

#여기에 8의 배수이지만 12의 배수는 아닌 것은 8로 나누었을 때 값이 0이지만 12로 나누었을 때 0이 답이 아닌 것!
i % 8 == 0 and i % 12 ! = 0

#최종
i = 1
while i <= 100:
    if i % 8 == 0 and i % 12 != 0:
        print(i)
    i += 1

#참고
#i += 1은 if문 밖에 있어야 무한 루프에서 빠진다

Q.while문과 if문을 활용하여, 1000보다 작은 자연수 중 2또는 3의 배수의 합을 출력하는 프로그램을 써보세요.

i = 1
total = 0

while i < 1000:
    if i % 2 == 0 or i % 3 ==0:
        total += i
    i += 1

print(total)

-> 해설없이 total 구하는 힌트 보고 풀었다... 휴..

Q.정수 n의 약수는 n을 나누었을 때 나누어 떨어지는 수입니다. 만약 정수 i가 정수 n의 약수라면, n을 i로 나누었을때 나머지가 0이 나와야 하는 거죠. 정수 120의 약수를 모두 출력하고, 총 몇개의 약수가 있는지 출력하는 프로그램을 써 보세요...

N = 120
i = 1
count = 0

while i <= N:
    if N % i == 0: 
        print(i) #약수 모두 출력하기
        count += i #약수 세기
    i += 1

print("{}의 약수는 총 {}개입니다.".format(N, count))

-> 어렸을 때부터 최소공배수 최대공약수 어려워하던 아이는 커서도 똑같습니다.

Q.(ㅠㅠ 미친 문제)

문제 파악할 때 : 1) 상수, 변수 정의 2) 상수 설정 3) 변수 설정 4) while 반복문 5) if-else 문

#상수 정의
INTEREST_RATE = 0.12
APARTMENT_PRICE_2016 = 1100000000

#변수 정의
year = 1988
bank_balance = 50000000

while year < 2016 :
    bank_balance = bank_balance * (1+INTEREST_RATE)
    year += 1   

if bank_balance > APARTMENT_PRICE_2016 :
    print("{}원 차이로 동일 아저씨 말씀이 맞습니다.".format(int(bank_balance - APARTMENT_PRICE_2016)))
else :
    print("{}원 차이로 미란 아주머니 말슴이 맞습니다.".format(int(APARTMENT_PRICE_2016 - bank_balance)))

Q.피보나치 수열..

Q.구구단

-> 포기는 아니고 보류...

break문

: while문의 조건 부분과 상관없이 반복문에서 나오고 싶다면

continue문

: 현재 진행되고 있는 수행 부분을 중단하고 바로 조건 부분을 확인하고 싶으면


과부화와서 이번 주말 쉬엄쉬엄하려고 했는데

누군가의 성취가 내 마음에 불을 질렀다.

진짜 매 레슨마다 포기하고 싶었는데,,, 꾸역꾸역

이해는 모르겠고 일단 했다 일단 했어 ㅠ

확실한 동기부여, 불태운다 주말🔥

사실 이 말은 Robin Sharma라는 캐나다 작가가 한 말이다.

Chage is hard at first, messy in the middle and gorgeous at the end.

'프로그래밍 기초 in Python' 2.프로그래밍 핵심 개념 in Python|작성자 Index

profile
헤맨 만큼 내 땅이 된다

0개의 댓글