Python[1주차-4일]기초문제풀이3~5

이동일·2023년 7월 9일

Python

목록 보기
4/10

1. 연산자

1-1 연산자[04]

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

#내풀이 (풀다가 해결 못했다...)
# a = int(input('고도 입력: '))
# temperature = 0.8
# ground_tem = 29
#
# if a// 60 :
#     a = ground_tem-temperature
#     print('출력된 기온:{}'.format(a))



########################################
#제로베이스 풀이
baseTemp = 29 #지면온도
step = 60 #상승 60
stepTemp = 0.8 # 내려가는 기온

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

targetTemp = baseTemp - (height // step) * 0.8 # 지면온도 - (입력고도 // 상승고도)  //는 몫이다  한단계 올라가면 0.8도씩떨어짐으로 0.8*한다
#ex) 입력 고도가 180이면 60으로 나눈 몫 3이되고 0.8*3 =2.4 --> 180기온   29-2.4=26.6도가된다


if height % step != 0:# 몫이 0이 아닌경우 시행 ex)250 몫4 나머지 10
    targetTemp -= stepTemp
 #입력된 고도가 상승 단계로 나누어 떨어지지 않는 경우를 처리하기 위한 조건문
 
 #고도가 60으로 나누어 떨어지는 경우에는 이미 해당 단계에서 기온 감소량이 적용되어서
 #추가적인 감소량을 뺼 필요가 없지만 고도가 상승 단계로 나누어 떨어지지 않는 경우에는
 #마지막 단계에서의 기온 감소량이 적용되지 않았으므로, 추가적 으로 감소량을 빼주어야한다.
 #요약: 나누어떨어지지 않는 고도를 위해 if문으로 처리 해주는 것이다.
 #targetTemp = baseTemp - (height // step) * 0.8 여기서 나누어떨어지지 않을떄 실행된다.
 
 #ex1) 고도가 180이면  180나누기60 나머지 0이다 if문 실행 안한다 0.8을 따로뺴주지 않아도 된다.
 #ex2) 고도가 250이면 250나누기 60 몫4 나머지 10이다.
 #기온 감소량 0.8을 추가로 뺴준다. --> 29-3.2(몫)-0.8 =25


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


2번문제
197개의 빵과 152개의 우유를 17명의 학생한테 동일하게 나눠 준다고 할 때,
한 명의 학생이 갖게 되는 빵과 우유 개수를 구하고 남는 빵과 우유 개수를 출력하자.


#내풀이 (해설 강의랑 결과가 다르다)
bread = 197
milk = 152
student = 17

bread_student = bread // 17
milk_student = milk // 17



remaining_bread = bread - (bread_student*17)
remaining_milk = milk - (bread_student*17)


print('1인당 빵 갯수: %.2f , 1인당 우유 갯수 : %2.f '%(bread_student,milk_student))
print('1인당 빵 갯수: %.2f , 1인당 우유 갯수 : %2.f '%(bread_student,milk_student))

print('남는 빵의 갯수 %.2f'%remaining_bread)
print('남는 우유 갯수 %.2f'%remaining_milk)












##############################

#제로베이스 풀이
bread = 197
milk = 152
student = 17

print('학생 한명이 갖게 되는 빵 개수: {}'.format(bread // student))
print('학생 한명이 갖게 되는 우유 개수: {}'.format(milk // student))

print('남는 빵 개수: {}'.format(bread % student))
print('남는 우유 개수: {}'.format(milk % student))



문제후기

1번 문제의 문제점은 지문 이해를 하지 못했다.
경험 부족인거 같다.

2번문제의경우
remaining_bread = bread - (bread_student17)
remaining_milk = milk - (bread_student
17)
이부분이 정말쉽다. 저렇게 풀면 남은 개수의
빵과 우유가 나올줄 알았는데 엉뚱한 결과만 출력이 되었다.

1-2 연산자[05]

1번문제
1.다음 내용을 참고해서 백신 접종 대상자를 구분하기 위한 프로그램을 만들어 보자.

19세 이하 또는 65세 이상 이면
출생 연도 끝자리에 따른 접종

그렇지 않으면
하반기 일정 확인

inputAge = int(input('나이 입력:'))

if inputAge <= 19 or inputAge >= 65:
    endNum = int(input('출생 연도 끝자리 입력: '))
    if endNum == 1 or endNum == 6:
        print('월요일 접종 가능')
    elif endNum == 2 or endNum == 7:
        print('화요일 접종 가능')
    elif endNum == 3 or endNum == 8:
        print('수요일 접종 가능')
    elif endNum == 4 or endNum == 9:
        print('목요일 접종 가능')
    elif endNum == 5 or endNum == 0:
        print('금요일 접종 가능')
else:
    print("하반기 일정 확인")

2번 문제
길이(mm)를 입력하면 inch로 환산하는 프로그램 만들어보자 (1mm= 0.39inch)

#내풀이
length_mm = int(input('길이(mm) 입력'))
inch = 0.39
total = length_mm *0.039
print('{}mm -> {}inch'.format(length_mm,total))

문제후기:

1번 문제의 경우 요일 별로 접종 변수를 어떻게 정해 주어야 할지몰라서
작성에 실패 했다.
2번 문제는 정답을 맞추었다! 정말 쉬운 문제였다. ㅎㅎㅎ...


2 조건문

2-1 조건문[01]

1번 교통 과속 위반 프로그램을 반들어 보자

  • 시속 50km이하 -> 안전속도 준수!!
  • 시속 50km초과 -> 안전속도 위반!! 과태료 50,000원 부과 대상
#내풀이
speed = int(input('속도입력 :'))
if speed < 50 :
    print('안전속도 준수')

elif speed  >50 :
    print('안전속도 위반!! 과태료 50000원 부과 대상')




#강의
carSpeed = int(input('속도 입력: '))
limitSpeed = 50

if carSpeed > 50:
    print('안전속도 위반!! 과태료 50,000원 부과 대상!!!')
else:
    print('안전속도 준수!')

2번 문제 문자 메시지 길이에 따라 문자 요금이 결정되는 프로그램 만들어보자

  • 문자 길이 50이하 -> SMS발송 (50원 부과)
  • 문자 길이 50초과 -> MMS발송 (100원 부과)
    메시지 입력: 안녕하세요.
    SMS 발생!!
    메시지 길이 :6
    메시지 발송 요금: 50

#내풀이
message = input('메시지 입력:')

if len(message) <50 :
    print('메시지 입력: {}'.format(message))
    print('SMS 발생!!')
    print('메시지 길이: {}'.format(len(message)))
    print('메시지 발송 요금 : 50원 부과')

elif len(message) >=50 :
    print('메시지 입력: {}'.format(message))
    print('SMS 발생!!')
    print('메시지 길이: {}'.format(len(message)))
    print('메시지 발송 요금 : 100원 부과')


###################################
#강의

message = input('메시지 입력:')
lenMessage = len(message)
msgPrice = 50

if lenMessage <=50:
    msgPrice = 50
    print('SMS 발송!')

if lenMessage > 50:
    msgPrice = 100
    print('MMS 발송!!')

print('메시지 길이 :{}'.format(lenMessage))
print('메시지 발송 요금 :{}'.format(msgPrice))

문제후기

시간이 조금 걸렸지만 크게 어렵지 않았다.

2-2 조건문[02]

1번문제
국어,영어, 수학 ,과학 국사 점수를 입력하며 총점을 비롯한 각종 데이터가 출력되는
프로그램을 만들어보자.

-과목별 점수를 입력하면 총점, 평균, 편차를 출력한다.
평균은 다음과 같다.
(국어:85, 영어:82, 수학:89, 과학:75, 국사:94)

-각종 편차 데이터는 막대그래프로 시각화한다.

#풀다가 막힌 내코드(코드 작성 실패)
# kor, eng, math, sic, kor2 = map(int, input('국어, 영어 ,수학 ,과학 , 국사 점수입력: ').split())
#
# total = kor + eng + math + sic +kor2
# avr = (kor + eng + math + sic +kor2)/5
# deviations = avr - total
# print(deviations)
# # print('-' * 30)
# # print('총점 : {},  평균:{}'.format(total,avr))












#강의 풀이
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('-'*60)
print('총점: {}({}), 평균: {}({})'.format(totalScore, totalGap, avgScore, avgGap))
print('국어: {} ({}), 영어: {}({}), 수학: {}({}), 과학: {}({}), 국사: {}({})'.format(
    korScore, korGap, engScore, engGap, matScore,matGap,sciScore,sciGap,hisScore,hisGap
))
print('-' *60)

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

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

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

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

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

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

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

문제후기

배우진 않았지만 과목들을 한꺼번에 입력할려고
map()함수를 작성했다. 표준편차라는 개념에대해
이해가 부족해서 코드 작성에 어려움이 있었다.

2-3 조건문[03]

1번문제
난수를 이용해서 홀/짝 게임을 만들어보자

홀/짝 선택: 1.홀 2.짝 1
실패!! 짝수!!!

홀/짝 선택: 1.홀 2.짝 1
빙고!! 홀수!!

#내풀이


import random

comNum = random.randint(1,2) #1부터 2사이의 난수 생성
userSelect= int(input('홀/짝 선택: 1. 홀\t 2. 짝'))


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


if userSelect == 2:
    if comNum ==1:
      print('빙고 짝수')

    elif comNum ==2:
        print('실패!! 홀수!!')






############################# 
print('--------------------------------------------')

#제로베이스 풀이
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('실패! 짝수!')

2번문제

난수를 이용해서 가위, 바위, 보 게임을 만들어보자
가위,바위,보 선택: 1. 가위 2.바위 3.보 3
컴퓨터: 승, 유저 :패
컴퓨터: 1 , 유저: 3

가위,바위,보 선택: 1. 가위 2.바위 3.보 2
컴퓨터: 패, 유저: 승
컴퓨터: 1, 유저: 2

import random

cpu = random.randint(1,3)
user_select=  int(input('1.가위, 2.바위, 3.보 선택 : '))


#유저가 가위
if user_select ==1 :
    if cpu == 1:
        print('컴퓨터: 패, 유저: 패')
        print('cpu:{}, 유저:{}'.format(cpu,user_select))
    elif cpu == 2:
        print('컴퓨터: 승, 유저 :패')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))


    elif cpu == 3:
        print('컴퓨터:패, 유저 :승')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))



    #유저가 바위
if user_select ==2 :
    if cpu == 1:
        print('컴퓨터:패, 유저:승')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))

    elif  cpu ==2:

        print('컴퓨터:패, 유저 : 패')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))


    elif cpu == 3:
        print('컴퓨터:승, 유저 : 패')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))



# 유저가 '보'
if user_select == 3:
    if cpu == 1:
        print('컴퓨터:승, 유저:패')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))


    elif cpu == 2:
        print('컴퓨터:패, 유저 : 승')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))


    elif cpu == 3:
        print('컴퓨터:패, 유저 : 패')
        print('cpu:{}, 유저:{}'.format(cpu, user_select))






#강의 풀이


import random

comNumber =random.randint(1, 3)
userNumber = int(input('가위, 바위, 보 선택: 1.가위\t 2.바위\t 3.보'))

if(comNumber ==1 and userNumber ==2) or \
        (comNumber == 2 and userNumber == 3) or \
        (comNumber == 3 and userNumber ==1):
    print('컴퓨터: 패, 유저: 승')
elif comNumber == userNumber :
    print('무승부')
else:
    print('컴퓨터: 승, 유저: 패')

print('컴퓨터: {}, 유저 {}'.format(comNumber, userNumber))

문제후기

정말 오래동안 풀었다. 2문제다 정답을
맞추었다. 자신감이 생기게 해준 문제들이었다!
코드를 좀더 간결하게 만들고 싶다.

2-4조건문[04]

select = int(input('1.가정용, 2.대중탕용   3.공업용 : '))
use = int(input('사용량 입력:'))
home = 540


if select == 1:
    print('=' * 25)
    print('상수도 요금표')
    print('-' * 20)
    total = use * home
    formatted_total = "{:,}".format(total)  # 콤마를 추가하여 숫자를 형식화
    print('사용량   :    요금')
    print('{}      :    {}'.format(use, formatted_total))
    print('=' * 25)

elif select == 2 and use < 50:
    print('=' * 25)
    print('상수도 요금표')
    print('-' * 20)
    total2 = use * 820
    formatted_total2 = "{:,}".format(total2)
    print('사용량   :    요금')
    print('{}      :    {}'.format(use, formatted_total2))
    print('=' * 25)

elif select == 2 and use >50 and use <=300:
    print('=' * 25)
    print('상수도 요금표')
    print('-' * 20)
    total3 = use * 1920
    formatted_total3 = "{:,}".format(total3)
    print('사용량   :    요금')
    print('{}      :    {}'.format( formatted_total3))
    print('=' * 25)


elif select == 2 and use > 300:
    print('=' * 25)
    print('상수도 요금표')
    print('-' * 20)
    total4 = use * 2400
    formatted_total4 = "{:,}".format(total4)
    print('사용량   :    요금')
    print('{}      :    {}'.format(use, formatted_total4))
    print('=' * 25)




elif select == 3 and use < 500:
    print('=' * 25)
    print('상수도 요금표')
    print('-' * 20)
    total5 = use * 240
    formatted_total5 = "{:,}".format(total5)
    print('사용량   :    요금')
    print('{}      :    {}'.format(use, formatted_total5))
    print('=' * 25)


elif select == 3 and use > 500:
    print('=' * 25)
    print('상수도 요금표')
    print('-' * 20)
    total6 = use * 470
    formatted_total6 = "{:,}".format(total6)
    print('사용량   :    요금')
    print('{}      :    {}'.format(use, formatted_total6))
    print('=' * 25)











#강의 풀이

#강의 풀이
part = int(input('업종 선택(1.가정용   2.대중탕용  3.공업용) : '))
useWater = int(input('사용량 입력:'))
unitPrice = 0

if part ==1:
    unitPrice = 540
    pass

elif part ==2:
    if useWater <=50:
        unitPrice = 820
    elif useWater > 50 and useWater <= 300:
        unitPrice = 1920
    elif useWater > 300:
        unitPrice = 2400

    pass

elif part ==3:
    if useWater <= 500:
        unitPrice =240
        pass
    else:
        unitPrice =470


print('='*30)
print('상수도 요금표')
print('-'*30)
print('사용량 : 요금')
uerPrice = useWater * unitPrice
print('{} : {}원'.format(useWater, uerPrice))

문제후기

정답을 맞추긴 했지만 코드가 정말 지저분하다.

2-5 조건문[05]

1번문제
미세먼지 비상저감조치로 차량 운행제한 프로그램을 다음 내용에 맞게 만들어 보자

-미세먼지 측정 수치가 150이하면 차량 5부제 실시
-미세먼지 측정 수치가 150을 초과하면 차량 2부제 실시
-차량 2부제를 실시하더라도 영업용차량은 5부제 실시
-미세먼지 수치, 차량종류, 차량번호 입력하면 운행 가능 여부 출력한다

import datetime


today = datetime.datetime.today()
day = today.day

limitDust = 150
dustNum = int(input('미세먼지 수치 입력:'))
carType = int(input('차량 종류 선택: 1. 승용차   2. 영업용차'))
carNumber = int(input('차량번호 입력: '))

print('-'*30)
print(today)
print('-'*30)
if dustNum > limitDust and carType == 1:
    if (day % 2) == (carNumber % 2):  #2부제는 짝수 홀수를 본다.
        print('차량 2부제 적용')
        print('차량 2부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')



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


#150이하인경우
if dustNum <= limitDust :
    if (day % 5) == (carNumber % 5):  #
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')
print('-'*30)

문제후기

차량 2부제, 5부제라고 적혀있길래 지문 이해를 하질 못했다.
네이버에 2부제, 5부제 요일을 찾아 보기도 했다.
문제 지문 이해가 부족했던 문제였다.

2-6 조건문[06]

1번문제
PC에서 난수를 발생하면 사용자가 맞추는 게임을 만들어보자

-PC가 난수(1~1000)를 발생하면 사용자가 숫자(정수)를 입력한다.
-사용자가 난수를 맞추면 게임이 종료된다.
-만약,못 맞추게 되면 난수와 사용자 숫자의 크고 작음을 출력한 후
-최종적으로 사용자가 시도한 횟수를 출력한다.

#내풀이(문제 풀이 실패!)
import random


num_R = random.randint(1,1000)
user = int(input('1에서 1000까지의 정수 입력:'))

if user > num_R :
    print('난수가 작다')

elif user < num_R:
    print('난수가 크다.')

elif user == num_R :
    print('빙고!')
    break


################
#강의풀이

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

while gameFlag:
    tryCount +=1 #게임을 반복해야하기 때문에 구현
    pNum = int(input('1에서 1000까지의 정수 입력:'))

    if rNum == pNum:
        print('빙고!')
        gameFlag = False
    else:

        if rNum > pNum:
            print('난수가 크다')

        else:
            print('난수가 작다')

print('난수: {}, 시도 횟수: {}'.format(rNum, tryCount))

2번문제
실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어보기

on = int(input('실내온도 입력:'))

if on < 18:
    print('에어컨: OFF!!')

elif on >=18 and on <=22 :
    print('에어컨: 매우 약!!')

elif on >22 and on <=24 :
    print('에어컨: 약!!')

elif on >24 and on <=26 :
    print('에어컨: 중!!')

elif on >26 and on <=28 :
    print('에어컨: 매우 강!!')

elif on >28 :
    print('매우 강!!')



문제후기

1번 문제의 경우
이전 조건문 문제에선 while문이 사용이 없어서
while문을 활용할 생각을 못했다...
while문이 정말 약하다. 어렵다

2번 문제는.... 너무 쉬웠다!


반복문

3-1 반복문[01]

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

#내가 시도한부분
# for i in range(1, 101):
#     if i % 2 == 0:
#         print('[{}]: 짝수!'.format(i))
#     elif i % 2 == 1:
#         print('[{}]: 홀수!'.format(i))





#강의 해설
for i in range(1, 101):
    # 1~9까지 구현
    if i <= 9:
        if i % 2 == 0:
            print('[{}]: 짝수!'.format(i))
        else:
            print('[{}]: 홀수!'.format(i))

    else:  # 10의자리 구현
        num10 = i // 10  # 10의자리
        #나눗셈을 하고 소수점 이하를 버린 몫을 반환한다.
        # i가 45 이면 10 나누셈을 해서 소수점을 버리고 4가된다.(4.5에서 4)
        num1 = i % 10  # 1의 자리
        # i가 50이면 5  i가 40이면 4

        result10 = ''
        if num10 % 2 == 0:
            result10 = '짝수'
        else:
            result10 = '홀수'

        #1의자리 구현
        result1 = '0' #10,20,30,40,50,60,70,80,90,100일떄 일의자리 :0을 구현해야 함으로
        # num1(일의자리)이 0이 아닌 경우 if 조건문으로 홀,짝 인지 판단한다.

        #num1 이 0인 경우 밑에 if문을 실행하지않고 0이 그대로 유지되어
        #10,20,30 에서의   일의자리:0 으로 출력된다.
        if num1 != 0:
            if num1 % 2 == 0:
                result1 = '짝수'
            else:
                result1 = '홀수'





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

3-2 반복문[02]

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

#내풀이 (팩토리얼 구현 못함)
num1 = int(input('정수 입력:'))

sum = 0
total1 = 0  # 홀수 합 결과 변수 초기화
total2 = 0 # 짝수 합 결과 변수 초기화
for i in range(1, num1+1):
    sum += i
    if i % 2 == 1:
        total1 += i  # 홀수일 때만 합산

    elif i %2 ==0:
        total2 +=i #짝수 일때만 합산


print('홀수 합 결과: {}'.format(total1))
print('짝수 합 결과: {}'.format(total2))
print('합 결과: {}'.format(sum))




#강의 풀이
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:
        oddSum +=i

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


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


print('팩토리얼 결과: {}'.format( factorialResult))

3-3[반복문03]

  1. *을 출력 해보기

for i in range(1, 6): #출력할 행의 갯수 이다
    for j in range(i): # 각 행마다 출력될 *의 개수를 제어
        print('*', end='')
    print()#객체



#  2번문제
for i1 in range(1, 6):
    for i2 in range(6 - i1 -1):
        print(' ', end = '') #' ' 경우*을 우측 정렬 하게 한다.   -->''의 경우 좌측 정렬
                            #공백을 나타내는 띄어쓰기 이다.
    for i3 in range(i1):
        print('*', end='')
    print()





#3 번 문제 (내풀이 강의 풀이랑 같다.)
for i in range(5,0, -1): #출력할 행의 갯수 이다
    for j in range(i): # 각 행마다 출력될 *의 개수를 제어
        print('*', end='')
    print()#객체





#4 번 문제
for i in range(5,0, -1): #출력할 행의 갯수 이다
    for i2 in range(5 - i ):
        print(' ', end = '')

    for j in range(i): #출력 부분
        print('*',end='')

    print()






#5 번 문제
for i in range(1, 10):
    if i < 5:
        for j in range(i):
            print('*', end='')
    else:
        for j in range(10 - i): #10에서 i를 감소한다.
            print('*', end='')

    print()

3-4 반복문[04]

1번
집 앞 버스 정류장에서 학교까지 가는 버스 A,B,C 의 운행정보가 다음과 같을 때, 2대 이상의 버스가 정차하는 시간대를 출력해보자

busA = 15
busB = 13
busC = 8

totalMin = 60 * 17 # 하루 17시간 운행
for i in range(totalMin + 1): #하루 운행시간
    if i< 20 or i > (totalMin - 60): #6시부터 출발하는것을 분류하기 위해 i< 20
                                    #C버스가  A,B버스보다 1시간 일찍 운행 종료
        if i % busA ==0 and i % busB == 0:
            #busA와 busB의 운행 주기에 맞게 정수를 나누어지는 경우 확인


            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))

3-5 반복문[05]

1번
톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자. (단, n2는 n1보다 크다.)

62_반복문(05)

#톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음
맞물린 톱니가 최초로 다시 만나게 될 떄까지의 톱니의 수와 각각의 바퀴 회전수를
출력해보자. (, n2는 n1보다 크다.)


gearATCnt = int(input('GearA 톱니수 입력:'))
gearBTCnt = int(input('GearB 톱니수 입력:'))

gearA = 0
gearB = 0
leastNum = 0

flag = True

while flag:
    if gearA != 0: #0은 의미가 없으므로 제외
        if gearA != leastNum: #leastNum은 최소공배수이다.
                              #최소 공배수가 아니라면 gearA 에 gearATCnt를 더해주어 다음 회전 횟수를 꼐산한다.
            gearA += gearATCnt

        else:  #최소 공배수와 같은 경우를 처리한다.
            flag = False #공배수면 종료
    else:
        gearA += gearATCnt



    if gearB != 0 and gearB % gearATCnt == 0:
                      #gearB % gearATCnt == 0: gearB가 gearATCnt의 배수인지 확인
        leastNum = gearB #위 조건이 True이면 laeastNum에 gearB설정
    else:
        gearB += gearBTCnt

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

3-6 반복문[06]

1번
윤년 계산기를 만들어보자

  • 윤년 조건
  • 연도가 4로 나누어떨어지고 100으로 나누어떨어지지 않으면 윤년이다.
  • 또는 연도가 400으로 나누어떨어지면 윤년이다.

for year in range(2021, (2021+101)):
    if (year % 4==0 and year % 100 != 0) or (year % 400 ==0):
        print('{}년: 윤년!!'.format(year))

    else:
        print('{}년: 평년!'.format(year))
        
        

0개의 댓글