카테고리 없음

TIL_250428 (월)

elya0919 2025. 4. 28. 18:09

오늘의 학습 목표 : 파이썬 1주차 기초 문법, 심화 문법

 

 

파이썬

= 일종의 번역팩

= 초보자가 배우기 좋은 언어

 

1-2 

 


*** 파이썬 기본 강의는 문법을 달달 외우는 것이 아니라 다시 와서 찾아 볼 수 있는 정도  ***

*** 실력 향상은 문제를 푸는데 집중하면 된다. ***

 

 

1-3 

 

변수

= 값을 담을 그릇 개념

 

변수 사칙연산 가능, 참과 거짓 판별 가능

 

a = 3 # a는 3의 값을 지닌 변수
b = 2 

print( a + b )
print( a - b )
print( a * b )
print( a / b )

print( a ** b) # 거듭제곱 
print( a % b ) # 나머지
print( a // b) # 몫

# Boolean (참, 거짓)
a = 3 > 2
print (a)

 

1-4

 

# 파이썬은 '글'도 데이터로 사용 가능 이것을 문자열이라 부름

# 작은 따옴표, 큰 따옴표 둘 다 사용가능 단, 섞어서 쓰면 안됌

# 문자열 더하기

first_name = 'yoonhwan '
last_name = 'kim'

print(first_name + last_name)

# 문자열과 정수형의 연산은 안됌

# len과 인덱싱

f='abcdefghijk'
result = len(f) # 문자열 길이 세기
print(result)

f[1] # 파이썬 인덱스는 0부터 세기 때문에 'b' 출력
print(f[1])

# 문자열 슬라이싱
# 기본 구조 f[ 시작 위치 : 글자 수], 
# 시작 위치 생략 시 0번째부터, 글자 수 생략 시 끝까지 출력
 
f='abcdefghijk'
print(f[:3]) # 0번째부터 3번까지
print(f[1:4]) # 1번째부터 4번까지 



# 특정 문자열 자르기 split('문자열')
my_email= 'elya0919@naver.com'

ex_split = my_email.split('@') # '@' 기준으로 문자열을 나눈다.
print(ex_split) # 결과 ['elya0919', 'naver.com'] 이렇게 리스트로 나옴

domain = my_email.split('@')[1].split('.')[0] # '@' 기준 나누고, 나뉜 값에서 '.'을 기준으로 나누기
# 첫 번째 split = @ 기준으로 나눈 값['elya0919', 'naver.com'] 여기서 1번 선택 [naver.com]
# 두 번째 split = . 기준으로 나눈 값 ['naver', 'com'] 여기서 0번 선택 [naver]

print(domain)

# Q. 문자열의 앞의 반만 출력하기 "sparta"의 앞의 3글자인 "spa"만 출력해봅시다.
a = 'sparta'

print(a[0:3])

# Q. 전화번호의 지역번호 출력하기 phone = "02-123-1234"
phone = "02-123-1234"

local_num = phone.split('-')[0]
print(local_num)

 

1-5 

리스트, 딕셔너리

* 리스트의 기본구조
- A = [1,2,3]

* 리스트 추가, 정렬, 값확인

- 추가 = A.append (리스트 마지막에 값 추가)

- 정렬 
= A.sort() 기본정렬
= A.sort(reverse = True) 역순으로 정렬

- 값 확인
= Print(3 in A) -> 결과 값 true
# in 순서 주의

* 딕셔너리 기본구조 -> 키, 밸류
- A = {"name": "윤환", "height":179}
print(a["name"] -> 결과 값 "윤환"

딕셔너리 정보 업데이트 가능
순서가 없기때문에 인덱싱 x
딕셔너리 안에 딕셔너리, 어떤 자료형이든 사용가능
IN 사용해서 값이 있는지 확인 가능
리스트안에 딕셔너리 사용해서 조합 가능

Q. 딕셔너리에서 원하는 정보를 찾아보기 smith의 science 점수를 출력해보세요
people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

정답
print(people[2]['score']['science'])
# 리스트화 된 딕셔너리에서 2번을 선택 후 2번안에 score 선택 후 그 안에 science 선택 !

 

1-6 

if문

기본구조

if 조건 : <- : 이거 중요

print(참 일때)

else:

print(거짓) 

 

elif -> 조건이 여러개 일 때

 

1-7 

for문

 

리스트 안에 값을 반복

 

if 사용해서 조건설정 가능

 

enumerate 사용가능 (반복되는 값 앞에 인덱스 숫자 출력)

= 훨씬 깔끔하게 for문 사용 가능해짐

 

break 사용가능 (지정한 값까지만 반복시키는거)

 

Q. 사람의 나이 출력하기 이 리스트에서 나이가 20보다 큰 사람만 출력합니다.

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    if person['age'] > 20:
        print(person['name'],person['age'])

 

fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지']

# 앞에 인덱스 번호 붙여서 쭉 출력하기
for i, fruit in enumerate(fruits):
    print(i,fruit)

# break 사용 -> 인덱스 번호가 4번이 되면 멈춘다 
for i, fruit in enumerate(fruits):
    print(i, fruit)
    if i == 4:
        break

 

1-8 반복문 연습

 

# Q. 리스트에서 짝수만 출력하는 함수 만들기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list:
    if num % 2 == 0: # 순회중인 num이 2로 나눴을 때 나머지 값이 0이면 (짝수)
        print(num) # 출력

# Q. 리스트에서 짝수의 개수를 출력하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0 # 반복되는 계산에서 조건에 맞는 값을 담을 변수 (빈 그릇)

for num in num_list:
    if num % 2 == 0: # 짝수면
        count += 1 # 0인 count에다 1을 더한다.
print(count) # 짝수가 나올 때 마다 1씩 더해진 총 7개의 짝수 값이 나온다.

# Q. 리스트 안에 있는 모든 숫자 더하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
sum_num = 0 # 빈 그릇

for num in num_list:
    sum_num += num # 순회중인 num을 sum_num 변수에 더해라

print(sum_num)

# Q. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
max = 0

for num in num_list:
    if max < num: # 만약 max보다 num이 크다면
        max = num # max는 num이다. (숫자가 대입되면서 커지면 if문 조건에 부합하지 않기때문에 갱신이 안됌)
print(max)

 

1-9 함수 def

 

def는 내가 설정해놓은 코드로 이루어진 템플릿 개념이다.

한 번 만들어두고 값을 넣으면 def에 설정해놓은 작업을 거쳐서 결과 값을 나타낸다.

 

예를 들어 한 명씩 결과를 확인 해야하는데 if문을 사람 수 만큼 쓰기는 번거로우니 

def로 코드를 만들어 놓고 값만 입력하면 매우 편하게 결과 값을 구할 수 있다.

 

return이라는 것도 사용 가능한데

def안에서 만든 결과를 함수 밖으로 보내주는 역할을 한다.

 

예를 들어 

def bus_fee(age):
		if age > 65:
		    return 0
		elif age > 20:
		    return 1200
		else:
		    return 0     


money = bus_fee(28)
print(money)

 

이런 def를 사용한 코드가 있다면 65세가 넘을 때 0이라는 값을 def밖 money라는 변수로 보낸다(return)

 

 

혼자 풀이

def check_gender(pin):
    a = pin.split('-')
    ab = int(a[1][0])
    if ab % 2 == 0:
        print('여성입니다.')
    else:
        print('남성입니다.')

my_pin = "200101-3012345"
check_gender(my_pin)

 

하나 씩 과정을 거치면서 생각하니 변수를 2개 만들었다. 

 

강의 풀이 

def check_gender(pin):
    num = pin.split('-')[1][0]
    if int(num) % 2 == 0:
        print('여성')
    else:
        print('남성')

my_pin = "200101-3012345"
check_gender(my_pin)

 

둘 다 결과 값도 같지만 한 번에 처리할 수 있는 부분은 한 줄로 만드는게 더 좋은 것 같다 !