[Python][기초] 연습 문제_조건문_반복문

·2023년 3월 4일
0

[Python] 연습 문제

목록 보기
2/12
post-thumbnail

📌 파이썬 연습문제 [조건문]

📋 교통 과속 프로그램
speed = int(input('속도 입력 : '))
if speed <= 50:
    print('안전 속도 준수!')
else:
    print('안전 속도 위반!')
📋 문자메시지 길이에 따라 문자 요금이 결정되는 프로그램
message = input('메시지 입력 : ')
print('--전송 중--')
messageLength = len(message)

print(f'메시지 길이 :{len(message)}')
if messageLength <= 50:
    print('메시지 발송 요금 : 50')
else:
    print('메시지 방송 요금 : 100원')
    
📋 국어, 영어, 수학, 국사 점수 입력하면 데이터가 출력되는 프로그램
korAvg = 85
engAvg = 82
mathAvg = 89
scienceAvg = 75
historyAvg = 94

kor = int(input('국어 : '))
eng = int(input('영어 : '))
math = int(input('수학 : '))
science = int(input('과학 : '))
history = int(input('국사 : '))

total = kor + math + eng + science + history
totalAvg = total / 5
avgTotal = korAvg + engAvg + mathAvg + scienceAvg + historyAvg

korGap = kor - korAvg
engGap = eng - engAvg
mathGap = math - mathAvg
scienceGap = science - scienceAvg
hisGap = history - historyAvg

print('-' * 30)
print(f'총점 : {total}({avgTotal - total})')
print(
    f'국어 : {kor}({korGap}), 영어 : {eng}({engGap}), 수학 : {math}({mathGap}), 과학 : {science}({scienceGap}), 국사 : {history}({hisGap})')
print('-' * 30)

gap = ''
if korGap > 0:
    gap = '+' * korGap
else:
    gap = '-' * abs(korGap)  # 절대값 만들기

print(f'국어 편차 : {gap}')

if engGap > 0:
    gap = '+' * engGap
else:
    gap = '-' * abs(engGap)  # 절대값 만들기

print(f'영어 편차 : {gap}')

if mathGap > 0:
    gap = '+' * mathGap
else:
    gap = '-' * abs(mathGap)  # 절대값 만들기

print(f'수학 편차 : {gap}')

if scienceGap > 0:
    gap = '+' * scienceGap
else:
    gap = '-' * abs(scienceGap)  # 절대값 만들기

print(f'과학 편차 : {gap}')

if hisGap > 0:
    gap = '+' * hisGap
else:
    gap = '-' * abs(hisGap)  # 절대값 만들기

print(f'국사 편차 : {gap}')
print('-' * 30)
📋 난수를 이용한 홀/짝 프로그램
import random

flag = True

while flag:
    comNum = random.randint(1, 2)
    # print(comNum)
    if comNum == 1:
        comNumStr = '홀'
    else:
        comNumStr = '짝'

    select = int(input('홀/짝 선택 1. (홀) 2. (짝) : '))
    if comNum == select:
        print(f'빙고 : {comNumStr}')
        flag = False
    else:
        print(f'실패 : {comNumStr}')
📋 난수를 이용한 가위 바위 보
flag = True
comNum = random.randint(1, 3)

while flag:
    userResult = ''
    comResult = ''

    print(comNum)
    select = int(input('[가위 | 바위 | 보] 선택 -> 1. 가위 2. 바위  3. 보 : '))
    # 1 > 3 , 2 > 1, 3 > 2

    if comNum == select:
        userResult = '무승부'
        comResult = '무승부'
    elif comNum == 1:
        if select == 2:
            userResult = '승'
            comResult = '패'
            flag = False
        else:
            userResult = '패'
            comResult = '승'
    elif comNum == 2:
        if select == 3:
            userResult = '승'
            comResult = '패'
            flag = False
        else:
            userResult = '패'
            comResult = '승'
    elif comNum == 3:
        if select == 1:
            userResult = '승'
            comResult = '패'
            flag = False
        else:
            userResult = '패'
            comResult = '승'
    else:
        print('다시 입력해 주세요.')

    print(f'컴퓨터 : {comNum}, 유저 : {select}')
    print(f'컴퓨터 : {comResult}, 유저 : {userResult}')
📋 상수도 요금 계산기
part = int(input('업종 선택 (1. 가정용, 2. 대중탕용, 3. 공업용 ) : '))
useWater = int(input('사용량 입력 : '))
price = 0
if part == 1:
    price = 540 * useWater
elif part == 2:
    if useWater <= 50:
        price = 820 * useWater
    if useWater <= 300:
        price = 1920 * useWater
    else:
        price = 2400 * useWater
elif part == 3:
    if useWater <= 500:
        price = 240 * useWater
    else:
        price = 470 * useWater
else:
    print('다시 입력해주세요')

print('=' * 30)
print('상수도 요금표')
print('-' * 30)
print('사용량 \t:\t 요금')
print(f'{useWater} \t:\t {format(price,",")}원')
print('=' * 30)
📋 미세먼지 차량 운행 제한 프로그램
import datetime

dust = int(input('미세먼지 수치 입력 : '))
carType = int(input('차량 종류 선택 - [1. 승용차  2, 영업용 차] : '))
carNum = int(input('차량 번호 입력 : '))
carLimit = ''
day = datetime.datetime.today().day

if dust <= 150 and carNum % 5 == day % 5:
    carLimit = '차량 5부제'
elif dust > 150 and carNum % 2 == day % 2:
    if carType == 1:
        carLimit = '차량 2부제'
    elif carType == 2:
        carLimit = '차량 5부제'
    else:
        carLimit = '다시 입력해주세요'
        exit(0)
else:
    carLimit = '운행 가능합니다'

print('-' * 20)
print(datetime.datetime.now())
print('-' * 20)
print(f'{carLimit} ')
print('-' * 20)
📋난수 맞추기 게임
import random

randNum = random.randint(1, 1000)

flag = True
cnt = 0
while flag:
    cnt += 1
    num = int(input('1에서 1000까지 정수 입력 : '))
    if num > randNum:
        print("더 작은 수 입력")
    elif num < randNum:
        print('더 큰 수 입력')
    else:
        print(f'빙고!\n난수 : {randNum}, 시도 횟수 : {cnt}')
        flag = False
📋 실내온도 입력하면 자동으로 에어컨 상태가 설정 되는 프로그램

airconState = ''
temp = int(input('실내온도 입력 : '))
if temp <= 18:
    airconState = 'off'
elif temp <= 22:
    airconState = '매우 약'
elif temp <= 24:
    airconState = '약'
elif temp <= 26:
    airconState = '중'
elif temp <= 28:
    airconState = '강'
else:
    airconState = '매우 강'

print(f'에어컨 상태 : {airconState} ')

📌 파이썬 연습문제 [반복문]

📋 1부터 100까지 정수 중 십의 자리와 일의 자리에 대해 홀/짝 구분 프로그램
import operator

for i in range(1, 101):
    num10 = operator.floordiv(i, 10)  # i // 10 과 동일, i / 10 은 실수 출력
    num1 = operator.mod(i, 10)

    if i >= 10:
        if num10 % 2 == 0:
            print(f'[{i}] 십의 자리 : 짝수 ', end='')
            if num1 % 2 == 0:
                print('일의 자리 : 짝수')
            else:
                print('일의 자리 : 홀수')
        else:
            print(f'[{i}] 십의 자리 : 홀수 ', end='')
            if num1 % 2 == 0:
                print('일의 자리 : 짝수')
            else:
                print('일의 자리 : 홀수')

    else:
        if num1 % 2 == 0:
            print(f'[{i}]  일의 자리 : 짝수')
        else:
            print(f'[{i}]  일의 자리 : 홀수')
📋 1부터 사용자가 입력한 정수까지의 합, 홀수의 합 그리고 팩토리얼을 출력하는 프로그램
sum = 0
oddSum = 0
evenSum = 0
factorial = 1
num = int(input('정수 입력 : '))
for i in range(1, num + 1):
    sum += i
    factorial = factorial * i
    if i % 2 == 0:
        evenSum += i
    else:
        oddSum += i

print(f'합 : {sum}')
print(f'홀수 합 : {oddSum}')
print(f'짝수 합 : {evenSum}')
print(f'팩토리얼 결과 :{format(factorial, ",")}')
📋 '*'를 이용해서 모양 출력
rint("#1")
for i in range(5):
    for j in range(i + 1):
        print("*", end='')
    print()
print('-' * 20)

print("#2")
for i in range(5, 0, -1):
    print(' ' * (i - 1), '*' * (6 - i))
print('-' * 20)

print("#3")
for i in range(5):
    for j in range(5 - i):
        print("*", end='')
    print()
print('-' * 20)

print("#4")
for i in range(5, 0, -1):
    print(' ' * (5 - i), '*' * i)
print('-' * 20)

print('#5')
for i in range(1, 10):
    if i > 5:
        i = 10 - i
    for j in range(i):
        print('*', end="")
    print()
print('-' * 20)

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

print('-' * 20)

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

print('#8')

for i in range(1, 10):
    if i > 5:
        i = 10 - i
    print(' ' * (5 - i), "*" * (2 * i - 1), ' ' * (5 - i))
print('-' * 20)


#짧은 정리
가장 자주 쓰는 단축키
ctrl+D : 복사+자동 붙여넣기 단축키
ctrl+shift+L : 문단 정리 단축키
#체크사항
문제 정답과 내가 작성한 코드랑 다른 경우에 복잡도가 얼마나 차이나는지 궁금하다..
#소감
아직 반복문 3문제가 남았지만 기초 문제 거의 다 풀었다! 커리큘럼 상 연습문제는 하루만에 다 풀어야하지만 그건 무리였다,, 아직은 커리큘럼 보다 진도가 빠르니깐 ^-^
앞으로 더 어려워질테니 파이팅 해야지!
profile
개발하고싶은사람

0개의 댓글