본문 바로가기

대외활동/ABC 지역주도형 청년 취업역량강화 ESG 지원산업

[220817 ABC 2일차] - PYTHON 기초

반응형

[기본 출력문]

print("파이썬 프로그래밍") #명령문
print(3+5)
print(6+5)
print(1*3)

print()  #명령어
#  샵 표시는 주석문을 작성할 때 쓴다. → 코딩 실행에 영향을 주지 않는다.

<출력문>

파이썬 프로그래밍

8

11

3

4+5+0
5+5+5+5

<출력문>

20

→ 여기서 알 수 있는 jupyter 와 visual studio code(ide)의 차이점?

: jupyter는 한번에 하나만 출력한다. 즉, 맨 마지막 코드만 실행함. 둘 다 실행되게 하려면 vs code 사용해야함.

 

 

[파이썬의 특징]

1. 파이썬은 대소문자를 구분한다.

2. 한글명보다는 영문명을 더 많이 활용해야 한다

3. 특수 문자는 언더바(_) 만 허용한다.

4. ! @ # $ % 등은 특수 문자로서 사용할 수 없다.

5. 공백을 허용하지 않는다.

6. 파이썬 프로그래밍에 작성하는데 있어서 규칙이 정해져 있다.

None # 약속된 기호로써 인식을 하고 있다.
#none # 하나의 문자값으로 인식하고 있다.

[변수]

<변수의 특징>

- 변수란? ==> "변하는 값"

- 프로그래밍에서의 변수란 변하는 값을 저장하는 공간이라고 생각하면 편하다!

a = 10 # 약속된 형태 : 오른쪽의 값을 왼쪽의 값에 대입시킨다. a 공간에 10을 저장한다.
a = 20 # 1행에 있던 10의 값을 메모리에서 삭제하고 20의 값을 다시 a 공간에 저장한다.

- 즉, 위의 a값은 변하는 값 변수라고 이야기한다.

a = 30
A = 50
print(a)
print(A)

print() #뭔가 출력을 도와주는 역할을 하는구나 라고 생각하면 쉽다!

print(x+y)

- 파이썬에서 선언되지 않는 변수가 입력이 되었을 때 컴퓨터가 못알아듣는다

-  위의 코드블럭에서의 에러는 x변수와 y변수라는 공간이 없다고 에러가 발생하는 것! => NameError (is not defined)

a = 30
A = 50

print("a") # 문자 a를 화면에 출력해준다.
print(3+4) # 3과 4를 더한 7의 값을 출력해준다.
print("3+4") # 3+4라는 문자열을 그대로 출력해준다. "" 따옴표 때문에 문자열로 인식하기 때문!
print(a+A) # 소문자. a 변수에는 30이 저장되어 있고, 대문자 A 변수에는 50이 저장되어 있으므로 30과 50을 더한 80의 결과값을 화면에 출력해준다.

- 그렇다면 과연 a과 A가 저장되어 있는 위치는 어디인가? ==> 함수 id를 사용하면 알 수 있다!

- 함수란? = 특정한 입력값을 받아서 그 값을 어떠한 수행 내용으로 처리해주는 행동 양식!

- print() : 함수 명령어

- id() : 변수가 참조하는 객체의 주소를 확인시켜주는 함수

a = 30
A = 50

print(id(a))
print(id(A))

 

a=3 # 2446798056656
b=3
print(id(a))
print(a is b)
print(a==b) # b의 값을 a 변수에 저장하라는 의미가 a=b

- a == b는 a와 b가 서로 동일하다는 의미이다.

- a = b는 b의 값을 a에다가 넣으라는 의미! (차이점 기억하기)

no=201
xyz = imsi = abc = no # no 변수의 값을 xyz, imsi, abc에 모두 저장하라.

print(xyz, imsi, abc, no)
print(id(xyz), id(imsi), id(abc), id(no))

- 4번째 행에서 알 수 있듯이 여러개의 변수를 출력해주는 것이 가능하다!

- 맨 마지막행의 네개의 변수의 주소값은 모두 동일하게 나온다 왜 그럴까?

: 각각의 주소에 저장이 되어 있는 것이 아니라 하나의 주소에 공동으로 4개의 변수가 저장되어 있는 입장이다.

  즉, 공동으로 주소 하나를 사용하고 있다고 생각하자.

 

[이스케이프문자]

print("안녕하세요")
print("파이썬입니다.\n") 
print("빅데이터")
print()
print("인공지능\t대전광역시\tKTX철도\n천안아산\t빠르네요")

- 이스케이프 문자? \로 시작하는 조합으로 따옴표 안에 넣어주어 사용한다.

- 즉, 문자로 인식하는 것이 아니라 특정 실행문자로 행동해준다.

- 이스케이프 문자 종류(몇개 안배웠지만 일단 찾아서 적어보기)

코드 설명
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\\ 문자 \ 를 그대로 표한할 때 사용
\' 작은따옴표( ' )를 그대로 표현할 때 사용
\" 큰 따옴표 ( " )를 그대로 표현할 때 사용
\r 캐리지 리턴 ( 줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)
\a 벨 소리(출력할 때 PC 스피커에서 '삑'소리가 난다)
\b 백 스페이스
\000 널 문자

※ 큰 따옴표와 작은 따옴표 둘의 기능이 서로 차이를 갖고 있지는 않다.

주의할 것은 큰 따옴표로 시작하면 마무리도 큰 따옴표로 마무리 해야 한다는 것과 작은 따옴표로 시작하면 마무리도 작은 따옴표로 마무리 해야 한다는 것이다.

print("\'대전, 부산\'은 광역시입니다.")
# 40행의 경우 큰 따옴표는 문자열을 표시하기 위해서 사용하는거고 작은 따옴표는 그냥 표시하려고 쓰는 것이다.
print('\"해외여행\"을 가고 싶습니다.')
# 42행의 경우 작은 따옴표는 문자열을 표시하기 위해서 사용하는거고 큰 따옴표는 그냥 표시하려고 쓰는 것이다.

- \(역슬래쉬)와 함께 큰 따옴표, 작은 따옴표를 사용하면 이를 문자열로 만드는 기호가 아니라 단순한 따옴표 문자로 인식한다.

 

[문자열 연산자]

- + 기호를 사용하여 문자열 연결 연산을 적용할 수 있다.

- * 기호를 사용하여 문자열을 반복할 수 있다.

print("안녕" + "하세요")
print("55" + "입니다")

print(3*"시원한 여름바다  ") # 3*를 하니 문자열을 3번 반복

- 만약) print(55 + "입니다") 로 프로그래밍 하면?

 : 문자와 숫자와의 결합은 허용하지 않기 때문에 TypeError가 발생한다.

 

< raw string 적용을 위한 r 선행문자 사용 >

- 파이썬에서 정규표현식에서 사용하는 r선행 문자를 이용하면 이스케이프 코드를 무시하는 것이 가능하다.

print("aa\tbb")
print("c:\game\abc\ma.txt")
print(r"c:\game\abc\ma.txt")

- r 이라는 선행문자를 넣으므로써, 제대로 된 역슬래쉬가 들어간 경로 문자열을 불러오는 것이 가능하다.

- 즉, 이스케이프 문자로 인식하지 않는다!

 

[문자 선택 연산자(인덱싱)]

- 문자 선택 연산자(인덱싱) : []

- 파이썬은 위치주소가 0부터 시작한다.(0,1,2,3,4,5,6,7,8,9, ... )

- 위치주소 인덱싱의 경우 -1, -2는 가장 마지막에서 부터 불러온다

 

<인덱싱이 왜 중요할까?>

- 빅데이터 세트를 가져왔을 경우 '아 나는 92번부터 100번까지만 가져올거야'라는 경우 처럼 데이터를 뜯어 갖고 올 수 있어야 하기 때문에 사용한다.

- 문자 선택 연산자는 문자열 내부의 문자 하나를 선택하는 연산자이다.

- 대괄호 [] 안에 선택할 문자의 위치를 지정하며, 이 숫자를 index라고 부른다

- 파이썬은 인덱스 주소의 첫 시작을 0에서 부터 시작한다.

- 음수면 가장 뒤에서부터 시작한다.

print("빅데이터 분석은 매우 흥미있는 직업이네요.")
print("빅데이터 분석은 매우 흥미있는 직업이네요."[0])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[1])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[2])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[3])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[4])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[5])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[6])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[7])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[-1])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[-2])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[-3])
print()

- 연산자 슬라이싱 [] => [start:end:step]

- 이 경우 end index의 직전 문자까지만 나타내준다.

- 연산자 슬라이싱은 마지막 숫자를 포함하지 않음으로 적용해서 내용을 출력해준다.

print("빅데이터 분석은 매우 흥미있는 직업이네요."[0:6])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[0:7])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[:4])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[4:])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[0:10:2])

예제)

# index 슬라이싱 예제
# <출력결과> 가 아래처럼 나오도록 코딩해보자.
# 분석은 매우 흥미있는 직업이네요.
# 네요.
# 빅데이터 분석
# 빅데이터 분석은 매우 흥미있는
# 매우 흥미있는
print("빅데이터 분석은 매우 흥미있는 직업이네요."[5:])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[20:])    #[-3:]
print("빅데이터 분석은 매우 흥미있는 직업이네요."[0:7])
print("빅데이터 분석은 매우 흥미있는 직업이네요."[:16])    #[:-7]
print("빅데이터 분석은 매우 흥미있는 직업이네요."[9:16])    #[9:-7]

 

[ format 함수 ] 

- 숫자의 표현 방식을 지정할 수 있도록 도와주는 함수이다.

- f (float) = 실수형, d (decimal) = 정수형

print(12345678901234567890)
print(format(123.45678, '15.2f'))
print(format(123.45678, '12.4f'))
print(format(123,'5d'))
print(format(944123.45678, '.3e'))
print(format(0.0012345678, '.3e'))

- e는 10의 지수형 -> 매우 큰 숫자나 작은 숫자를 간결하게 표현하는 것이 가능하다.

%s 문자열을 mapping
%d 정수형을 mapping
%f 실수형을 mapping
%% Literal %
%c 문자 1개를 mapping
print("서식에 의한 빅데이터 내용 : %s %d %f" %("빅데이터 파이썬", 201, 23.4))

- %-formating : % 연산자를 사용하는 방법이며, 출력 서식에 숫자, 문자열을 대입할 수 있고, 서식 기호로 %s, %d, %f등을 사용한다.

print("홍길동의 키는 %f 이고, 빅데이터 점수는 %d%%" %(182.5, 98))

- "{}" format() 함수는 가독성이 좋고 간결해진다.

out_a="{:d}".format(47)
out_b="{:5d}".format(47)
out_c="{:10d}".format(47)
out_d="{:+10d}".format(47)

print(12345678901234567890)
print(out_a)
print(out_b)
print(out_c)
print(out_d)
print()

out_e="{:05d}".format(47)
out_f="{:05d}".format(-47)

print(12345678901234567890)
print(out_e)
print(out_f)
print()

out_g="{:f}".format(47.28913)
out_h="{:15f}".format(47.28913)

print(12345678901234567890)
print(out_g)
print(out_h)
print()

out_i="{:+15.3f}".format(47.28913)
out_j="{:+015.3f}".format(47.28913)

print(12345678901234567890)
print(out_i)
print(out_j)

 

# {}.format()

print("[1]", "음료수 : {0}, 가격 : {1}".format('탄산음료', 2000)) # {} 인덱스 번호로 사용할 수 있구나.
print("[2]", "음료수 : {}, 가격 : {}".format('탄산음료', 2000)) # {}안에 아무 값도 넣지 않으면 생략된 구조라면 알아서 0부터 시작하여 값을 넣어준다.
print("[3]", "음료수 : {1}, 가격 : {0}".format('탄산음료', 2000))
print("[4]", "음료수 : {0}, 가격 : {1}".format("탄산음료", 2000, "과일음료", 3000)) # 값이 여러개여도 mapping 된 것만 넣어준다.
print()

- 만약) print("[5]",  "음료수 : {0}, 가격 : {1}".format("탄산음료")) 이렇게 프로그래밍 한다면?

 : 입력값이 1개인데 (0) 인덱싱을 가지고 있는데 {}는 2개이므로 주고받는 값이 일치하지 않는다.

   따라서 IndexError 발생!!

- format 에서 중요하게 봐야 하는 것? : f-string

 : 특정 변수의 값을 다른 문자와 결합하여 출력할 수 있도록 도와주는 것이 f-string이다.

name = "꼬마버스"
age = 11
print(f"반갑다. '{name}', 나이가 '{age}'살 맞지?")
print("반갑다. '{name}', 나이가 '{age}'살 맞지?")

 

[ 문자열 관련 함수 ] 

- upper() 함수 : 문자열을 모두 대문자로 변환해준다. 

- lower() 함수 : 문자열을 모두 소문자로 변환해준다.

z = "안녕하세요. 빅데이터 세상에 오신 것을 환영합니다. Welcome to Python Programming...!"

print(z)
print("\n")
print("대문자 변환 : ", z.upper())
# 출력결과 : 대문자 변환 :  안녕하세요. 빅데이터 세상에 오신 것을 환영합니다. WELCOME TO PYTHON PROGRAMMING...!
print("소문자 변환 : ", z.lower())
# 출력결과 : 소문자 변환 :  안녕하세요. 빅데이터 세상에 오신 것을 환영합니다. welcome to python programming...!

- strip() 함수 : 양문자열 옆의 공백제거

input_a = "      어린왕자   "

print(input_a) # 원본 그대로
print(input_a.strip()) # 양 옆에 공백 모두 지움
print(input_a.rstrip()) # 왼쪽을 기준으로 공백제거
print(input_a.lstrip()) # 오른쪽을 기준으로 공백제거

- 여러줄을 출력할 경우 : 출력 결과 맨 첫줄만 공백제거 되고 두번째 줄 부터는 안됨.

< is로 시작하는 함수(문자열 구성 파악하기) >

- 숫자, 문자, 공백으로 구성되어 있는지 확인하고 싶을 때 사용하는 함수

- isalnum() 함수 : 문자열이 알파벳 또는 숫자로만 구성이 되어 있는지 확인해주는 함수.

- isalpha() 함수 : 문자열이 알파벳으로만 구성되어 있는지 확인해주는 함수

- isdecimal() 함수 : 문자열이 정수형태인지 확인해주는 함수

- isdigit() 함수 : 문자열이 숫자로 인식되고 있는지 확인해주는 함수

- isspace() 함수 : 문자열이 공백으로만 구성되어 있는지 확인해주는 함수

- islower() 함수 : 문자열이 소문자인지 확인해주는 함수

- isupper() 함수 : 문자열이 대문자인지 확인해주는 함수

a = "TrainBigdata50"
b = "train_bigdata50"

print(a.isalnum()) # True
print(b.isalnum()) # False
print()

print(a.isalpha()) # True
print(b.isalpha()) # True
print()

print(a.isdecimal()) # False
print(b.isdecimal()) # False
print()

print(a.isdigit()) # False
print(b.isdigit()) # False
print()

print(a.isspace()) # False
print(b.isspace()) # False
print()

print(a.islower()) # False
print(b.islower()) # True
print()

print(a.isupper()) # False
print(b.isupper()) # False
print()

< find() 함수 >

- find("찾고자 하는 문자") : 문자열 내부에 특정 문자가 어디에 위치하는지 확인할 수 있다.

- lfind("찾고자 하는 문자") : 왼쪽부터 찾아서 처음 등장하는 위치값을 알려준다.

- rfind("찾고자 하는 문자") : 오른쪽부터 찾아서 처음 등장하는 위치값을 알려줌.

a_data = "안녕하세요. 파이썬은 빅데이터 분석을 위한 프로그램입니다. 파이썬은 공개용 개발 프로그램입니다. 파이썬 좋아요."

print(a_data)
print()

print(a_data.find("파이썬"))
print(a_data.rfind("파이썬"))

< 문자열과 in 연산자 >

- "확인하고자 하는 문자열" in 변수 : 변수 내에 확인하고자 하는 문자열이 있는지 확인해주는 함수

- 문자열 내부에 어떤 문자열이 있는지 확인하려면 in 연산자를 사용한다.

- 출력은 True, False 값으로 나타내준다.

a_data = "기업 전략가에게 빅데이터 분석 역량이 요구될 수 있습니다."

print(a_data)
# in 연산자 (찾고자 하는 문자 in 변수) a_data 변수 내에서 빅데이터 글자가 있는지 확인해주어라.
print("빅데이터" in a_data) # True
print("빅 데이터" in a_data) # False
print("파이썬" in a_data) # False

 

- input() : 입력함수 ( 터미널에서 사용자가 입력하는 문자를 입력받음)

value = input("현재 제일 인기좋은 국내 관광지는 어디라고 생각하시나요? : ")

print(value)
print(type(value))

value2 = input("아무 내용이나 입력해주세요...")
print(value2)

 

- type() 함수 : 변수 타입을 확인시켜주는 함수이다.

- 결과값에 대한 변수 타입을 보자..(타입이란 문자값을 저장하는 것인지 아닌지 확인하는 것을 말한다)

print(type(value2))

 

print(value2+"58")

- input 함수는 숫자를 입력받는 문자를 입력받는 논리값을 입력받는 모든 것을 다 문자로 저장한다.

- 그래서 위와 같은 경우 print( value2 + 58 )이라고 프로그래밍 하면 TypeError가 발생한다.

- 이 경우 input으로 입력받은 입력값을 숫자형으로 변환시켜주면 상황 해결!

- int() 함수 : 변수의 값을 정수형으로 변경시켜주라는 의미이다.

int_val = int(value2)  
print(int_val)
print(int_val+58)
print(type(int_val))

- float() 함수 : 변수의 값을 실수형으로 변경시켜주라는 의미이다.

예제)

# 두개의 값을 입력받아서 사칙연산을 출력하시오
# int() 정수형 float()실수형(소수점 이하 숫자값 출력)
# 소수점 출력은 둘째자리 까지만 화면에 출력하도록 함수 사용


val1 = input("첫번째 값을 입력하세요 : ")
val2 = input("두번째 값을 입력하세요 : ")

int_val1 = int(val1)
int_val2 = int(val2)

print(int_val1+int_val2)
print(int_val1-int_val2)
print(format(int_val1/int_val2, '.2f'))
print(int_val1*int_val2)

 

[17일 파이썬 기초 강의 내용 총정리]

1. print() : 출력함수

2. 이스케이프 (\n \t)

3. 문자열 연산자(+) : "안녕"+"하세요"

4. r선행문자 : print(r"c:\n_data\game\memo.txt")

5. 인덱싱 [] : print("빅데이터"[0])

6. 슬라이싱 : print("빅데이터"[1:3])

7. format() 함수 : print(format(123.456, '15.2f'))

8. %-formatting : print("빅데이터 내용 %s %d %f" %("파이썬", 201, 23.4))

9. {}format() : print("{:5d}".format(47))

                      print("음료수 : {0}, 가격 : {1}")

10. f-strings : print(f,"반가워. '{name}', 나이가 '{age}' 살이니?")

11. upper()와 lower() 대소문자 변경

12. strip() - 공백제거, lstrip() - 왼쪽 공백제거, rstrip() - 오른쪽 공백제거

13. is로 시작하는 함수 : isalnum(), isalpha(), isdecimal(), isdigit(), isspace(), islower(), isupper()

14. find와 rfind : 문자열을 찾는 함수

15. 문자열 in 연산자

16. 인공지능, 통계 등등 결과값을 표현하는데 있어서 print() 함수가 영향을 미칠 수 밖에 없다.

17. print() 함수로 서식을 지정하는 방법 즉, 출력해서 표현하는 방법에 대한 기능들을 이해할 필요성이 있음

18. input() 함수를 사용해서 그에 따른 결과값을 확인해 보는데 문자를 숫자형으로 변경시켜야 하고, 원하는 출력형태를 가질 수 있도록 print() 함수에 관련된 format() 함수를 이용할 줄 알아야 한다.

19. 약속된 기호(키워드)는 파이썬에서 변수명으로 사용할 수 없다.

      ex) True, False, None 등 이런 애들은 사용 불가능!

20. 키워드는 파이썬에서 특별한 의미를 부여하였기 때문에 이미 다른 곳에서 사용해야 하므로 변수로 사용할 수 없다.

21. 대문자를 구분하니 이를 명확하게 판단해서 값을 저장해야 한다.

22. a = 10과 A = 20은 서로 다르다!

23. 소문자 a와 대문자 A의 변수는 다르다는 것을 알아야한다.

반응형