1️⃣ 파이참 설치 밎 기본 사용 방법
- 파이썬을 만든 사람? : 귀도 반 로섬
- 파이썬의 특징이 아닌 것은? : 쉽다, 무한 정수를 처리할 수 있다.(실수는 소수점 16번째 자리 정도에서 오류가 일어남), 온라인 상 커뮤니티가 잘 형성되어 있다.
오답 -> 개발 시간이 오래 걸린다.
- 파이썬 공식 홈페이지 접속: (www.python.org)
3.1. 설치 방법: add python 3.9 to PATH 체크 -> install now
- 파이썬 idle 사용: 명령 프롬포트를 이용해서 파이썬 설치 유무 확인 -> 'python' 검색 -> 설치되어 있는 버전이 출력됨
- 활용(파이썬 vs. 코드 편집기): 파이썬 (간단한 프로그래밍 테스트) / 코드 편집기(코딩할 때 사용, 셸 모드에서 file - new를 클릭 / 반드시 print를 사용해야 한다는 특징 있음)
모듈 이용 날짜 출력
import datetime
today = datetime.datetime.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)
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) 문장에서 '파이썬'이라는 단어가 몇 번째에 위치하고 있는지
userMsg = input('메시지 입력: ')
print('메시지 문자열 길이 : {}'.format(len(userMsg)))
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)
print('원의 둘레길이\t : %d' %circleLength)
print('원의 넓이\t : %.1f' %circleArea)
print('원의 둘레길이\t : %.1f' %circleLength)
print('원의 넓이\t : %.3f' %circleArea)
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}')
privateNumberStar = privateNumber2[0] + ('*' * 6)
print(f'주민번호 : {privateNumber1} - {privateNumberStar}')
print(f'주소 : {address}')
print('-' * 30)
4. 데이터와 변수
- isdigit():숫자인지 확인(숫자이면 True, 아니면 False)
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)
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. 연산자
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
if payPrice > productPrice:
changeMoney = payPrice - productPrice
changeMoney = (changeMoney // 10) * 10
print('거스름 돈: {}(원단위 절사)'.format(changeMoney))
if changeMoney >= money50000:
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, ',')))
money = int(input('금액 입력: '))
rate = float(input('이율 입력: '))
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. 연산자
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('고도 %dmm의 기온: %.2f도' %(height, targetTemp))
bread = 197
milk = 152
studentCnt = 17
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('하반기 일정 확인하세요.')
btInch = 0.039
lengthMM = int(input('길이(mm) 입력: '))
lengthInch = lengthMM * btInch
print('{}mm -> {}inch'.format(lengthMM, lengthInch))
4️⃣ 조건문
1. 조건문
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. 조건문
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)
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('미세먼지 수치 입력: '))
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):
print('차량 2부제 적용')
print('차량 2부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
if dustNum > limitDust and carType == 2:
if (day % 5) == (carNumber % 5):
print('차량 5부제 적용')
print('차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
if dustNum <= limitDust:
if (day % 5) == (carNumber % 5):
print('차량 5부제 적용')
print('차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
print('-' * 30)
6. 조건문
import random
rNum = random.randint(1, 1000)
tryCount = 0
gameFlag = True
while gameFlag:
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. 반복문
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))
2. 반복문
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:
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):
for j in range(i):
print('*', end='')
print()
for i1 in range(1,6):
for i2 in range(6 - i1 - 1):
print(' ', end='')
for i3 in range(i1):
print('*', end='')
print()
for i in range(5, 0, -1):
for j in range(i):
print('*', end='')
print()
for i in range(5, 0, -1):
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):
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
for i in range(totalMin+1):
if i < 20 or i > (totalMin - 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))
5. 반복문
gearATCnt = int(input('GearA 톱니수 입력: '))
gearBTCnt = int(input('GearB 톱니수 입력: '))
gearA = 0
gearB = 0
leastNum = 0
flag = True
while flag:
if gearA != 0:
if gearA != leastNum:
gearA += gearATCnt
else:
flag = False
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)))
6. 반복문
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))