데이터 2주_파이썬 기초 문제풀이

ka02·2023년 3월 12일

data, python

목록 보기
3/3

데이터와 변수

  • 가로, 세로 입력받아서 삼각형, 사각형 넓이 구하기
width = float(input('가로 길이 입력:'))
height = float(input('세로 길이 입력:'))
triangle = width * height / 2
square = width * height

print('-' * 50)
print('삼각형 넓이: %.2f' % triangle)
print('사각형 넓이: %.2f' % square)

결과:

  • 메세지 길이 구하기, 문자 찾기
    len():문자 길이를 반환, find(): 특정 문자열의 위치를 찾아 반환함
userMsg = input('메세지 입력:')
print('메시지 문자열 길이: {}'.format(len(userMsg)))

article = '파이썬[3](영어: Python)은 1991년[4] 네덜란드계 ' \
           '소프트웨어 엔지니어인 귀도 반 로섬[5]이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 ' \
           '좋아하는 코미디인〈Monty Pythons Flying Circus〉에서 따온 것이다.'
strIdx = article.find('객체지향')
print('\'객체지향\' 문자열 위치:', strIdx)

결과:

  • 사용자로부터 입력받은 개인정보를 포맷문자열을 이용해서 출력하기
    (비밀번호, 주민번호 뒷자리는 별표로 처리할 것)
    str[0]: str에 저장된 문자열에서 첫번째 문자를 반환함
name = input('이름 입력: ')
mail = input('메일 입력: ')
id = input('아이디 입력: ')
password = input('비밀번호 입력: ')
privateNumber1 = input('주민번호 앞자리 입력: ')
privateNumber2 = input('주민번호 뒷자리 입력: ')
address = input('주소 입력: ')

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

#print(f'') 형식도 알아둘 것, *로 출력하는 방법 [0] + 생각해보고 하기
  • 키, 체중 입력받아 bmi 구하기
    .indigit(): 숫자면 True 아니면 False
weight = input('체중 입력(kg): ')
height = input('신장 입력(cm): ')

#숫자면 True 아니면 False isdigit
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)

연산자

  • 금액, 이율, 거치기간을 입력하면 복리계산하는 복리계산기 만들기
    for문 사용하는 방법 꼭 알아두기!
money = int(input('금액 입력:'))
rate = float(input('이율 입력:'))
term = int(input('기간 입력:'))

targetMoney = money

#for문 쓰는거 잘 생각해보기
for i in range(term):
    targetMoney += (targetMoney * rate * 0.01)

targetMoneyFormated = format(int(targetMoney), ',')

print('-' * 30)
print('이율: {}%'.format(rate))
print('원금: {}원'.format(format(money,',')))
print('{}년후 금액: {}원'.format(term, targetMoneyFormated))

print('')
print('-' * 30)
  • 고도가 60m 올라갈때마다 기온이 0.8도 내려간다고 할 때 고도를 입력하면 기온이 출력되는 프로그램 만들기(지면온도: 29도)
    1) //는 몫을 구하는 연산자니까 고도에서 60을 나눠서 몫을 구한 다음에 몇번 0.8 * 할지를 찾기
    2) 값이 0이 아니면 0.8도를 계속 빼주기
baseTemp = 29
step = 60
stepTemp = 0.8

height = int(input('고도 입력: '))
targetTemp = baseTemp -(height // 60 * 0.8)
# //는 몫을 구하는 연산자니까 고도에서 60을 나눠서 몫을 구한 다음에 몇번 0.8 * 할지를 찾기

if height % step != 0:
    targetTemp -= stepTemp
#값이 0이 아니면 0.8도를 계속 빼주기

print('지면온도: {}'.format(baseTemp))
print('고도 {}m의 기온: {}'.format(height, targetTemp))

조건문

  • 국어, 영어, 수학, 과학, 국사 점수를 입력하면 총점을 비롯한 각종 데이터가 출력되는 프로그램 만들기 (막대그래프로 시각화)
korAvg = 85; engAvg = 82; matAvg=89
sciAvg = 75; hisAvg =94
totalAvg = korAvg + engAvg + matAvg + sciAvg + hisAvg
avgAvg = int(totalAvg /5)

korScore = int(input('국어 점수: '))
engScore = int(input('수학 점수: '))
matScore = int(input('수학 점수: '))
sciScore = int(input('과학 점수: '))
hisScore = int(input('국사 점수: '))

totalScore = korScore + engScore + matScore + sciScore + hisScore
avgScore = int(totalScore / 5)

korGap = korScore - korAvg
engGap = engScore - engAvg
matGap = matScore - matAvg
sciGap = sciScore - sciAvg
hisGap = hisScore - hisAvg

totalGap = totalScore - totalAvg
avgGap = avgScore - avgAvg

print('-' * 70)
print('총점: {}({}), 평균: {}({})'.format(totalScore, totalGap, avgScore, avgGap))

print('국어: {}({}), 영어: {}({}), 수학: {}({}), 과학: {}({}), 국사: {}({})'.format(
    korScore, korGap, engScore, engGap, matScore, matGap, sciScore, sciGap, hisScore, hisGap))
print('-' * 70)

str = '+' if korGap > 0 else '-'
print('국어 편차: {}({})'.format(str * abs(korGap), korGap))

str = '+' if engGap > 0 else '-'
print('영어 편차: {}({})'.format(str * abs(engGap), engGap))

str = '+' if matGap > 0 else '-'
print('수학 편차: {}({})'.format(str * abs(matGap), matGap))

str = '+' if sciGap > 0 else '-'
print('과학 편차: {}({})'.format(str * abs(sciGap), sciGap))

str = '+' if hisGap > 0 else '-'
print('국사 편차: {}({})'.format(str * abs(hisGap), hisGap))

str = '+' if totalGap > 0 else '-'
print('총점 편차: {}({})'.format(str * abs(totalGap), totalGap))

str = '+' if avgGap > 0 else '-'
print('평균 편차: {}({})'.format(str * abs(avgGap), avgGap))

결과:

  • PC에서 난수를 발생하면 사용자가 맞추는 게임
import random

rNum = random.randint(1, 1000)
tryCount = 0
gameFlag = True

while gameFlag:
    tryCount += 1
    pNum: int = int(input('1에서 1,000까지의 정수 입력: '))

    if rNum == pNum:
        print('빙고!')
        gameFlag = False
    else:
        if rNum > pNum:
            print('난수가 크다!')
        else:
            print('난수가 작다!')

결과:

반복문

  • 다양한 반복문 사용하기: 1부터 사용자가 입력한 정수까지 합, 홀수의 합, 짝수의 합, 팩토리얼 출력
fNum = int(input('정수 입력: '))
addSum = 0
for i in range(1, (fNum + 1)):
    addSum += i

addSumFormated = format(addSum, ',')
print('합결과 : {}'.format(addSumFormated))

#홀수
oddSum = 0
for i in range(1, (fNum + 1)):
    if i % 2 != 0:
        oddSum += i

oddSumFormated = format(oddSum, ',')
print('홀수합 결과 : {}'.format(oddSumFormated))

#짝수
evenSum = 0
for i in range(1, (fNum + 1)):
    if i % 2 == 0:
        evenSum += i

evenSumFormated = format(evenSum, ',')
print('짝수합 결과 : {}'.format(evenSumFormated))

#팩토리얼
facResult = 1
for i in range(1, (fNum + 1)):
    facResult *= i

facResultFormated = format(facResult, ',')
print('팩토리얼합 결과 : {}'.format(facResultFormated))
  • 다양한 * 출력하기
for i in range(1, 6):
    for j in range(i):
        print('*', end='') #개행x
    print() #개행

for i1 in range(1, 6):
    for i2 in range(6 -i1 -1):
        print(' ', end='')
    for i3 in range(i1):
        print('*', end='')
    print()
print('')

for a in range(5, 0, -1):
    for a1 in range(a):
        print('*', end='')
    print()
print('')

for b in range(5, 0, -1):
    for b1 in range(5 - b):
        print(' ', end='')
    for b1 in range(b):
        print('*', end='')
    print()
print('')

for c in range(1, 10):
    if c < 6:
        for c1 in range(c):
           print('*', end='')
    else:
        for c1 in range(10 - c):
            print('*', end='')
    print() #개행
print()

for d in range(1, 6):
    for d1 in range(1, 6):
        if d == d1:
            print('*', end='')
        else:
            print(' ', end='')
    print()
print()

for e in range(5, 0, -1):
    for e1 in range(1, 6):
        if e == e1:
            print('*', end='')
        else:
            print(' ', end='')
    print()
print()

결과:


0개의 댓글