데이터와 변수

name = '홍길동'
product = '야구글러브'
orderNo = 2568956
payMethod = '신용카드'
productPrice = 110000
payPrice = 100000
usePoint = 10000
payDate = '2021/08/03 21:50:12'
PayDiv = 6
payDivCategory = '무'
phone = '02-1234-5678'

print(name, '고객님 안녕하세요.')
print(name, '고객님의 주문이 완료되었습니다.')
print('다음은 주문건에 대한 상세 내역입니다.')
print('-'*50)
print('상품명\t: {}'.format(product))
print('주문번호\t: {}'.format(orderNo))
print('결재방법\t: {}'.format(payMethod))
print('상품금액\t: {} 원'.format(productPrice))
print('결재금액\t: {} 원'.format(payPrice))
print('포인트\t: {} P'.format(usePoint))
print('결재일시\t: {}'.format(payDate))
print('할부\t: {} 개월'.format(PayDiv))
print('할부유형\t: {}'.format(payDivCategory))
print('문의\t: {}'.format(phone))
print('-'*50)
print('저희 사이트를 이용해 주셔서 감사합니다.')

데이터를 변수에 선언후 선언한 변수를 출력문을 이용하여 출력한 문제

문자열의 길이를 측정할수있는 len()함수와 문장에서 특정 문자열을 찾을수있는 find()함수를 이용한 문제

  • 사용자로부터 입력받은 개인정보를 포맷문자열을 이용해서 다음과 같이 출력해보자. (단, 비밀번호와 주민번호 뒷자리는 별표로 처리하자)
name = input('이름 입력 : ')
maile = input('메일 입력 : ')
id = input('아이디 입력 : ')
password = input('비밀번호 입력 : ')
fNumber = int(input('주민번호 앞자리 입력 : '))
bNumber = str(input('주민번호 뒷자리 입력 : '))
add = input('주소 입력 : ')

print('-' * 25)
print('이름 : %s' % name)
print('메일 : %s' % maile)
print('아이디 : %s' % id)
print('비밀번호 : {}'.format('*' * len(password)))
print('주민번호 : {} - {}'.format(fNumber, bNumber[0] + '*' * (len(bNumber) - len(bNumber[0]))))
print('주소 : %s' % add)
print('-' * 25)

score1 = input('중간 고사 점수 : ')
score2 = input('기말 고사 점수 : ')

if score1.isdigit() and score2.isdigit():
    score1 = int(score1)
    score2 = int(score2)

    totarScore = score1 + score2
    avgScore = totarScore / 2

    print('총점 : {}, 평균 : {}'.format(totarScore, avgScore))

else:
    print('잘못 입력했습니다.')

  • 나의 나이가 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('잘못 입력했습니다.')


연산자

  • 상품 가격과 지불 금액을 입력하면 거스름 돈을 계산하는 프로그램을 만들어보자. 단, 거스름 돈은 지폐와 동전의 개수를 최소로 하고, 1원단위는 절삭한다.
money50000 = 50000; money10000 = 10000; money5000 = 5000; money1000 = 1000;
money500 = 500; money100 = 100; money10 = 10;

money50000cnt = 0; money10000cnt = 0; money5000cnt = 0; money1000cnt = 0;
money500cnt = 0; money100cnt = 0; money10cnt = 0;

price = int(input('상품 가격 입력 : '))
payment = int(input('지불 금액 : '))

if payment > price:
    change = payment - price
    change = (change // 10) * 10
    print('거스름 돈 : {}(원단위 절삭)'.format(change))
if change > money50000:
    money50000cnt = change // money50000
    change %= money50000

if change > money10000:
    money10000cnt = change // money10000
    change %= money10000

if change > money5000:
    money5000cnt = change // money5000
    change %= money5000

if change > money1000:
    money1000cnt = change // money1000
    change %= money1000

if change > money500:
    money500cnt = change // money500
    change %= money500

if change > money100:
    money100cnt = change // money100
    change %= money100

if change > money10:
    money10cnt = change // money10
    change %= money10
print('-' * 30)
print('50,000 {}장'.format(money50000cnt))
print('10,000 {}장'.format(money10000cnt))
print('5,000 {}장'.format(money5000cnt))
print('1,000 {}장'.format(money1000cnt))
print('500 {}장'.format(money500cnt))
print('100 {}장'.format(money100cnt))
print('10 {}장'.format(money10cnt))
print('-' * 30)

  • 국어, 영어, 수학 점수 입력 후 총점, 평균, 최고점수 과목, 최저점수, 과목, 그리고 최고 점수와 최저 점수의 차이를 각각 출력해 보자.
korScore = int(input('국어 점수 입력 : '))
kor = '국어'
engScore = int(input('영어 점수 입력 : '))
eng = '영어'
matScore = int(input('수학 점수 입력 : '))
mat = '수학'
totarScore = korScore + engScore + matScore
avgScore = totarScore / 3
print('총점 : {}'.format(totarScore))
print('평균 : %.2f' % avgScore )

print('-' * 30)
if korScore == max(korScore,engScore,matScore):
    print('최고 점수 과목(점수) : {}({})'.format(kor, korScore))
elif engScore == max(korScore,engScore,matScore):
    print('최고 점수 과목(점수) : {}({})'.format(eng, engScore))
elif matScore == max(korScore,engScore,matScore):
    print('최고 점수 과목(점수) : {}({})'.format(mat, matScore))

if korScore == min(korScore,engScore,matScore):
    print('최저 점수 과목(점수) : {}({})'.format(kor, korScore))
elif engScore == min(korScore,engScore,matScore):
    print('최저 점수 과목(점수) : {}({})'.format(eng, engScore))
elif matScore == min(korScore,engScore,matScore):
    print('최저 점수 과목(점수) : {}({})'.format(mat, matScore))

dif = max(korScore,engScore,matScore) - min(korScore,engScore,matScore)
print('최고, 최저 점수 차이 : {}'.format(dif))
print('-' * 30)

  • 금액, 이울, 거치기간을 입력하면 복리계산하는 복리계산기 프로그램을 만들어보자.
money = int(input('금액 입력 : '))
rate = float(input('이율 입력 : '))
period = int(input('기간 입력 : '))
targetmoney = money
for i in range(period):
    targetmoney += (targetmoney * rate * 0.01)
targetmoneyformet = format(int(targetmoney), ',')
print('-' * 30)
print('이율 : {}%'.format(rate))
print('원금 : {}원'.format(format(money, ',')))
print('{}년 후 금액 : {}원'.format(period, targetmoneyformet))
print('-' * 30)

  • 고도가 60m 올라갈 때마다 기온이 0.8도 내려간다고 할 때 고도를 입력하면 기온이 출력되는 프로그램을 만들어보자.(지면온도 : 29도)
baseTemp = 29
step = 60
stepTemp = 0.8

height = int(input('고도입력 : '))

targetTemp = baseTemp - (height // step * 0.8)

if height % step != 0:
    targetTemp -= stepTemp

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

  • 다음 내용을 참고해서 백신 접종 대상자를 구분하기 위한 프로그램을 만들어보자.
    • 의사코드 : 19세이하 또는 65세 이상 이면 출생 연도 끝자리에 따른 접종 그렇지 않으면 하반기 일정 확인
myage = int(input('나의 입력 : '))
# 1,6 월 2,7 화 3,8 수 4,9 목 5,0 금
if myage <= 19 or myage >= 65:
    year = int(input('출생 연도 끝자리 : '))
    if year == 1 or year == 6:
        print('월요일 접종 가능!!')
    elif year == 2 or year == 7:
        print('화요일 접종 가능!!')
    elif year == 3 or year == 8:
        print('수요일 접종 가능!!')
    elif year == 4 or year == 9:
        print('목요일 접종 가능!!')
    elif year == 5 or year == 0:
        print('금요일 접종 가능!!')
else:
    print('하반기 일정 확인하세요.')


조건문

  • 조건문을 이용해서 프로그램의 실행을 분기한다.
    • 교통과속 위반 프로그램을 만들어보자.
      • 시속 50km이하 -> 안전속도 준수!!
      • 시속 50km초과 -> 안전속도 위반!! 과태료 50,000원 부과 대상!!!
speed = int(input('속도 입력 : '))
if speed <= 50:
    print('안전속도 준수!!')
else:
    print('안전속도 위반!! 과태료 50,000원 부과 대상!!!')

  • 국어, 영어, 수학, 과학, 국사 점수를 입력하면 총점을 비롯한 각종 데이터가 출력되는 프로그램을 만들어보자.
# 과목별 점수를 입력하면, 총점, 평균, 편차를 출력한다.
# 평균은 다음과 같다. (국어 : 85, 영어 : 82, 수학 : 89, 과학 : 75, 국사 : 94)
# 각종 편차 데이터는 막대 그래프로 시각화 한다.

korAvg = 85; engAvg = 82; matAvg = 89; sciAvg = 75; natAvg = 94
avgTotarScore = korAvg + engAvg + matAvg + sciAvg + natAvg
atAvg = int(avgTotarScore / 5)

korScore = int(input('국어 점수 입력 : ')); engScore = int(input('영어 점수 입력 : '))
matScore = int(input('수학 점수 입력 : ')); sciScore = int(input('과학 점수 입력 : '))
natScore = int(input('국사 점수 입력 : '))
totarScore = korScore + engScore + matScore + sciScore + natScore
avgScore = int(totarScore / 5)

korDevScore = korScore - korAvg; engDevScore = engScore - engAvg; matDevScore = matScore - matAvg;
sciDevScore = sciScore - sciAvg; natDevScore = natScore - natAvg
totarDev = totarScore - avgTotarScore
avgDev = avgScore - atAvg

print('-' * 30)
print('총점 : {}({}), 평균 : {}({})'.format(totarScore, totarDev, avgScore, avgDev))
print('국어 : {}({}), 영어 : {}({}), 수학 : {}({}), 과학 : {}({}), 국사 : {}({})'.format(korScore, korDevScore, engScore,
        engDevScore, matScore, matDevScore, sciScore, sciDevScore, natScore, natDevScore))
print('-' * 30)
print('국어 편차 : {}({})'.format(('+' * abs(korDevScore)), korDevScore)) if korDevScore >= 0 else \
    print('국어 편차 : {}({})'.format(('-' * abs(korDevScore)), korDevScore))
print('영어 편차 : {}({})'.format(('+' * abs(engDevScore)), engDevScore)) if engDevScore >= 0 else \
    print('영어 편차 : {}({})'.format(('-' * abs(engDevScore)), engDevScore))
print('수학 편차 : {}({})'.format(('+' * abs(matDevScore)), matDevScore)) if matDevScore >= 0 else \
    print('수학 편차 : {}({})'.format(('-' * abs(matDevScore)), matDevScore))
print('과학 편차 : {}({})'.format(('+' * abs(sciDevScore)), sciDevScore)) if sciDevScore >= 0 else \
    print('과학 편차 : {}({})'.format(('-' * abs(sciDevScore)), sciDevScore))
print('국사 편차 : {}({})'.format(('+' * abs(natDevScore)), natDevScore)) if natDevScore >= 0 else \
    print('국사 편차 : {}({})'.format(('-' * abs(natDevScore)), natDevScore))
str = '+' if totarDev > 0 else '-'
print('총점 편차 : {}({})'.format(str * abs(totarDev), totarDev))
str = '+' if avgDev > 0 else '-'
print('평균 편차 : {}({})'.format(str * abs(avgDev), avgDev))

  • 난수를 이용해서 가위, 바위, 보 게임을 만들어보자.
import random

comNum = random.randint(1,2)
userSelect = int(input('홀 / 짝 선택 : 1. 홀 \t 2. 짝 '))

if comNum == 1 and userSelect == 1:
    print('빙고!! 홀수!!')
elif comNum == 2 and userSelect == 2:
    print('빙고!! 짝수!!')
elif comNum == 1 and userSelect == 2:
    print('실패!! 홀수!!')
elif comNum == 2 and userSelect == 1:
    print('실패!! 짝수!!')

  • 요금표를 참고해서 상수도 요금 계산기를 만들어보자.
part = int(input('업종 선택(1. 가정용 \t 2. 대중탕용 \t 3. 공업용) : '))
userWater = int(input('사용량 입력 : '))
unitPrice = 0

if part == 1:
    unitPrice = 540
elif part == 2:
    if userWater <= 50:
        unitPrice = 820
    elif userWater > 50 and userWater <= 300:
        unitPrice = 1920
    elif userWater > 300:
        unitPrice = 2400
elif part == 3:
    if userWater <= 500:
        unitPrice = 240
    else:
        unitPrice = 470
userPrice = format((userWater * unitPrice), ',')
print('=' * 30)
print('상수도 요금표')
print('-' * 30)
print('사용량 \t : \t 요금')
print('{} \t : \t {}원'.format(userWater, userPrice))
print('=' * 30)

  • 미세먼지 비상저감조치로 차량 운행제한 프로그램을 다음 내용에 맞게 만들어보자.
# 미세먼지 측정 수치가 150이하면 차량 5부제 실시
# 미세먼지 측정 수치가 150을 초과하면 차량 2부제 실시
# 차량 2부제를 실시하더라도 영업용 차량은 5부제 실시
# 미세먼지 수치, 차량 종류, 차량 번호를 입력하면 운행 가능 여부 출력
import datetime

limitNum = 150
dustNum = int(input('미세먼지 수치 입력 : '))
carKind = int(input('차량 종류 선택. 1. 승용차 \t 2. 영업용차 : '))
carNum = int(input('차량 번호 입력 : '))
today = datetime.datetime.today()
day = today.day
print('-' * 30)
print(today)
print('-' * 30)
if dustNum > limitNum and carKind == 1:
    if (day % 2) == (carKind % 2):
        print('차량 2부제 적용')
        print('차량 2부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')

if dustNum > limitNum and carKind == 2:
    if (day % 5) == (carKind % 5):
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')

if dustNum <= limitNum:
    if (day % 5) == (carKind % 5):
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')
print('-' * 30)

  • PC에서 난수를 발생하면 사용자가 맟추는 게임을 만들어보자.
# PC가 난수(1 ~ 1000)를 발생하면 사용자가 숫자(정수)를 입력한다.
# 사용자가 난수를 맟추면 게임이 종료된다.
# 만약, 못 마추게 되면 난수와 사용자 숫자의 크고 작음을 출력한 후 사용자한테 다시 기회를 준다.
# 최종적으로 사용자가 시도한 횟수를 출력한다.
import random

ranNum = random.randint(1, 1000)
cnt = 0
while(True):
    userNum = int(input('1 ~ 1000까지의 정수 입력 : '))
    cnt += 1
    if ranNum == userNum:
        print('빙고!')
        print('난수 : {}, 시도 횟수 : {}'.format(ranNum, cnt))
        break
    else:
        if ranNum > userNum:
            print('난수가 크다!')
        else:
            print('난수가 작다!')


반복문

  • 1부터 100까지 정수 중 십의 자리와 일의 자리에 대해 각각 홀/짝수를 구분하는 프로그램을 만들어보자.
for i in range(1, 101):
    if i  <= 9:
        if i % 2 == 0:
            print('[{}]: 짝수!'.format(i))
        else:
            print('[{}]: 홀수!'.format(i))
    else:
        num10 = i // 10
        num1 = i % 10
        result10 = ''
        if num10 % 2 == 0:
            result10 = '짝수'
        else:
            result10 = '홀수'
        result1 = '0'
        if num1 != 0:
            if num1 % 2 == 0:
                result1 = '짝수'
            else:
                result1 = '홀수'
        print('[{}] 십의자리 : {}, 일의자리 : {}'.format(i, result10, result1))

  • 1부터 사용자가 입력한 정수까지의 합, 홀수의 합 짝수의 합 그리고 팩토리얼을 출력하는 프로그램을 만들어보자.
userNumber = int(input('정수 입력 : '))
userSum = 0
oddSum = 0
evenSum = 0
fac = 1
for i in range(1, userNumber+1):
    userSum += i
    fac *= i
    if i % 2 == 0:
        evenSum += i
    else:
        oddSum += i
fuserSum = format(userSum, ',')
foddSum = format(oddSum, ',')
fevenSum = format(evenSum, ',')
forFac = format(fac, ',')
print('합 결과 : {}'.format(fuserSum))
print('홀수 합 결과 : {}'.format(foddSum))
print('짝수 합 결과 : {}'.format(fevenSum))
print('팩토리얼 결과 : {}'.format(forFac))

  • '*'를 이용해서 다음과 같이 다양한 모양을 출력해보자.
for i in range(1, 6):
     print('*' * i)

for i in range(1, 6):
     for a in range(5 - i):
         print(' ', end='')
     for b in range(i):
         print('*', end='')
     print('')

for i in range(5, 0, -1):
     print('*' * i)

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

for i in range(1, 10):
    if i < 5:
        for j in range(i):
            print('*', end='')
    else:
        for j in range(10 - i):
            print('*', end='')
    print('')

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

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

for i in range(1, 6):
     for a in range(5 - i):
         print(' ', end='')
     for b in range(i * 2 - 1):
         print('*', end='')
     print('')
for i in range(5, 0, -1):
     for a in range(5 - i):
         print(' ', end='')
     for b in range(i * 2 - 1):
         print('*', end='')
     print('')

  • 집 앞 버스 정류장에서 학교까지 가는 버스 A, B, C의 운행정보가 다음과 같을때, 2대 이상의 버스가 정차하는 시간대를 출력해보자.
# 버스 A, B 운행정보
#  오전 6시 첫차 : 오후 23시 운행 종료
#  버스 A : 15분 간격 운행
#  버스 B : 13분 간격 운행
# 버스 C 운행정보
#  6시 20분 첫차 : 오후 22시 운행종료
#  버스 C : 8분 간격 운행
busA = 15
busB = 13
busC = 8

totarMin = 60 * 17 # 운행시간
for i in range(totarMin + 1):
    if i < 20 or i > (totarMin - 60): 
        if i % busA == 0 and i % busB == 0:
            print('busA와 busB 동시 정지!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
    else:
        if i % busA == 0 and i % busB ==0:
            print('busA와 busB 동시 정지!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        elif i % busA == 0 and i % busC ==0:
            print('busA와 busC 동시 정지!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        elif i % busB == 0 and i % busC ==0:
            print('busB와 busC 동시 정지!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))

  • 톱니가 각가 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자. (단, n2는 n1보다 크다; n2가 톱니 수가 더 많다)
gearATCnt = int(input('GearA 톱니수 입력: '))
gearBTCnt = int(input('GearB 톱니수 입력: '))

gearA = 0
gearB = 0
leastNum = 0

while(True):
    if gearA != 0:
        if gearA != leastNum:
            gearA += gearATCnt
        else:
            break
    else:
        gearA += gearATCnt

    if gearB != 0 and gearB % gearATCnt == 0:
        leastNum = gearB
    else:
        gearB += gearBTCnt

print('최초 만나는 톱니수(최소공배수): {}톱니'.format(leastNum))
print('gearA 회전수: {}회전'.format(int(leastNum / gearATCnt)))
print('gearB 회전수: {}회전'.format(int(leastNum / gearBTCnt)))

  • 윤년 계산기를 만들어보자.
# 윤년 조건
#  연도가 4로 나누어 떨어지고 100으로 나누어 떨어지지않으면 윤년이다.
#  또는 연도가 400으로 나누어 떨어지면 윤년이다.
year = int(input('연도 입력 : '))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print('{}년 : 윤년!!'.format(year))
else:
    print('{}년 : 평년'.format(year))

profile
코딩공부중

0개의 댓글