제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지

제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.24]

김뚱입니다 2025. 3. 24. 17:08

[강의 요약]

[Ch 02. 파이썬 기초 문제풀이] 강의 수강

41_[연습문제] 파이썬 개요 및 기본 사용 방법부터 47_데이터와 변수(05)까지 강의 수강하였음

문제 풀이 강의여서 이론적인 내용을 정리할 필요는 없었다.

배운 내용을 연습문제를 통해 복습하는 정도의 시간을 가졌고

본 글에서는 이 문법은 알아두면 좋겠다 하는 부분만 정리할 예정

 

 

[데이터와 변수]

▶ 입력한 데이터 길이를 출력하는 법

userMsg = input('메시지 입력: ')
print('메시지 문자열 길이 : {}'.format(len(userMsg)))

★코드 설명★

코드 실행 결과는 위와 같다.

len() : 문자 길이를 반환함

 

 

 

문장에서 원하는 문자열을 찾기

article = '파이썬(영어: Python)은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, ' \
          '플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. ' \
          '파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python\'s Flying Circus〉에서 따온 것이다.'

strIndex = article.find('객체지향')
print('\'파이썬\' 문자열 위치: {}'.format(strIndex))

★코드 설명★

코드 실행 결과는 위와 같다.

'객체지향' 문자열을 찾는 코드다.

find() : 특정 문자열의 위치를 찾아서 반환함

 

 

 

 입력한 데이터를 실수로 변경한 후 간단한 계산

width = float(input('가로 길이 입력: '))
height = float(input('세로 길이 입력: '))

triangleArea = width * height / 2
squareArea = width * height

print('------------ Result ------------')
print('삼각형 넓이 : %f' % triangleArea)
print('사각형 넓이 : %f' % squareArea)

print('삼각형 넓이 : %.2f' % triangleArea)
print('사각형 넓이 : %.2f' % squareArea)
print('--------------------------------')

★코드 설명★

코드 실행 결과는 위와 같다.

width = input('가로 길이 입력: ') 이렇게만 코드를 작성하면 뭐가 문제가 될까?

input()은 항상 문자열(str)을 반환하므로 우리가 '숫자'를 입력해도 문자열로 입력받는다.

따라서 숫자 계산을 하기위해 int(), float() 같은 형변환 함수를 사용해야 한다!

이걸 캐스팅(casting) 또는 형변환(type conversion)이라고 한다.

width = float(input('가로 길이 입력: '))

 

 

 

▶ 원 반지름 입력받아서 넓이와 둘레를 출력(feat. 소수점)

pi = 3.14
radius = float(input('반지름(cm) 입력 : '))

circleArea = pi * radius * radius
circleLength = 2 * pi * radius

print('원의 넓이\t: %dcm' % circleArea)
print('원 둘레길이\t: %dcm' % circleLength)

print('원의 넓이\t: %.1fcm' % circleArea)
print('원 둘레길이\t: %.1fcm' % circleLength)

print('원의 넓이\t: %.3fcm' % circleArea)
print('원 둘레길이\t: %.3fcm' % circleLength)

★코드 설명★

코드 실행 결과는 위와 같다.

포맷함수 이용해서 소수점자리 정할 수 있음

반지름 입력도 전 코드에서 설명한 것처럼 실수형으로 형변환했고

%d로 정수로 출력했고 \t로 탭(tab)을 사용해서 줄간격까지 챙겨줬음

%.1f는 소수점 첫째 자리까지 실수로 출력

%.3f는 소수점 셋째 자리까지 실수로 출력

사실 이렇게도 코드를 작성할 수 있긴 하다.

# f-string 방식
print(f'원의 넓이\t: {circleArea:.3f}cm')

% 포맷팅보다 f-string 방식이 가독성이 더 좋다.

 

 

 

▶ 입력받은 비밀번호와 주민번호 뒷자리 가리기

name = input('이름 입력: ')
mail = input('메일 입력: ')
id = input('아이디 입력: ')
pw = input('비밀번호 입력: ')
privateNumber1 = input('주민번호 앞자리 입력: ')
privateNumber2 = input('주민번호 뒤자리 입력: ')
address = input('주소 입력: ')

print('--------------------------------')
print(f'이름 : {name}')
print(f'메일 : {mail}')
print(f'아이디 : {id}')
pwStar = '*' * len(pw)
print(f'비밀번호 : {pwStar}')
privateNumberStar = privateNumber2[0] + ('*' * 6)
print(f'주민번호 : {privateNumber1} - {privateNumberStar}')
print(f'주소 : {address}')
print('--------------------------------')

★코드 설명★

코드 실행 결과는 위와 같다.

str[0] : str에 저장된 문자열에서 첫 번째 문자를 반환함

코드 전부를 볼 필요는 없고 일부분만 보자

pwStar = '*' * len(pw)
print(f'비밀번호 : {pwStar}')

이 부분은 비밀번호 길이만큼 *를 반복출력해서 가려주는 거라 보면 된다.

privateNumberStar = privateNumber2[0] + ('*' * 6)
print(f'주민번호 : {privateNumber1} - {privateNumberStar}')

이 부분은 주민번호 뒷자리의 첫 번째 숫자만 오픈하고 나머지는 *로 가림

 

 

 

▶ 체중과 키를 입력받아 BGMI 지수를 알려주는 프로그램

# BMI = 몸무게(kg) / 신장(m) * 신장(m)

weight = input('체중 입력(g): ')
height = input('신장 입력(cm): ')

if weight.isdigit():
    weight = int(weight) / 10

if height.isdigit():
    height = int(height) / 100

print('체중: {}kg'.format(weight))
print('신장: {}m'.format(height))

bmi = weight / (height * height)
print('BMI : %.2f' % bmi)

★코드 설명★

isdigit() : 숫자인지 확인(숫자이면 True, 아니면 False)

이 코드도 마찬가지로 일부분만 보고 넘어감

if weight.isdigit():
    weight = int(weight) / 1000

바로 위에 작성했는데 isdigit() 메서드로 입력값이 숫자만으로 구성되어 있는지 확인하고

True이면 int로 변환해서 1000으로 나눠서 kg 단위로 바꿔준다.

80000g → True → 80000 / 1000 → 60kg

단위는 이해하기 쉽게 넣은 것. 출력할 때 따로 명시해줘야 함

코드를 덧붙여서 과체중/정상/저체중 판단 여부도 출력할 수 있을 듯

 

 

 

▶ 두 변수의 값을 서로 교환

num1 = 10
num2 = 20
print('num1: {}, num2: {}'.format(num1, num2))

tempNum = num1
num1 = num2
num2 = tempNum
print('num1: {}, num2: {}'.format(num1, num2))

★코드 설명★

tempNum = num1
num1 = num2
num2 = tempNum

꽤나 고전적인 방법으로 변수끼리 값을 교환했음

  • tempNum이라는 임시 변수를 사용
  • tempNum에 num1 값(10)을 저장
  • num1에 num2 값(20)을 넣음
    • → num1은 이제 20
  • num2에 tempNum 값(10)을 넣음
    • → num2는 이제 10
  • 결과적으로 num1과 num2의 값이 서로 교환되었음!

 

하지만 나는 파이썬으로 코딩하니까 간단명료하게 코드를 작성하는 걸 추구함

num1, num2 = num2, num1

백준에서 많이 써먹던 방식인데 이걸 적용한 풀 코드는 아래와 같음

num1 = 10
num2 = 20
print(f'num1: {num1}, num2: {num2}')

num1, num2 = num2, num1

print(f'num1: {num1}, num2: {num2}')

 

 

 

▶ 키오스크 언어 선택 프로그램

selectNumber = input('언어 선택(Choose your language): 1.한국어 \t 2.English ')

if selectNumber == '1':
    menu = '1.샌드위치 \t 2.햄버거 \t 3.쥬스 \t 4.커피 \t 5.아이스크림'
elif selectNumber == '2':
    menu = '1.Sandwich \t 2.Hamburger \t 3.Juice \t 4.Coffee \t 5.Ice cream'

print(menu)

★코드 설명★

처음에 원하는 언어를 선택

만약 1을 입력했다면 한국어 메뉴를 menu에 저장

한국어 메뉴가 출력된다.

근데 else를 추가해서 잘못된 값을 입력했다고 알려주는 게 좋을 듯함

더 나아가서 while문을 사용해서 1이나 2를 입력하면 break로 루프 종료하고

잘못입력하면 안내메시지 출력하고 재입력받는 코드로 작성하는 게 좋을 것 같음

 

 

 

▶ 내 나이가 100살이 되는 해의 연도를 구하는 프로그램

import datetime

today = datetime.datetime.today()

myAge = input('나이 입력 : ')
if myAge.isdigit():
    afterAge = 100 - int(myAge)
    myHundred = today.year + afterAge

    print('{}년({}년후)에 100살!!'.format(myHundred, afterAge))
else:
    print('잘 못 입력했습니다.')

★코드 설명★

datetime 모듈을 이용해서 오늘 날짜를 가져옴

today = datetime.datetime.today()
print(today)

이 코드를 실행하면 2025-03-24 17:30:59.357159 이런 식으로 나옴

print(today.year)   # 연도
print(today.month)  # 월
print(today.day)    # 일
print(today.hour)   # 시
print(today.minute) # 분
print(today.second) # 초

'''
2025
3
24
14
30
59
'''

원래 초 단위까지 나오는데 위 연도 구하는 프로그램에서는

datetime.datetime.today() → 현재 날짜와 시간 정보
.year → 현재 연도만 추출

이렇게 사용했음!

 

 

 

 

[나의 생각 정리]

  • 챕터 1 강의에서 배운 내용을 코드로 적용하면서 복습할 수 있었다.

 

[적용점]

  • 위에서 작성한 코드처럼 여러 코드들에 적용가능하다.

 

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”