zero-base 취업스쿨/스터디노트/1주차/파이썬 기초 #4

Sea Yoon·2023년 8월 5일

파이썬 기초,중급

목록 보기
4/8
post-thumbnail

연습문제 풀이#1

  • 체중(g)과 신장(cm)을 입력하면 BMI지수가 출력되는 프로그램을 만들어보자.
#에러 코드 
weight = int(input('체중 입력(g):'))
height = int(input('신장 입력(cm):'))
if weight.isdigit():
    weight = weight / 10
if height.isdigit():
    height = height / 100
print('체중:{}kg'.format(weight))
print('신장:{}m'.format(height))
bmi = weight / (height * height)
print('BMI: %f' % bmi)
#실행결과 AttributeError: 'int' object has no attribute 'isdigit'

AttributeError는 객체 혹은 클래스에 사용할 수 없는 속성을 사용하는 경우 발생한다고 합니다.
위의 코드에서는 weight 과 height에 바로 int를 적용시켜 정수화 됬으니 isdigit()함수를 대입할 수 가 없다고 이해하였습니다.
따라서 int를 빼주어 다시 써보면 에러가 안뜨고 정상 작동하는 것을 알 수 있었습니다.

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)
#실행결과 
신장 입력(cm):187
체중:85.5kg
신장:1.87m
BMI: 24.45

연습문제 풀이#2

  • num1,num2의 값을 서로 바꾸어 각각의 값을 출력하는 프로그램을 만들어보자
num1=10
num2=20
print('num1:{},num2:{}'.format(num1,num2))
num1 = 20
num2 = 10
print('num1:{},num2:{}'.format(num1,num2))
#실행결과 
num1:10,num2:20
num1:20,num2:10

연습문제 풀이#3

  • 중간, 기말고사 점수를 입력하면 총점과 평균이 출력되는 프로그램을 만들어보자
midExamScore = input('중간 고사 점수:')
finalExamScore = input('기말 고사 점수:')
if midExamScore.isdigit():
    midExamScore = int(midExamScore)
    print('중간 고사 점수:{}'.format(midExamScore))
else:
    print('잘못입력하셨습니다.')
if finalExamScore.isdigit():
    finalExamScore = int(finalExamScore)
    print('기말 고사 점수:{}'.format(finalExamScore))
else:
    print('잘못입력하셨습니다')
sum = midExamScore+finalExamScore
avg = sum / 2
print('총점:{}'.format(sum))
print('평균:{}'.format(avg))
#실행결과
중간 고사 점수:80
기말 고사 점수:90
총점:170
평균:85.0
  • 위에서 더 간단하게 만드려면 중간고사점수와 기말고사 점수의 조건식을 'and'를 이용하여 if 조건문을 하나로 만들면 된다.

연습문제 풀이#4

chooseYourLanguage = int(input('언어 선택 (1. 한국어, 2.English) :'))
if chooseYourLanguage == 1:
    print('1.샌드위치\t 2.햄버거 \t 3.쥬스')
if chooseYourLanguage == 2:
    print('1. sandwich\t 2.Hamburger\t 3.Juice')

연습문제 풀이#5

  • 나의 나이가 100살이 되는 해를 구해보자
myage = int(input('나의 나이는?:'))
age100 = 100 - myage
year = 2023
print(year+age100)
  • import datetime 함수를 넣어서 다시 구해보자
import datetime
today=datetime.datetime.today()
myage=input('나의 나이는?:')
if myage.isdigit():
    afterage=100-int(myage)
    my100=today.year + afterage
    print('{}년 ({}년후)에 100살이 됩니다'.format(my100,afterage))

연습문제 풀이#6

  • 상품의 가격을 입력하고 지불금액을 입력하면 거스름돈을 출력하는 프로그램을 만들어보자. 거스름돈은 지폐와 동전이 얼만큼 필요한지 갯수를 나타내어본다.
money50000 = 50000;money10000 = 10000;money5000 =5000;money1000=1000;money500=500;money100=100;money10=10
goods = int(input('상품 가격 입력:')) 
money = int(input('지불 금액:'))
if money > goods:
    changes = money - goods
    changes = (changes // 10 ) * 10
    print('거스름돈:{}'.format(changes))
print('-'*30 )
if changes > 50000:
    changesCnt = changes // money50000
    print('50,000 {}장'.format(changesCnt))
    changes = changes % money50000
if changes > 10000:
    changesCnt = changes // money10000
    print('10,000 {}장'.format(changesCnt))
    changes = changes % money10000
if changes > 5000:
    changesCnt = changes // money5000
    print('5,000 {}장'.format(changesCnt))
    changes = changes % money5000
if changes > 1000:
    changesCnt = changes // money1000
    print('1,000 {}장'.format(changesCnt))
    changes = changes % money1000
if changes > 500:
    changesCnt = changes // money500
    print('500 {}개'.format(changesCnt))
    changes = changes % money500
if changes > 100:
    changesCnt = changes // money100
    print('100 {}개'.format(changesCnt))
    changes = changes % money100
if changes > 10:
    changesCnt = changes // money10
    print('10 {}개'.format(changesCnt))
#실행결과
상품 가격 입력:8302
지불 금액:100000
거스름돈:91690
------------------------------
50,000 110,000 41,000 1500 1100 110 9

연습문제 풀이#7

  • 국어,영어,수학 점수를 입력하여 총점과 평균을 구하고 최고점수과목, 최저점수과목, 최고 최저점수의 차이를 구하는 프로그램을 만들어보자
kor = '국어'; eng = '영어'; mat = '수학'
korScore = int(input('국어 점수 입력:'))
engScore = int(input('영어 점수 입력:'))
matScore = int(input('수학 점수 입력:'))
sum = korScore + engScore + matScore
print('총점:{}'.format(korScore+engScore+matScore))
avg = sum / 3
print('평균:{:.2f}'.format(avg))
print('-'*30)
maxScore = korScore
maxSubject = kor
if engScore > maxScore:
    maxScore = engScore
    maxSubject = eng
if matScore > maxScore:
    maxScore = matScore
    maxSubject = mat
print('최고 점수 과목:{}({})'.format(maxScore,maxSubject))
minScore = korScore
minSubject = kor
if engScore < minScore:
    minScore = engScore
    minSubject = eng
if matScore < minScore:
    minScore = matScore
    minSubject = mat
print('최저 점수 과목:{}({})'.format(minScore,minSubject))
print('최고 최저 점수 차이:{}'.format(maxScore-minScore))
#실행결과 
국어 점수 입력:80
영어 점수 입력:90
수학 점수 입력:100
총점:270
평균:90.00
------------------------------
최고 점수 과목:100(수학)
최저 점수 과목:80(국어)
최고 최저 점수 차이:20

연습문제 풀이#8

  • 메시지를 입력하면 메시지 길이에 따라 발송요금을 계산해주는 프로그램을 만들어보자
message = input('메시지 입력:')
tax50 = 50
tax100 = 100
if len(message) < 50:
    print('SMS 발송!!')
    print('메시지 길이:{}'.format(len(message)))
    print('메시지 발송 요금:{}원'.format(tax50))
else:
    print('MMS 발송!!')
    print('메시지 길이:{}'.format(len(message)))
    print('메시지 발송 요금:{}원'.format(tax100))
#실행결과
메시지 입력:안녕하세요
SMS 발송!!
메시지 길이:5
메시지 발송 요금:50

연습문제 풀이#9

  • 과목의 점수를 입력하면 총점과 평균을 구해주고 각 과목의 편차를 -,+의 기호를 이용하여 나타내보자.('-'는 편차가 마이너스일때, '+' 는 편차가 플러스 일때)
kor = int(input('국어점수:'))
eng = int(input('영어점수:'))
mat = int(input('수학점수:'))
sci = int(input('과학점수:'))
hist = int(input('국사점수:'))
sum = kor+eng+mat+sci+hist
avg = int(sum/5)
korAvg= 85;engAvg=82;matAvg=89;sciAvg=75;histAvg=94
sumAvg=korAvg+engAvg+matAvg+sciAvg+histAvg
avgDevi=int(sumAvg/5)
korDevi = kor-korAvg
engDevi = eng-engAvg
matDevi = mat-matAvg
sciDevi = sci-sciAvg
histDevi = hist-histAvg
print('총점:{}({})'.format(sum,(sum-sumAvg)))
print('평균:{}({})'.format(avg,(avg-avgDevi)))
print('-'*50)
str = '+' if korDevi > 0 else '-'
print('국어 편차:{}({})'.format(str * abs(korDevi),korDevi))
str = '+' if engDevi > 0 else '-'
print('영어 편차:{}({})'.format(str * abs(engDevi),engDevi))
str = '+' if matDevi > 0 else '-'
print('수학 편차:{}({})'.format(str * abs(matDevi),matDevi))
str = '+' if sciDevi > 0 else '-'
print('과학 편차:{}({})'.format(str * abs(sciDevi),sciDevi))
str = '+' if histDevi > 0 else '-'
print('국사 편차:{}({})'.format(str * abs(histDevi),histDevi))
print('-'*50)
#실행결과 
국어점수:80
영어점수:90
수학점수:100
과학점수:70
국사점수:85
총점:425(0)
평균:85(0)
--------------------------------------------------
국어 편차:-----(-5)
영어 편차:++++++++(8)
수학 편차:+++++++++++(11)
과학 편차:-----(-5)
국사 편차:---------(-9)
--------------------------------------------------

연습문제 풀이#10

  • '*'를 이용해서 다음과 같이 다양한 모양을 출력해보자
for j in range(1,6):
    for i in range(j):
        print('*',end='')
    print()
#실행결과 
*
**
***
****
*****
for j in range(6,0,-1):
    for i in range(j):
        print('*',end='')
    print()
#실행결과 
******
*****
****
***
**
*
for j in range(1,6):
    for i in range(j):
        print('*',end='')
    print()
for j in range(6,0,-1):
    for i in range(j):
        print('*',end='')
    print()
#실행결과 
*
**
***
****
*****
******
*****
****
***
**
*
for i1 in range(1, 6):
    for i2 in range(6-i1-1):
        print(' ', end='')
    for i3 in range(i1):
        print('*', end='')
    print()
#실행결과 
    *
   **
  ***
 ****
*****

오늘의 짧막한 공부 후기🤔

  • 숫자인지를 확인해주는 isdigit() 함수, 문자의 길이를 구해주는 len()함수,절대값을 알려주는 abs()함수, 랜덤하게 숫자를 돌려주는 random.randint 등 연습문제를 풀면서 다양한 함수, 모듈도 같이 배웠는데 문제 풀이할때 많이 쓰이는 것 같으니 꼭 기억해야겠다.
  • plus 커피중독

현재 come on 의 c 도 안왔음 (파이썬 4일차)

profile
우직한 거북이

0개의 댓글