[zero-base/] DS Part 1. Python 기초 - 4일차 스터디 노트

손윤재·2023년 12월 8일

제로베이스 DS 22기

목록 보기
5/55
post-thumbnail

파이썬 기초 문제풀이

- 변수, 연산


🧩 예제 1

사용자로부터 입력받은 개인정보를 포맷문자열을 이용해 출력
단, 비밀번호와 주민번호 뒷자리는 별표로 처리

💡 'len()' 함수를 이용해 '*'을 얼마나 찍을지 구할 수 있다.
   'str[0]'은 str에 저장된 문자열의 첫번재 문자값이다.
  name = input('이름 입력 : ')# 'hong gil dong' 입력
  mail = input('메일 입력 : ')# 'gildong@gmail.com'
  userID = input('아이디 입력 : ')# 'hongID'
  userPW = input('비밀번호 입력 : ')# '1234567890' 
  privateNum1 = input('주민번호 앞자리 입력 : ')# '840921'
  privateNum2 = input('주민번호 뒷자리 입력 : ')# '2018543'
  address = input('주소 입력 : ')# 'korea seoul' 

  >>> print('-' * 30)
  >>> print(f' 이름 : {name}')
  >>> print(f' 메일 : {mail}')
  >>> print(f' 아이디 : {userID}')
  
  pwStar = '*' * len(userPW)>>> print(f' 비밀번호 : {pwStar}')
  
  pvStar = privateNum2[0] + ('*' * (len(privateNum2) - 1))>>> print(f' 주민번호 : {privateNum1} - {privateNumStar}')
  
  >>> print(f' 주소 : {address}')
  >>> print('-' * 30')
  
  # 실행결과
  # ------------------------------
  #  이름 : hong gil dong
  #  메일 : gildong@gmail.com
  #  아이디 : hongID
  #  비밀번호 : **********
  #  주민번호 : 840921 - 2******
  #  주소 : korea seoul
  # ------------------------------


🧩 예제 2

체중(g)과 신장(cm)을 입력하면 BMI지수가 출력되는 프로그램
─> BMI = 몸무게(kg) / (신장(m) * 신장(m))

💡 'isdigit()' 메서드는 문자열의 내용이 숫자인지 확인하여
	맞으면 True, 아니면 False를 반환한다.
  weight = input('체중 입력(g) : ')# 855 입력
  height = input('신장 입력(cm) : ')# 187 입력

  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)
  result = ''
  if bmi <= 18.5:
      result = '저체중'
  elif bmi > 18.5 and bmi <= 23.0:
      result = '정상체중'
  elif bmi > 23.0 and bmi <= 25.0:
      result = '과체중'
  elif bmi > 25.0 and bmi <= 40.0:
      result = '비만'
  elif bmi > 40.0:
      result = '심각한비만'
  
  >>> print('BMI : %.2f -> %s입니다.' % (bmi, result))
  
  # 실행결과
  # 체중 : 85.5kg
  # 신장 : 1.87m
  # BMI : 24.45 -> 과체중입니다.


🧩 예제 3

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

💡 'datetime' 모듈을 가져와서 오늘의 날짜와 시간 데이터를 얻는다.
   'strfdate()'함수와 출력 포맷을 사용해 오늘 날짜와 시간을 출력한다.
   '초'를 나타내는 출력 포맷('%S')은 대문자를 사용한다.
    소문자('%s)는 문자열을 나타내는 출력 포맷이므로 쓰면 Error~!
  import datetime
  
  today = datetime.datetime.today() ⭐
  curYear = today.year
  
  >>> print(f'Today: {today.strftime('%y/%m/%d %h:%m:%S')}') ⭐

  myAge = input('나이 입력 : ')# 27 입력

  if myAge.isdigit():
      deltaAge = 100 - int(myAge)
      resultYear = curYear + deltaAge
      >>> print('{}년({}년후)에 100살!!'.format(resultYear, deltaAge))
  else:
      >>> print('잘못 입력했습니다.')
  
  # 실행결과
  # Today: 23/12/06 09:17:51
  # 2096년(73년후)에 100살!!


🧩 예제 4

국어, 영어, 수학 점수 입력 후 총점, 평균, 최고점수와 과목, 최저점수와 과목, 그리고 최고 점수와 최저 점수의 차이를 각각 출력한다.

💡 'if'문을 사용하면 조건문이 총 4번 수행되데,
   'if ~ else'문을 사용하면 조건문이 총 2번 수행되도록 할 수 있다.
  korScore = int(input('국어 점수 입력 : '))# 84
  engScore = int(input('영어 점수 입력 : '))# 67
  mathScore = int(input('수학 점수 입력 : '))# 91

  totalScore = korScore + engScore + mathScore
  avgScore = totalScore / 3
  print('총점 : {} \n평균 : {:.2f}'.format(totalScore, avgScore))

  maxScore = korScore; maxSubject = '국어'
  minScore = korScore; minSubject = '국어'

  if engScore > maxScore:
      maxScore = engScore
      maxSubject = '영어'
  else:
      minScore = engScore
      minSubject = '영어'

  if mathScore > maxScore:
      maxScore = mathScore
      maxSubject = '수학'
  elif mathScore < minScore:
      minScore = mathScore
      minSubject = '수학'

  difScore = maxScore - minScore

  >>> print('-' * 30)
  >>> print(' 최고 점수 과목(점수) : {}({})'.format(maxSubject, maxScore))
  >>> print(' 최저 점수 과목(점수) : {}({})'.format(minSubject, minScore))
  >>> print(' 최고, 최저 점수 차이 : {}'.format(difScore))
  >>> print('-' * 30')
  
  # 실행결과
  # 총점 : 242 
  # 평균 : 80.67
  # ------------------------------
  #  최고 점수 과목(점수) : 수학(91)
  #  최저 점수 과목(점수) : 영어(67)
  #  최고, 최저 점수 차이 : 24
  # ------------------------------


🧩 예제 5

금액, 이율, 거치 기간을 입력하면 복리로 계산하는 프로그램

💡  단위구분문자(세자리 마다 콤마)를 찍어주는 방법으로
	'format()' 함수를 사용할 수 있고, ':,' 형식문자를 사용할 수도 있다.
  depositMoney = int(input('예금 금액 입력(원) : '))# 2000000
  depositRate = float(input('예금 이율 입력(%) : '))# 5.1
  depositTerm = int(input('예금 기간 입력(년) : '))# 6

  resultMoney = depositMoney
  
  for i in range(depositTerm):
      resultMoney += resultMoney * depositRate * 0.01

  resultfMoney = format(int(resultMoney), ',')>>> print('-' * 30)
  >>> print(' 이율 : {}%'.format(depositRate))
  >>> print(' 원금 : {:,}원'.format(depositMoney))>>> print(' {}년 후 금액 : {}원'.format(depositTerm, resultfMoney))
  >>> print('-' * 30')
  
  # 실행결과
  # ------------------------------
  #  이율 : 5.1%
  #  원금 : 2,000,000원
  #  6년 후 금액 : 2,695,543원
  # ------------------------------


🧩 예제 6

고도가 60m 올라갈 때마다 기온이 0.8도 내려 간다는 조건 하에서 고도를 입력했을 때 기온이 출력되는 프로그램 (단, 지면 온도는 29도)

💡  'divmod()' 함수를 사용해 몫과 나머지를 같이 구한다.
	'divmod()'함수는 결과를 tuple형으로 반환해 주고,
    'steps, restAlt ='에서 다음과 같은 형태로 할당해 준다.
    	steps: int = (divmod(altitude, altStep))[0],
        restAlt: int = (divmod(altitude, altStep))[1]
  groundTemp = 29
  altStep = 60
  stepTemp = 0.8

  altitude = 790 # int(input('고도 입력 : '))

  steps, restAlt = divmod(altitude, altStep) ⭐
  
  targetAltTemp = groundTemp - (steps * 0.8)
  if restAlt != 0:
      targetAltTemp -= stepTemp

  print('지면 온도 : {}도'.format(groundTemp))
  print('고도 {}m의 기온 : {}도'.format(altitude, targetAltTemp))
  
  # 실행결과
  # 지면 온도 : 29도
  # 고도 790m의 기온 : 17.8도
profile
ISTP(정신승리), To Be Data Scientist

0개의 댓글