[Zerobase][Python Basic] 조건문,반복 문제풀이

솔비·2023년 11월 26일
0

💻 Python. w/zerobase

목록 보기
5/33
post-thumbnail

조건문

📖 연습문제 1

#문자길이가 50이하면 sms발송(50원부과)
#문자길이가 50초과면 mms발송(100원부과)

mesage = input('메세지 입력 : ')
lenght = len(mesage)

if lenght <= 50 :
    print('sms발송')
    print('메세지 길이 : {}'.format(lenght))
    print('메세지 발송 요금 : 50원')

else :
    print('mms발송')
    print('메세지 길이 : {}'.format(lenght))
    print('메세지 발송 요금 : 100원')

📖 연습문제 2

#국 영 수 과 국사 점수를 입력하면 총점, 평균, 편차를 출력하고 각종 편차데이터를 막대그래프로 시각화하라
#기존점수 - 국어 : 85 영어 : 82 수학 : 89 과학 : 75 국사 : 94

#국 영 수 과 국사 점수를 입력하면 총점, 평균, 편차를 출력하고 각종 편차데이터를 막대그래프로 시각화하라
#기존점수 - 국어 : 85 영어 : 82 수학 : 89 과학 : 75 국사 : 94

kor_ori = 85
eng_ori = 82
math_ori = 89
sci_ori = 75
his_ori = 94

sum_ori = kor_ori+eng_ori+math_ori+sci_ori+his_ori
avg_ori = int(sum_ori / 5)

kor = int(input('국어 점수 입력 : '))
eng = int(input('영어 점수 입력 : '))
math = int(input('수학 점수 입력 : '))
sci = int(input('과학 점수 입력 : '))
his = int(input('역사 점수 입력 : '))

score_sum = kor+eng+math+sci+his
score_avg = int(score_sum/5)

kor_sub = kor-kor_ori
eng_sub = eng-eng_ori
math_sub = math-math_ori
sci_sub = sci-sci_ori
his_sub = his-his_ori
sum_sub = sum_ori - score_sum
avg_sub = avg_ori - score_avg


print('총점 : {}({}), 평균 :{}({})'.format(score_sum,score_sum-sum_ori,score_avg,score_avg-avg_ori))
print('국어 : {}({}), 영어 : {}({}), 수학 : {}({}), 과학 : {}({}), 국사 : {}({})'
      .format(kor,kor_sub,eng,eng_sub,math,math_sub,sci,sci_sub,his,his_sub))
print('-'*60)

sub_scores = {'국어편차' : kor_sub,'영어편차':eng_sub,'수학편차':math_sub,
              '과학편차':sci_sub,'국사편차' : his_sub, '총점편차': sum_sub , '평균편차' : avg_sub}

for subject, score in sub_scores.items() :
    if score > 0 :
        dot = '+'
    else :
        dot = '-'

    graph = dot * abs(score)
    print('{} : {}({})'.format(subject,graph,score))


print('-'*60)

📖 연습문제 3

사용자로부터 문자 한 개를 입력 받고, 소문자일 경우 대문자로, 대문자 일 경우, 소문자로 변경해서 출력하라.

user = input('문자입력 : ')

if user.islower() :
	print(upper(user))
else :
	print(lower(user))

🌟 .islower()

()의 문자가 소문자면 True 대문자면 False

🌟 upper()

소문자를 대분자로

🌟 lower()

대문자를 소문자로

📖 연습문제 4

사용자로부터 달러, 엔, 유로, 또는 위안 금액을 입력받은 후 이를 원으로 변환하는 프로그램을 작성하라.
각 통화별 환율은 다음과 같다.
사용자는 100 달러, 1000 엔, 13 유로, 100 위안과 같이 금액과 통화명 사이에 공백을 넣어 입력한다고 가정한다.

통화명 환율
달러 1167
엔 1.096
유로 1268
위안 171

currency_list = {'달러' : 1167, '엔' : 1.096, '유로' : 1268, '위안' : 171}

user = input('입력 : ')
num, currency = user.split()
print('{}원'.format(float(num) * currency_list[currency]))

🌟 .split()

문자열 나누기
()로 사용 시 공백문자로 나눠지고,
특정 문자로 나누고 싶을 때는 ()안에 특정문자를 넣으면 된다.

📖 연습문제 5

주민등록번호는 13자리로 구성되는데 마지막 자리수는 주민등록번호의 유효성을 체크하는데 사용된다.
먼저 앞에서부터 12자리의 숫자에 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 차례로 곱한 뒤 그 값을 전부 더한다.
연산 결과 값을 11로 나누면 나머지가 나오는데 11에서 나머지를 뺀 값이 주민등록번호의 마지막 번호가 된다.

num = input("주민등록번호: ")
계산1 = int(num[0]) * 2 + int(num[1]) * 3 + int(num[2]) * 4 + int(num[3]) * 5 + int(num[4]) * 6 + \
        int(num[5]) * 7 + int(num[7]) * 8 + int(num[8]) * 9 + int(num[9]) * 2 + int(num[10])* 3 + \
        int(num[11])* 4 + int(num[12]) * 5
계산2 = 11 - (계산1 % 11)
계산3 = str(계산2)

if num[-1] == 계산3:
    print("유효한 주민등록번호입니다.")
else:
    print("유효하지 않은 주민등록번호입니다.")

반복문

📖 연습문제 1

난수를 발생하면 사용자가 맞추는 게임을 만들어보자

import random

rnum = random.randint(1,1000)
try_game = 0

while True :
    user = int(input('1에서 1000까지의 정수 입력 : '))
    try_game += 1

    if rnum < user :
        print('난수가 더 작습니다.')

    elif rnum > user :
        print('난수가 더 큽니다.')

    elif rnum == user :
        print('빙고')
        print('난수 : {}, 시도횟수 : {}'.format(rnum,try_game))
        break

📖 연습문제 2

1부터 100까지 정수 중 십의자리와 일의자리에 대해 각각 홀/짝을 구분하는 프로그램

for i in range(1,101) :
    if i < 10 :
        if i % 2 == 0 :
            print('[{}] : 짝수'.format(i))
        else :
            print('[{}] : 홀수'.format(i))

    else :
        ten = i // 10
        one = i % 10

        if ten % 2 == 0 :
            ten_text = '짝수'
        else :
            ten_text = '홀수'

        if one == 0 :
            one_text = '0'

        elif one % 2 == 0 :
            one_text = '짝수'

        else :
            one_text = '홀수'

        print('[{}] 십의자리 : {}, 일의자리 {}'.format(i,ten_text,one_text))

📖 연습문제 3

1부터 사용자가 입력한 정수까지의 합, 홀수의합, 짝수의 합 그리고 팩토리얼을 출력하는 프로그램

user = int(input('정수입력 : '))
sum_num = 0
sum_odd = 0
sum_even = 0
sum_fac = 1

for i in range(1,user+1) :
    sum_num += i
    sum_fac *= i

    if i % 2 != 0 :
        sum_odd += i

    else :
        sum_even += i


print('합 결과 : {}'.format(sum_num))
print('홀수 합 결과 : {}'.format(sum_odd))
print('짝수 합 결과 : {}'.format(sum_even))
print('팩토리얼 결과 : {}'.format(format(sum_fac,',')))

📖 연습문제 4

#버스 A B 오후 6시 첫차 23시 종료 버스C 6시 20분첫차 22시 종료
#A = 15분간격운행 B = 13분간격운행 C = 8분간격운행
#동시정차하는 시간구하기

# 총운행시간 6~23시 : 17시간 = 1020분

total_drive = 1020
bus_a = 15
bus_b = 13
bus_c = 8


for i in range(total_drive+1) :
    if i < 20 or i > total_drive - 60 :
        if i % bus_a == 0 and i % bus_b == 0 :
            hour = 6 + i // 60
            min = i % 60
            print('busA busB 동시정차 {}:{}'.format(hour,min))
    else :
        if i % bus_a == 0 and i % bus_b == 0:
            hour = 6 + i // 60
            min = i % 60
            print('busA busB 동시정차 {}:{}'.format(hour, min))
        if i % bus_a == 0 and i % bus_c == 0:
            hour = 6 + i // 60
            min = i % 60
            print('busA busC 동시정차 {}:{}'.format(hour, min))
        if i % bus_b == 0 and i % bus_c == 0:
            hour = 6 + i // 60
            min = i % 60
            print('busB busC 동시정차 {}:{}'.format(hour, min))
        if i % bus_a == 0 and i % bus_b == 0 and i % bus_c == 0:
            hour = 6 + i // 60
            min = i % 60
            print('busA busB busC 동시정차 {}:{}'.format(hour, min))

제로베이스 데이터취업스쿨
Daily Study Note
문제 3~5 출처 : https://wikidocs.net/7031
profile
Study Log

0개의 댓글