[python] 데이터와 변수 / 연산자 / 조건문 / 반복문

jane05·2023년 9월 7일
0
post-thumbnail

1️⃣ 파이참 설치 밎 기본 사용 방법

  1. 파이썬을 만든 사람? : 귀도 반 로섬
  2. 파이썬의 특징이 아닌 것은? : 쉽다, 무한 정수를 처리할 수 있다.(실수는 소수점 16번째 자리 정도에서 오류가 일어남), 온라인 상 커뮤니티가 잘 형성되어 있다.
    오답 -> 개발 시간이 오래 걸린다.
  3. 파이썬 공식 홈페이지 접속: (www.python.org)
    3.1. 설치 방법: add python 3.9 to PATH 체크 -> install now
  4. 파이썬 idle 사용: 명령 프롬포트를 이용해서 파이썬 설치 유무 확인 -> 'python' 검색 -> 설치되어 있는 버전이 출력됨
  5. 활용(파이썬 vs. 코드 편집기): 파이썬 (간단한 프로그래밍 테스트) / 코드 편집기(코딩할 때 사용, 셸 모드에서 file - new를 클릭 / 반드시 print를 사용해야 한다는 특징 있음)

모듈 이용 날짜 출력

import datetime
today = datetime.datetime.today() #today라는 변수 안에 집어 넣음
print(today)

#연도만 출력하고 싶다면?
print(today.year)

2️⃣ 데이터와 변수

1. 데이터와 변수

#변수 선언을 먼저 해주기
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)

#단순하게 출력 가능 #\t으로 정렬
print('상품명\t: ', product)
print('주문번호\t: ', orderNo)
print('결재방법\t: ', payMethod)
print('상품금액\t: ', productPrice)
print('포인트\t: ', usePoint)
print('결제일시\t: ', payDate)
print('할부\t\t: ', payDiv)
print('할부유형\t: ', payDivCategory)
print('문의\t\t: ', phone)

print('-' * 50)

print('저희 사이트를 이용해 주셔서 감사합니다.')

2. 데이터와 변수

  • len(): 문자열의 길이를 반환한다.
  • find(): 특정 문자열의 위치를 찾아 반환한다. ex) 문장에서 '파이썬'이라는 단어가 몇 번째에 위치하고 있는지
#len()
userMsg = input('메시지 입력: ')
print('메시지 문자열 길이 : {}'.format(len(userMsg)))

#find()
article = '파이썬[3](영어: Python)은 \1991[4] 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬[5]이 발표한 고급 프로그래밍 언어로, \
    \'인터프리터를 사용하는 객체지향 언어\'이자 플랫폼에 독립적인, 동적 타이핑(dynamically typed) 대화형 언어이다.' \
    '파이썬이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python\'s Flying Circus〉에서 따온 것이다'
strIdx = article.find('객체지향')
print('\'객체지향\'문자열 위치 : {}'.format(strIdx)) #따옴표의 짝이 안맞을 때는 역슬래시를 통해 출력 시에만 나오도록 해야 함
#사용자가 입력한 데이터를 모두 실수로 변경한 후 사각형, 삼각형의 넓이를 출력해보자.
width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))

triangleArea = width * height / 2
squareArea = width * height

print('-' * 50)
print('삼각형 넓이 : %f' %triangleArea) #포맷 함수를 쓸 수도 있음
print('사각형 넓이 : %f' %squareArea)

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

3. 데이터와 변수

#원의 반지름을 입력하면 원의 넓이와 둘레 길이를 출력하되, 아래와 같은 형식으로 출력해보자.

pi = 3.14
radius = float(input('반지름(cm) 입력 : ')) #정수로 나타내는 것 아님!

circleArea = pi * radius * radius #변수부터 정의해주기 #정의 따로, 프린트 따로
circleLength = 2 * pi * radius

print('원의 넓이\t : %d' %circleArea) #정수형으로 나타내기
# dimensions = f('원의 넓이: d%')%(dimensions) #오답
print('원의 둘레길이\t : %d' %circleLength)

print('원의 넓이\t : %.1f' %circleArea) #소수점 첫째자리까지 나타내기
print('원의 둘레길이\t : %.1f' %circleLength)

print('원의 넓이\t : %.3f' %circleArea) #소수점 3 째자리까지 나타내기
print('원의 둘레길이\t : %.3f' %circleLength)
  • str[0]: str에 저장된 문자열에서 첫번째 문자를 반환함
#사용자로부터 입력받은 개인정보를 포맷문자열을 이용해서 다음과같이 출력해보자.
(, 비밀번호와 주민번호 뒤자리는 별표로 처리하자)

name = input('이름 입력: ')
mail = input('메일 입력: ')
id = input('아이디 입력: ')
pw = input('비밀번호 입력: ')
privateNumber1 = input('주민번호 앞자리 입력: ')
privateNumber2 = input('주민번호 뒷자리 입력: ')
address = input('주소 입력: ')

print('-' * 30)

print(f'이름 : {name}')
print(f'메일 : {mail}')
print(f'아이디 : {id}')

pwStar = '*' * len(pw)
print(f'비밀번호 : {pwStar}')

#주민번호에서 첫 번째 숫자를 출력하고 남은 6자리는 별표로 처리
privateNumberStar = privateNumber2[0] + ('*' * 6)
print(f'주민번호 : {privateNumber1} - {privateNumberStar}')
print(f'주소 : {address}')

print('-' * 30)

4. 데이터와 변수

  • isdigit():숫자인지 확인(숫자이면 True, 아니면 False)
#체중(g)과 신장(cm)을 입력하면 BMI지수가 출력되는 프로그램을 만들어 보자.
#BMI = 몸무게(kg) / (신장(m) * 신장(m))

weight = input('체중 입력(g) : ')
height = input('신장 입력(cm) : ')

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)
#중간, 기말고사 점수를 입력하면 총점과 평균이 출력되는 프로그램을 만들어보자.
score1 = input('중간 고사 점수: ')
score2 = input('기말 고사 점수: ')

if score1.isdigit() and score2.isdigit():
    score1 = int(score1) #숫자라고 정의
    score2 = int(score2)

    totalScore = score1 + score2
    avgScore = totalScore / 2

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

else:
    print('잘 못 입력했습니다.') #입력된 값이 숫자가 아닐 때 출력

5. 데이터와 변수

#키오스크에서 사용하는 언어 선택 프로그램을 만들어보자.
selectNumber = int(input('언어 선택(Choose your languaage): 1.한국어 \t 2.English'))

if selectNumber == 1:
    menu = '1.샌드위치 \t 2.햄버거 \t 3.쥬스 \t 4.커피 \t 5.아이스크림'

elif selectNumber == 2:
    menu = '1.Sandwich \t 2.Hamburger \t 3.Juice \t 4.Coffee \t 5.Ice cream'

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

3️⃣ 연산자

1. 연산자

#상품 가격과 지불 금액을 입력하면 거스름 돈을 계산하는 프로그램을 만들어보자.
#단, 거스름 돈은 지폐와 동전의 개수를 최소로 하고, 1원단위 절사한다.

#구성
#지폐:50,000원,5,000원,1,000원
#동전:500원,100원,10원

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

productPrice = int(input('상품 가격 입력: ')) #연산을 해야되기 때문에 정수로 바꿔줌
payPrice = int(input('지불 금액: '))

changeMoney = 0 # 1. 거스름돈이 없는 경우를 위해 변수 초기화

if payPrice > productPrice:
    changeMoney = payPrice - productPrice
    changeMoney = (changeMoney // 10) * 10
    print('거스름 돈: {}(원단위 절사)'.format(changeMoney))

if changeMoney >= money50000:  # 2. 거스름돈 = 화폐 단위인 경우에도 해당 화폐를 써야하므로 >를 >=로 수정
    money50000Cnt = changeMoney // money50000
    changeMoney %= money50000

if changeMoney >= money10000:
    money10000Cnt = changeMoney // money10000
    changeMoney %= money10000

if changeMoney >= money5000:
    money5000Cnt = changeMoney // money5000
    changeMoney %= money5000

if changeMoney >= money1000:
    money1000Cnt = changeMoney // money1000
    changeMoney %= money1000

if changeMoney >= money500:
    money500Cnt = changeMoney // money500
    changeMoney %= money500

if changeMoney >= money100:
    money100Cnt = changeMoney // money100
    changeMoney %= money100

if changeMoney >= money10:
    money10Cnt = changeMoney // money10
    changeMoney %= 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)

2. 연산자

#국어, 영어, 수학 점수 입력 후 총점, 평균, 최고점수 과목, 최저점수 과목,
#그리고 최고 점수와 최저 점수의 차이를 각각 출력해보자

korScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))

totalScore = korScore + engScore + matScore
avgScore = totalScore / 3

maxScore = korScore 
maxSubject = '국어' #최고 점수가 국어라고 가정

if engScore > maxScore: #최고 점수가 영어일 때
    maxScore = engScore
    maxSubject = '영어'

if matScore > maxScore: #최고 점수가 수학일 때
    maxScore = matScore
    maxSubject = '수학'

minScore = korScore
minSubject = '국어' #최저 점수가 국어라고 가정

if engScore < minScore:
    minScore = engScore
    minSubject = '영어'

if matScore < minScore:
    minScore = matScore
    minSubject = '수학'

difScore = maxScore - minScore #최고 점수, 최저 점수 차이

print('총점: {}'.format(totalScore))
print('평균: %.2f' %avgScore) #다하고 나서 마지막에 표현 방식을 바꿔줘도 됨!
print('-' * 30)
print('최고 점수 과목(점수): {}({})'.format(maxSubject, maxScore))
print('최저 점수 과목(점수): {}({})'.format(minSubject, minScore))
print('최저, 최고 점수 차이: {}'.format(difScore))
print('-' * 30)

3. 연산자

#시, 분, 초를 입력하면 초로 환산하는 프로그램을 만들어보자.
hour = int(input('시간 입력: '))
min = int(input('분 입력: '))
sec = int(input('초 입력: '))

print('{}초'.format(format(hour * 60 * 60 + min * 60 + sec, ','))) #format 안에 넣어주면 문자가 됨 #format 안에 다시 넣어서 포장
#금액, 이율, 거치기간을 입력하면 복리계산하는 복리계산기 프로그램을 만들어보자.

money = int(input('금액 입력: '))
rate = float(input('이율 입력: ')) #데이터 타입은 실수 #4.3% -> 이율은 실수로!
term = int(input('기간 입력: '))

targetMoney = money #받을 돈: 처음에는 내가 넣은 돈

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('-' * 30)

4. 연산자

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

baseTemp = 29 #지면온도
step = 60 #고도
stepTemp = 0.8 #고도가 올라갈 때마다 기온 0.8도 감소

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

targetTemp = baseTemp - ((height // step) * 0.8) #현재 내가 있는 곳의 온도
if height % step != 0: #나머지가 딱떨어지지 않으면 온도가 (한 단계 기준으로) 좀 더 내려갈 것
    targetTemp -= stepTemp #targetTemp = targetTemp - stemTemp

print('지면 온도: {}도'.format(baseTemp))
print('고도 %dmm의 기온: %.2f도' %(height, targetTemp))
#197개의 빵과 152개의 우유를 17명의 학생한테 동일하게 나눠 준다고 할 때,
#한 명의 학생이 갖게 되는 빵과 우유 개수를 구하고 남는 빵과 우유 개수를 출력하자.

bread = 197
milk = 152
studentCnt = 17

#몫: format 함수 안에 넣어서 간단하게 표현 가능
print('학생 한명이 갖게되는 빵 개수 : {}'.format(bread // studentCnt)) 
print('학생 한명이 갖게되는 우유 개수 : {}'.format(milk // studentCnt))

#나머지
print('남는 빵 개수 : {}'.format(bread % studentCnt))
print('남는 우유 개수 : {}'.format(milk % studentCnt))

5. 연산자

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

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

if inputAge <= 19 or inputAge >= 65:
    endNum = int(input('출생 연도 끝자리 입력: ')) #범위 안에 나이가 포함되면 끝자리 입력!
    if endNum == 1 or endNum == 6:
        print('월요일 접종 가능!!')
    if endNum == 2 or endNum == 7:
        print('화요일 접종 가능!!')
    if endNum == 3 or endNum == 8:
        print('수요일 접종 가능!!')
    if endNum == 4 or endNum == 9:
        print('목요일 접종 가능!!')
    if endNum == 5 or endNum == 0:
        print('금요일 접종 가능!!')
else:
    print('하반기 일정 확인하세요.')
#길이(mm)를 입력하면 inch로 환산하는 프로그램을 만들어보자.(1mm = 0.039inch)
btInch = 0.039
lengthMM = int(input('길이(mm) 입력: '))
lengthInch = lengthMM * btInch

print('{}mm -> {}inch'.format(lengthMM, lengthInch))

4️⃣ 조건문

1. 조건문

#교통 과속 위반 프로그램을 만들어보자.
#조건
#시속 50km이하: 안전속도 준수!!
#시속 50km초과: 안전속도 위반!! 과태표 50,000원 부과 대상!!!

speed = int(input('속도 입력: '))
speedLimit = 50

if speed <= speedLimit:
    print('안전속도 준수!!')
else: #간단하게 분기!
    print('안전속도 위반!! 과태표 50,000원 부과 대상!!!')
#문자 메시지 길이에 따라 문자 요금이 결정되는 프로그램을 만들어보자
message = input('메시지 입력: ')
length = len(message)
msgPrice = 50 #따로 변수 정의해줌

if length <= 50:
    msgPrice = 50 #메시지 가격
    print('SMS 발송!!')
else:
    msgPrice = 100 #메시지 가격
    print('MMS 발송!!')

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

2. 조건문

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

#변수 지정할 때 헷갈릴 수 있음
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)) #절댓값

print('-' * 70)

3. 조건문

  • 난수 활용
#난수를 이용해서 홀/짝 게임을 만들어보자.
import random

comNum = random.randint(1,2) #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('실패!! 짝수!!')
#난수를 이용해서 가위, 바위, 보 게임을 만들어보자.
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 == 2):
    print('컴퓨터: 패, 유저: 승')
elif comNumber == userNumber:
    print('무승부')
else:
    print('컴퓨터: 승, 유저: 패')

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

4. 중첩 조건문

#아래 요금표를 참고해서 상수도 요금 계산기를 만들어보자.
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

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

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

5. 조건문

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

today = datetime.datetime.today()
day = today.day #날짜만 뽑아내기

limitDust = 150
dustNum = int(input('미세먼지 수치 입력: ')) #계산해줄거면 다 숫자형으로 캐스팅하기: 조건문 안에 들어가면 int?
carType = int(input('차량 종류 선택: 1.승용차 2.영업용차'))
carNumber = int(input('차량 번호 입력: '))

print('-' * 30)
print(today)
print('-' * 30)

if dustNum > limitDust and carType == 1: #150 초과이며, 승용차일 때
    if (day % 2) == (carNumber % 2): #
        print('차량 2부제 적용')
        print('차량 2부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')

if dustNum > limitDust and carType == 2:#차량 2부제를 실시하더라도 영업용차량은 5부제 실시
    if (day % 5) == (carNumber % 5):
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')

if dustNum <= limitDust: #미세먼지 측정 수치가 150이하이면 차량 5부제 실시
    if (day % 5) == (carNumber % 5):
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')

print('-' * 30)

6. 조건문

#PC에서 난수를 발생하면 사용자가 맞추는 게임을 만들어보자.
import random

#random 모듈
rNum = random.randint(1, 1000)
tryCount = 0
gameFlag = True #게임이 반복되게 할거냐

while gameFlag: #while문은 언제 발생할지 모르는 조건이 반복될 때 사용!
    tryCount += 1
    pNum = int(input('1에서 1,000까지의 정수 입력: '))

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

print('난수: {}, 시도 횟수: {}'.format(rNum, tryCount))
#실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어보자.
innerTemp = int(input('실내온도 입력: '))

if innerTemp <= 18:
    print('에어컨: off!')
elif innerTemp > 18 and innerTemp <= 22:
    print('에어컨: 매우 약!!')
elif innerTemp > 22 and innerTemp <= 24:
    print('에어컨: 약!!')
elif innerTemp > 24 and innerTemp <= 26:
    print('에어컨: 중!!')
elif innerTemp > 26 and innerTemp <= 28:
    print('에어컨: 강!')
elif innerTemp > 28:
    print('에어컨: 매우 강!!')

5️⃣ 반복문

1. 반복문

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

for i in range(1, 101): #1부터 100까지
     if i <= 9: #1부터 9일 때까지의 짝, 홀
         if i % 2 == 0:
             print('[{}]: 짝수!'.format(i))
         else:
             print('[{}]: 홀수!'.format(i))

     else:
        num10 = i // 10 #십의 자리
        num1 = i % 10 #일의 자리

        result10 = '' #result10이라는 변수 만들어주기
        if num10 % 2 == 0:
            result10 = '짝수'
        else:
            result10 = '홀수'

        result1 = '0' #result1이라는 변수 만들어주기 #애초에 0으로 세팅해주기
        if num1 != 0: #일의 자리가 0일 때
            if num1 % 2 == 0:
                result1 = '짝수'
            else:
                result1 = '홀수'

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

2. 반복문

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

fNum = int(input('정수 입력: '))

addSum = 0
for i in range(1, (fNum + 1)): #fNum까지
    addSum += i

addSumFormated = format(addSum, ',') #천 단위로 표현
print('합 결과: {}'.format(addSumFormated))

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

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

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

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

#팩토리얼
factorialResult = 1
for i in range(1, (fNum + 1)):
    factorialResult *= i
factorialResultFormated = format(factorialResult, ',')
print('팩토리얼 결과: {}'.format(factorialResultFormated))

3. 반복문

#‘*’를 이용해서 다음과 같이 다양한 모양을 출력해보자.

for i in range(1,6): #1부터 5까지, 0부터면 없음
    for j in range(i):
        print('*', end='')
    print()

######
for i1 in range(1,6): #1부터 5까지, 0부터면 없음
    for i2 in range(6 - i1 - 1): #어디부터 어디까지 공백을 찍겠다
        print(' ', end='')
    for i3 in range(i1):
        print('*', end='')
    print()

#######
for i in range(5, 0, -1): #1부터 5까지, 0부터면 없음
    for j in range(i):
        print('*', end='')
    print()

#######
for i in range(5, 0, -1): #1부터 5까지, 0부터면 없음
    for j in range(5 - i):
        print(' ', end='')

    for j 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): #i는 행
    for j in range(1,6):
        if j == i:
            print('*', end='')
        else:
            print(' ', end='')
    print()

4. 반복문

busA = 15
busB = 13
busC = 8

totalMin = 60*17 # 6시부터 23시까지니까 총 17시간
for i in range(totalMin+1):
    if i < 20 or i > (totalMin - 60): # A,B 버스만 운행
        if (i % busA == 0) and (i % busB == 0): # i에서 버스A, 버스B 운행시간을 나눴을 때 나머지가 둘 다 0인 경우
            print('busA와 busB 동시 정차', end='')
            # 정확한 시간도 출력
            hour = 6 + (i // 60)
            min = i % 60 
            print('\t{}:{}'.format(hour, min))
    else: # A,B,C 모두 운행
        # 버스 A와 B 동시 정차
        if i % busA == 0 and i % busB == 0:
            print('busA와 busB 동시 정차', end='')
            hour = 6 + (i // 60)
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        # 버스 A와 C 동시 정차
        elif i % busA == 0 and i % busC == 0:
            print('busA와 busC 동시 정차', end='')
            hour = 6 + (i // 60)
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        # 버스 B와 C 동시 정차
        elif i % busB == 0 and i % busC == 0:
            print('busB와 busC 동시 정차', end='')
            hour = 6 + (i // 60)
            min = i % 60
            print('\t{}:{}'.format(hour, min))

5. 반복문

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

#최소공배수 문제
gearATCnt = int(input('GearA 톱니수 입력: ')) #톱니의 개수
gearBTCnt = int(input('GearB 톱니수 입력: '))

gearA = 0
gearB = 0
leastNum = 0

flag = True #flag 변수
while flag:

    if gearA != 0:
        if gearA != leastNum:
            gearA += gearATCnt #최소공배수만큼 못가면 계속해서 돌 것, 최소공배수만큼 돈다
        else:
            flag = False
    else:
        gearA += gearATCnt #gearA가 0일 때

    if gearB != 0 and gearB % gearATCnt == 0: #최소공배수가 나올 때, 최소공배수는 큰 숫자보다 클 것
        leastNum = gearB
    else:
        gearB += gearBTCnt #그렇지 않으면 기어B의 톱니 수만큼 돌아가야 한다!

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

6. 반복문

#윤년 계산기 만들기
#윤년 조건
#- 연도가 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))

#i 대신에 year를 넣음
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))
profile
데이터 분석 공부 기록

0개의 댓글