본문 바로가기
공부/학원.

국비 개발 학원 6주차(05.03~05.07)

by 햄이; 2021. 5. 3.

 

 

05.03

일주일 만에 대면 수업을 나왔다.

주말에 개인적인 사유로

5주 차 복습 및 블로그 정리를 다 끝내지 못했는데,

마침 5월 5일 어린이날이 공휴일이니

그 날까지 차근차근 공부하고 올려봐야겠다.

 

오늘 자바 수업에는

지난주 금요일에 내주셨던

Q.21, Q.22번 문제풀이를 하고 함수 진도를 나갈 예정이다.

 

Q.21은 과제 카테고리에 바로 올릴 예정이나,

Q.22번의 경우 자꾸 될 것 같은데

오류가 나는 나의 노답 코드를

주말까지 꼭 풀어내서^^ 올리도록 하겠다.

 

+) 선생님은 char 2차원 배열로 하셨는데

나는 char 배열로 풀이하는 바람에(ㅎ)

아마 2차원 배열로도 하나 더 풀어봐야 할 것 같다.

스스로 하는 약속

 

 

(이 날은 개인적인 사유로 오후 조퇴😢)

 

이 날의 숙제

Q.23 . 숫자야구게임 함수화 - 완료

Q.24 . 범인찾기 함수화 - 완료

Q.25 . 낚시게임 함수화 - 아직 다 못함

이 이후에 더 있을지도..?

 

 

 

05.04

 

파이썬을 배우는 날이다.

실질적으로 지지난주~지난주까지는

전반적인 네트워크에 대해 배웠고,

오늘부터 본격적으로 파이썬을 배운다고 볼 수 있을 것 같다.

 

 

오전 오후..

진도 엄청 많이 나가서 스크롤이 쭉쭉 내려갈 예정이다.

 


type( ) 함수 - ( )안의 타입을 확인 할 수 있는 함수  

ex.1)>>> print(type("안녕하세요"))
결과 : <class 'str'>

ex.2)>>> print(type(1))
<class 'int'>


문자열 반복 연산자 - 문자열을 숫자와 *연산자로 연결

ex.1)>>> print("안녕하세요"*3)
결과 : 안녕하세요안녕하세요안녕하세요

ex.2)>>> print(3*"안녕하세요")

결과 : 안녕하세요안녕하세요안녕하세요 



이스케이프 문자

\" : 큰 따옴표를 의미
ex) >>> print("\"안녕하세요\"라고 말했습니다")
결과 : "안녕하세요"라고 말했습니다

\' : 작은 따옴표를 의미
\n : 줄바꿈을 의미
\t : 탭을 의미
\\ : 역슬래시를 의미
ex)>>> print("\\ \\ \\ \\")
결과 : \ \ \ \


 

 

 

\t를 사용하여 출력하기 

 

위의 결과

 

 

 

\n 사용하여 줄 바꿈 출력하기

 

 

큰따옴표 or 작은따옴표 세 개를 사용하여 줄 바꿈 출력하기

 

 

위아래로 공백 한 줄이 들어가게 줄 바꿈 출력하기

 

 

\를 이용하여 위아래 공백을 제거하고 줄 바꿈 출력하기

 

print("문자 선택 연산자에 대해 알아볼까요?")
print("안녕하세요"[0])
print("안녕하세요"[1])
print("안녕하세요"[2])
print("안녕하세요"[3])
print("안녕하세요"[4])

 

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

파이썬은 제로 인덱스 사용

(숫자를 0부터 셈)

 

위 실행 결과

print("문자를 뒤에서부터 선택해 볼까요?")
print("안녕하세요"[-1])
print("안녕하세요"[-2])
print("안녕하세요"[-3])
print("안녕하세요"[-4])
print("안녕하세요"[-5])

 

음수로 문자를 거꾸로 출력하기

 

위 실행 결과

 

 

문자열 범위 선택 연산자(슬라이싱 : [])

 

 

뒤의 값 생략 : n번째부터 끝의 문자까지

앞의 값 생략 : 0번째부터 뒤의 숫자 n번째 앞의 문자까지

 

인덱싱 (indexing)

[] 기호 이용해 문자열의 특정 위치에 있는 문자 참조하는 것

슬라이싱 (slicing)

[:] 기호 이용해 문자열 일부를 추출하는 것

문자열 선택 연산자로 슬라이스해도 원본은 변하지 않음에 주의

len() 함수

문자열 길이 구할 때 사용

괄호 내부에 문자열 넣으면 문자열의 문자 개수 세어 줌

ex) >>>print(len("안녕하세요")) = 5
+) 공백도 포함하여 세어 줌

+) IndexError (index out of range) 예외

리스트/문자열 수를 넘는 요소/글자 선택할 경우 발생
ex) >>>print("안녕하세요"[10]) : 다섯 글자를 넘어서 에러 발생




출처 : 혼자 공부하는 파이썬

 

 

연산자

사칙 연산자 : +, -, *, /

정수 나누기 연산자: //

숫자를 나누고 소수점 이하 자릿수 삭제한 후 정수 부분만 남김

ex) >>>print("3 / 2 =" , 3 / 2)
결과 : 3 / 2 = 1.5

나머지 연산자 : %

A B로 나누었을 때의 나머지를 구함

ex)>>>print("5 % 2 = ", 5 % 2)
결과 : 5 % 2 = 1

제곱 연산자 : **
숫자를 제곱한다
ex) >>> print("2 ** 2 =", 2 ** 2)
결과 : 2 **  2 = 4

우선순위

파이썬의 수식은 연산자 간 우선순위에 따라 계산됨

곱셈과 나눗셈이 덧셈과 뺄셈보다 우선

ex) >>>print(2 + 2 - 2 * 2 / 2 * 2)
결과 0.0

+) 괄호를 활용하여 우선순위 조정

TypeError 예외

서로 다른 자료를 연산할 경우
ex) >>> string = "문자열"
>>> number = 273
>>> string + number
결과 : TypeError : can only concatenate str (not "int") to str


출처 : 혼자 공부하는 파이썬

 

 

print("# 기본적인 연산")
print(15,"+",4,"=",15+4)
print(15,"-",4,"=",15-4)
print(15,"*",4,"=",15*4)
print(15,"/",4,"=",15/4)

print("-----------------")
print("3462를 17로 나누었을 때의")
print("- 몫 :", int(3462/17))
print("- 나머지 :", 3462%17)

 

연산자 빈칸 연습문제

 

위 실행 결과

 

변수와 입력

변수

값을 저장할 때 사용하는 식별자

숫자뿐만 아니라 모든 자료형을 저장할 수 있음
ex) 변수 = 값

변수를 선언하는 방법

변수를 생성

변수에 값을 할당하는 방법

변수에 값을 넣음
= 우변을 값을 좌변에 할당


변수를 참조하는 방법

변수에서 값을 꺼냄

변수 안에 있는 값을 사용

 

 

pi = 3.14159265
print(pi+2)
print(pi-2)
print(pi*2)
print(pi/2)
print(pi%2)
print(pi*pi)

 

변수 숫자 연산

 

위 실행 결과

 

#변수 선언과 할당
pi = 3.14159265
r = 10

#변수 참조
print("원주율 = ",pi)
print("반지름 = ", r)
print("원의 둘레 = ", 2*pi*r) # 원의 둘레
print("원의 넓이 = ", pi*r*r) # 원의 넓이

 

변수 만들기 / 사용하기 

(pi는 숫자 자료이므로 숫자와 문자열 연산은 불가능)

 

위 실행 결과

 

 

변수와 입력

복합 대입 연산자

기본 연산자와 = 연산자 함께 사용해 구성
ex) a += 10

+=
-=
*=
/=
%=
**=

문자열 역시 복합 대입 연산자 사용 가능
ex)>>>string = "안녕하세요"

>>>string += "!"

>>>string += "!"

>>>print("string : ",string)

결과 : string :  안녕하세요!!


사용자 입력 : input() 함수

명령 프롬프트에서 사용자로부터 데이터 입력받을 때 사용


input 함수의 결과로 산출(리턴 값)
다른 변수에 대입하여 사용 가능

ex) >>> string = input("인사말을 입력하세요>")
인사말을 입력하세요> 안녕하세요
>>> print(string)
 안녕하세요

출처 : 혼자 공부하는 파이썬

 

 

#입력을 받습니다
string = input("입력>")
 
#출력합니다
print("자료 :",string)
print("자료형 :",type(string))

 input() 입력 자료형 확인하기

 

위 실행 결과

 

∴input() 함수는 사용자가 무엇을 입력해도 결과는 무조건 문자열 자료형

 

 

#입력을 받습니다
string = input("입력>")
 
#출력합니다
print("입력 + 100 : ",string + 100)

 

입력받고 더하기

 

위 실행 결과

 

에러가 뜸을 알 수 있다

 

 

이를 해결할 수 있는 방법↓


캐스트
(cast)

input() 함수의 입력 자료형은 항상 문자열이므로 입력받은 문자열을 숫자 연산에 활용하기 위해 숫자로 변환

int() 함수

문자열을 int 자료형으로 변환.

float() 함수

문자열을 float 자료형으로 변환


출처 : 혼자 공부하는 파이썬

 

string_a = input("입력A>")
int_a = int(string_a)

string_b = input("입력B>")
int_b = int(string_b)

print("문자열 자료: ",string_a + string_b)
print("숫자 자료:",int_a + int_b)

 

int() 함수 활용하기

 

위 실행 결과

 

 

ValueError 예외

변환할 수 없는 것을 변환하려 할 경우

숫자가 아닌 것을 숫자로 변환하려 할 경우

소수점이 있는 숫자 형식의 문자열을 int() 함수로 변환하려 할 때


str() 함수

숫자를 문자열로 변환


*총정리*

변수 선언 : 변수를 생성하는 것을 의미

 

변수 할당 : 변수에 값을 넣는 것을 의미

 

변수 참조 : 변수에서 값을 꺼내는 것

 

input() 함수 : 명령 프롬프트에서 사용자로부터 데이터 입력 받음

 

int() 함수 : 문자열을 int 자료형으로 변환

 

float 함수 : 문자열을 float 자료형으로 변환

 

str() 함수 : 숫자를 문자열로 변환


출처 : 혼자 공부하는 파이썬

 

 

str_input = input("원의 반지름 입력>")
num_input = float(str_input)
print()
print("반지름 : ",num_input)
print("둘레 :",2 * 3.14 * num_input)
print("넓이 : ", 3.14 * num_input ** 2)

 

연습문제 

 

위 실행 결과

 

 

format() 숫자와 문자열을 다양한 형태로 출력

중괄호 포함한 문자열 뒤에 마침표 찍고 format() 함수 사용하되,
중괄호 개수와 format 함수 안 매개변수의 개수는 반드시 같아야 함

문자열의 중괄호 기호가 format() 함수 괄호 안의 매개변수로 차례로 대치되면서 숫자가 문자열이 됨

IndexError 예외

중괄호 기호의 개수가 format() 함수의 매개변수 개수보다 많은 경우
ex)>>> "{} {}".format(1,2,3,4,5)

결과 : 1 2
but,
>>>"{} {} {} ".format(1,2)
결과 : IndexError


출처 : 혼자 공부하는 파이썬

 

 

#format()함수로 숫자를 문자열로 변환하기
format_a = "{}만원".format(5000)
format_b ="파이썬 열공하여 첫 연봉 {}만원 만들기".format(5000)
format_c = "{} {} {}".format(3000,4000,5000)
format_d = "{} {} {}".format(1,"문자열",True)
#출력하기
print(format_a)
print(format_b)
print(format_c)
print(format_d)

format()함수 예제

 

위 실행 결과

 

 

#정수
output_a = "{:d}".format(52)

#특정 칸에 출력하기
output_b = "{:5d}".format(52) # 5칸
output_c = "{:10d}".format(52) # 10칸

#빈칸을 0으로 채우기
output_d = "{:05d}".format(52) # 양수
output_e = "{:05d}".format(-52) # 음수

print("# 기본")
print(output_a)

print("#특정 칸에 출력하기")
print(output_b)
print(output_c)

print("# 빈칸을 0으로 채우기")
print(output_d)
print(output_e)

#기호와 함께 출력하기
output_f = "{:+d}".format(52) # 양수  
output_g = "{:+d}".format(-52) # 음수
output_h = "{: d}".format(52) # 양수 : 기호 부분 공백
output_i = "{: d}".format(-52) # 음수 : 기호 부분 공백

print("#기호와 함께 출력하기")
print(output_f)
print(output_g)
print(output_h)
print(output_i)

 

정수 출력의 다양한 형태

 

위 실행 결과

 

# 조합하기
output_h = "{:+5d}".format(52) # 기호를 뒤로 밀기 :양수  
output_i = "{:+5d}".format(-52) # 기호를 뒤로 밀기 :음수 
output_j = "{:=+5d}".format(52) # 기호를 앞으로 밀기 :양수 
output_k = "{:=+5d}".format(-52) # 기호를 앞으로 밀기 :음수
output_l = "{:+05d}".format(52) # 0으로 채우기 : 양수
output_m = "{:+05d}".format(-52) # 0으로 채우기 : 음수

print("# 조합하기")
print(output_h)
print(output_i)
print(output_j)
print(output_k)
print(output_l)
print(output_m)

 

조합하기

 

위 실행 결과

 

output_a = "{:f}".format(52.273)
output_b = "{:15f}".format(52.273) # 15칸 만들기
output_c = "{:+15f}".format(52.273) # 15칸에 부호 추가하기
output_d = "{:+015f}".format(52.273) # 15칸에 부호 추가하고 0으로 채우기

print(output_a)
print(output_b)
print(output_c)
print(output_d)

 

부동 소수점 출력의 다양한 형태

 

위 실행 결과

 

#소수점 아래 자릿수 지정하기
output_a ="{:15.3f}".format(52.273)
output_b ="{:15.2f}".format(52.273)
output_c ="{:15.1f}".format(52.273)

print(output_a)
print(output_b)
print(output_c)

#의미 없는 소수점 제거하기
output_d = 52.0
output_e = "{:g}".format(output_d)

print("#의미없는 소수점 제거하기")
print(output_d)
print(output_e)

 

소수점 아래 자릿수 지정하기

의미 없는 소수점 제거하기

 

위 실행 결과

 

 

비 파괴적 함수 : 원본이 변화 X

upper()
함수

문자의 알파벳을 대문자로 바꿈

lower() 함수

문자의 알파벳을 소문자로 바꿈

strip() 함수

문자열 양옆의 공백을 제거
의도하지 않은 줄 바꿈 등의 제거

lstrip() 함수

왼쪽의 공백을 제거

rstrip() 함수

오른쪽의 공백을 제거


출처 : 혼자 공부하는 파이썬

 

 

upper() , lower() 함수 예시

 

strip() 함수 예시

 

 


문자열의 구성 파악하기 : isOO()

문자열이 소문자로만, 알파벳으로만, 혹은 숫자로만 구성되어 있는지 확인

(boolean)

출력이 True 혹은 False로 나오는 것

find()

왼쪽부터 찾아서 처음 등장하는 위치 찾음

rfind()

오른쪽부터 찾아서 처음 등장하는 위치 찾음

In 연산자

문자열 내부에 어떤 문자열이 있는지 확인할 때 사용

결과는 True(맞다), False(아니다)로 출력

split() 함수

문자열을 특정한 문자로 자름

실행 결과는 리스트 (list)로 출력

 

출처 : 혼자 공부하는 파이썬

 

 

isOO()함수 설명

 

 

find() rfind() 함수 예시

 

 

in 연산자, split()함수 예시

split()함수 사용 시 리스트 형식으로 출력된 것을 알 수 있다.

 

a = input("> 1번째 숫자 :")
b = input("> 2번째 숫자 :")
print()
print("{} + {} = {}".format(a , b, int(a)+int(b)))

 

PPT 빈칸 예제문제

 

위 실행 결과

 

 

불 자료형과 if 조건문

Boolean불린 / 불리언 /

TrueFalse 값만 가질 수 있음

비교 연산자를 통해 만들 수 있음

숫자 또는 문자열에 적용

문자열에도 비교 연산자 적용 가능

불끼리 논리 연산자 사용 가능

 

not 연산자

단항 연산자

참과 거짓 반대로 바꿈

 

and 연산자와 or 연산자

and 연산자는 양쪽 변의 값이 모두 참일 때만 True를 결과로 냄

if 조건문

조건에 따라 코드 실행하거나 실행하지 않게 할 때 사용하는 구문

 

 

 

 

 

Boolean 숫자 적용 예시

 

 

Boolean 문자열 비교연산자 적용 가능

국어사전에서 가방이 하마보다 더 앞에 나오기 때문에

더 작은 수로 인식된다.

= 사전 순

 

#입력을 받습니다
number = input("정수 입력>")
number = int(number)

#양수조건
if number > 0 :
      print("양수입니다.")

#음수 조건
if number < 0 :
      print("음수입니다.")

#0 조건
if number == 0 :
      print("0입니다.")

 

if 조건문의 기본 사용

 

위 실행 결과

 

+)tab을 누르면 4칸 들여 쓰기를 해준다(소프트 탭) <-> shift + tab을 하면 되돌아감 

 

#날짜/시간과 관련된 기능을 가져옵니다
import datetime

# 현재 날짜/시간을 구합니다.
now = datetime.datetime.now()

#출력합니다.
print(now.year,"년")
print(now.month,"월")
print(now.day,"일")
print(now.hour,"시")
print(now.minute,"분")
print(now.second,"초")

# 날짜 /시간을 한줄로 출력하기
print("{}년 {}월 {}시 {}분 {}초".format(
      now.year,
      now.month,
      now.day,
      now.hour,
      now.minute,
      now.second

))

#오전 구분
if now.hour < 12:
      print("현재 시각은 {}시로 오전입니다.".format(now.hour))

#오후 구분
if now.hour >= 12:
      print("현재 시각은 {}시로 오후입니다.".format(now.hour))



#계절 구분
if 3 <= now.month <= 5 : 
      print("이번달은 {}월로 봄입니다.".format(now.month))

if 6 <= now.month <= 8 : 
      print("이번달은 {}월로 여름입니다.".format(now.month))
      
if 9 <= now.month <= 11 : 
      print("이번달은 {}월로 가을입니다.".format(now.month))
      
if 12 <= now.month <= 2 : 
      print("이번달은 {}월로 겨울입니다.".format(now.month))

날짜 / 시간 출력하기

datetime.datetime.now()함수

 

위 실행 결과

 

number = input("숫자를 입력하세요>")

#마지막 자리 숫자를 추출
last_character = number[-1]

#숫자로 변환하기
last_char = int(last_character)

#가장 빠른 방법은 사실 이 방법!
number = int(number)

#짝수확인
if last_char % 2 == 0 :
    print("짝수입니다.")

#홀수확인
if last_char %2 != 0 :
    print("홀수입니다.")    

#in연산자 활용
if last_character in "02468" :
    print("짝수입니다.")

if last_character in "13579" :
    print("홀수입니다.")

 

끝자리로 짝수 홀수 구분하기 예제

 

위 실행 결과

 

불 자료형과 if 조건문 2

else 구문

if 조건문 뒤에 사용하며, if 조건문의 조건이 거짓을 때 실행되는 부분

조건문이 오로지 두 가지로만 구분될 때 if else 구문을 사용하면
조건 비교를 단 한 번만 하므로 이전의 코드보다 두 배 효율적

 

elif 구문

세 개 이상의 조건을 연결해서 사용

if 조건문과 else 구문 사이에 입력

빈 컨테이너

if 조건문의 매개변수에 불 아닌 다른 값이 올 때 자동으로 불로 변환

이때False로 변환되는 값: None, 0.0, 문자열, 빈 바이트 열,, 빈 리스트

나중에 구현하고자 구문을 비워 두는 경우

 

IndentationError

if 조건문 사이에는 무조건 들여 쓰기4칸 넣고 코드 작성해야 함

pass 키워드

아무것도 작성하지 않고 임시적으로 비워 둠

 

 

 

 

# 날짜/시간과 관련한 기능 가져옵니다.
import datetime

# 현재 날짜/시간을 구하고
#쉽게 사용할 수 있게 월을 변수에 저장합니다
now = datetime.datetime.now()
month = now.month

#조건문으로 계절을 확인합니다.
if 3<= month <= 5:
  print("현재는 봄입니다.")
elif 6<= month <=8:
  print("현재는 여름입니다.")
elif 9<= month <=11:
  print("현재는 가을입니다.")
else : 
  print("현재는 겨울입니다.")

 

elif 사용한 조건문

현재는 5월이므로 결과 : 현재는 봄입니다 출력

 

score = float(input("학점 입력>"))


if score == 4.5:
  print("신")
elif 4.2 <= score < 4.5 :
  print("교수님의 사랑")
elif 3.5 <= score < 4.2 : 
  print("현 체제의 수호자")
elif 2.8 <= score <3.5 :
  print("일반인")
elif 2.3 <= score <2.8 :
  print("일탈을 꿈꾸는 소시민")
elif 1.75 <= score <2.3 :
  print("오락문화의 선구자")
elif 1.0 <= score <1.75 :
  print("불가촉천민")
elif 0.5 <= score <1.0 :
  print("자벌레")
elif 0 < score <0.5 :
  print("플랑크톤")
elif score == 0:
  print("시대를 앞서가는 혁명의 씨앗")

 

if조건문 예제

but, 위에서 제외된 조건을 한번 더 검사하여 비효율적

 

score = float(input("학점 입력>"))


if score == 4.5:
  print("신")
elif 4.2 <= score:
  print("교수님의 사랑")
elif 3.5 <= score: 
  print("현 체제의 수호자")
elif 2.8 <= score :
  print("일반인")
elif 2.3 <= score:
  print("일탈을 꿈꾸는 소시민")
elif 1.75 <= score:
  print("오락문화의 선구자")
elif 1.0 <= score:
  print("불가촉천민")
elif 0.5 <= score :
  print("자벌레")
elif 0 < score :
  print("플랑크톤")
else : 
  print("시대를 앞서가는 혁명의 씨앗")

 

위 조건문 수정. ver

if조건문을 효율적으로 사용하기

 

위 실행 결과(동일)

 

하 힘드럿다..

 

 

05.06

 

C언어 비대면 수업 날

인데..!
아무래도 여러 언어를 하다 보니

헷갈리기 시작해서 C언어 파트는

일요일에 따로 공부하고 업로드 예정!

일단 스킵!

 

 

 

05.07

 

자바 대면 수업 날!

곧이라도 비가 올 것 같은 날씨

+

나의 아리송한 몸 상태로

오늘 컨디션은 최악이다.🤣

되도록이면 조퇴 안 하고 끝까지 버티고 싶은데

몸이 잘 따라주길..!

 

오전은 3일 날 내준 문제들 풀이와

새로운 문제 풀이!!

(2교시에 문제 풀이하는데 몸이 안 좋아

천국과 지옥을 여러 번 왔다 갔다 했다.. 하)

 

오후는 클래스 진도를 나갈 예정이다!

아파도 최대한 버티고 버텨서

클래스 진도까지 다 듣고 집에 가야지ㅠㅠ

 

 

 

 

댓글