#횟수 지정 for문 사용
for i in range(100):
print('i -> {}'.format(i))
##########
#조건 지정 while 사용
num = 0
while (num < 10):
print('num -> {}.format(num))
num +=1
range 함수로 1씩 증가 시켜보기
startNum = int(input('반복의 시작 입력 :'))
endNum = int(input('반복의 끝 입력 : '))
for i in range(startNum,(endNum+ 1)):
#5부터 15까지 출력할려면 endNum에다가 +1을 해주어야한다.
#+1을 안해주면 5부터 14까지 출력만 된다.
print(i)
#####
#2씩 증가 시키기
for i in range(startNum,(endNum+ 1) , 2):
#1씩 증가와 달리 증가수를 생략하면 안된다. 2 붙여주자
print(i)
#기본예시
endNum = 10
n = 0
while n <= endNum:
print(n)
n += 1
#############################
# 1부터 100까지의 정수 중 2의 배수와 3의 배수를 구분해서 출력하자# n = 1
while n < 101 :
if n % 2 ==0:
print('{}은 2의 배수이다.'.format(n))
if n%3 ==0:
print('{}은 3의 배수이다.'.format(n))
n +=1
#for문 while문 비교
sum = 0
for i in range(1, 11) :
sum += i
print('sum : {}'.format(sum))
#############################
#while문으로 작성
sum = 0
n = 1
while n < 11:
sum+= n #sum에다가 n을더함
n+=1 #n+1이 없으면 무한루프에 빠진다.
print('sum : {}'.format(sum))
n = 1
while n < 10: #n=1이 그대로 실행됨으로 True가 되어서 무한 반복이된다.
print('Hello')
#####################
#논리형 데이터로 반복 제어가 가능하다
flag = True
num = 0
sum = 0
while flag: #flag=True를 초기화 함으로써 무한 반복을 실행한다.
num += 1
sum += num #누적되서 숫자가 더해진다.
print('{}까지의 합은 {}입니다.'.format(num, sum))
if sum >= 1000:
flag = False #1000이넘는순가 False가 되어 빠져나온다.
###############################################
#while문 예제 (random함수 사용)
# 하루에 독감으로 병원에 내방하는 환자 수가 50명에서 100명 사이일 떄,
# 누적 독감 환자 수가 최초 10000명을 넘는 날짜를 구해보자
import random
sum = 0
date = 0
flag = True
while flag:
patientCount = random.randint(50, 100)
sum += patientCount
date += 1
print('날짜:{}, \t 오늘 환자수:{}, \t 누적 환자수: {}'.format(date, patientCount, sum))
if sum >= 10000:
flag = False
for i in range(100):
if i % 7 != 0 :
continue # 이하 반복 실행 생략
# #continue를 만나면 다시 위로가서 새로운 반복이 시작된다.
# #7의 배수가 아닌 정수는 빠져나오지 못하고 위로(for)가서 다시 무한반복이 된다.
# #즉 7의 배수만 빠져나와서 밑에 print()함수를 실행한다.
#
print('{}는 7의 배수입니다.'.format(i))
###########################
#else 키워드를 사용한 반복문 종료
#7의배수와 7의 배수 갯수 출력하기
cnt = 0
for i in range(1,100) :
if i % 7 !=0:
continue
print('{}는 7의 배수입니다.'.format(i))
cnt += 1 #반복이 실행된 횟수(7의배수만 카운트한다)
else:
print('99까지의 정수 중 7의 배수는 {}개 입니다.'.format(cnt))
num = 0
while True:
print('Hello~')
num +=1
if(num >= 5):
break #--> 반복문 종료 #헬로우 5번 출력후 종료
#########################
#break 사용 예제
#10의 팩토리얼을 계산하는 과정에서 결과값이 50을 넘었을때의 숫자를 구하자
result = 1
num = 0
for i in range(1, 11):
result *= i #팩토리얼 이라서 *= 사용
#팩토리얼은 1부터 특정 숫자까지 연손된 자연수를 곱하는 것이다.
#4는 1x2x3x4를 말한다.
if result > 50:
num = i
break
print('num: {}, result: {}'.format(num, result))
# #출력 하면 num은5 , result는 120이 나온다
# #1x2x3x4= 24
# #1x2x3x4x5 = 120 --> 즉 num 5는 50을 넘어서 답이 num 5, result 120이 나온다.
name = '홍길동'
product = '야구글러브'
orderNo = 2568956
payMethod = '신용카드'
payPrice = 100000
payProduct = 110000
usePoint = 10000
payDate = '2021/08/03 21:50:12'
payDiv = 6
payDivCategory = '무'
phone = '02-1234-5678'
print(name, '고객님 안녕하세요')
print(name, '고객님의 주문이 완료되었습니다.')
print('다음은 주문건에 대한 상세 내역입니다.')
print('-' * 50)
print('상품명',product)
print('주문번호',orderNo)
print('결제방법',payMethod)
print('상품금액',payProduct)
print('결재금액',payPrice)
print('포인트',usePoint)
print('결제일시',payDate)
print('할부',payDiv)
print('할부유형',payDivCategory)
print('문의',phone)
print('-'*50)
print('저희 사이트를 이용해 주셔서 감사합니다.')
#1.사용자가 입력한 데이터의 길이를 출력하는 프로그램을 만들어보자
#- len() 함수를 사용한다 (len함수는 문자 길이를반환한다)
userMsg = input('메시지 입력: ')
print('메시지 문자열 길이 : {}'.format(len(userMsg)))
#################################
#2.다음 문장에서 객체지향 문자열을 찾아 보자
#- fint() 함수를 사용한다. (특정 문자열의 위치를 찾아 반환한다.)
article = '파이썬은 프러래머그 귀도반로섬 이 발표한 고급 프로그래밍 언어이다.'
strIdx = article.find('귀도반로섬') #11출력 참고로 0부터시작한다.
print('객체지향 문자열 위치: {}'.format(strIdx))
########################################################
#3.출력 결과와 같이 사용자가 입력한 데이터를 모두 실수로 변경한 후 사각,삼각 넓이를 출력해보자
weidth, height = map(float, input('가로, 세로 길이 입력').split())
a1 = weidth *height #삼각형
a2 = (weidth*height)/2 #사각
print('------- Result --------')
print('삼각형 넓이 : {}'.format(a1))
print('사격형 넓이 : {}'.format(a2))
print('삼각형 넓이 : %.2f' %a1)
print('사각형 넓이 : %.2f' %a2)
print('------------------------')
#1.원의 반지름을 입력하면 원의 넓이와 둘레 길이를 출력하되, 아래와 같은 형식으로 출력해보자
pi = 3.14
radius= float(input('반지름(cm) 입력'))
circleArea = pi * radius * radius #원넓이
circleLength = 2* pi * radius #원 둘레
print('원의 넓이\t: %d'%circleArea) #d는 정수
print('원의 넓이\t: %d'%circleLength)
print('원의 넓이\t: %.1f'%circleArea)
print('원의 넓이\t:%.1f'%circleLength)
print('원의 넓이\t: %.3f'%circleArea)
print('원의 넓이\t:%.3f'%circleLength)
#2.사용자로부터 입력받은 개인정보를 포맷문자욜을 이용해서 다음과 같이 출력해보자
#(단, 비밀번호와 주민번호 뒷자리는 별표로 처리하자)********
# 사용자 정보 입력 받기
name = input('이름 입력: ')
mail = input('메일 입력: ')
id = input('아이디 입력: ')
pw = input('비밀번호 입력: ')
privateNumber1 = input('주민번호 앞자리 입력: ')
privateNumber2 = input('주민번호 뒷자리 입력: ')
address = input('주소 입력: ')
print('-' * 50)
print(f'이름: {name}')
print(f'메일: {mail}')
print(f'아이디: {id}')
pwStar = '*' * len(pw) # 입력비밀번호를 문자열길이로 출력하면 6이되고 6 * '*' = ****** 이되는것이가.
print(f'비밀번호: {pwStar}')
privateNumber = privateNumber2[0] + ('*' * 6) #2+****** =2******
print(f'주민번호: {privateNumber1}-{privateNumber}')
print(f'주소: {address}')
print('-' * 50)
#1.체중(g)와 신장(cm)을 입력하면 BMI 지수가 출력되는 프로그램을 만들어 보자.
#isdigit함수
# BMI = 몸무게(kg) / 신장(m) * 신장(m))
#isdigit()함수
weight = input('체중입력:')
height = input('신장 입력(cm):')
if weight.isdigit():
weight = int(weight) / 10
if height.isdigit():
height = int(height) / 100
print('체중: {}kg'.format(weight))
print('신장: {}kg'.format(height))
bmi = weight / (height * height)
print('BMI : %.2f' % bmi)
####################################################
#2. 다음코드에서 num1과 num2의 값을 서로 바꾸고 각각 출력해보자
num1 = 10
num2 = 20
print('num1: {}, num2: {}'.format(num1, num2))
tempNum = num1
num1 = num2
num2 = tempNum
print('num1: {}, num2: {}'.format(num1, num2))
################################################
#3.중간,기말고사 점수를 입력하면 총점과 평균이 출력되는 프로그램을 만들어보자
#중간,기말 총점과 평균
#isdigit함수 사용
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('잘 못 입력했습니다.')
#1.키오스크에서 사용하는 언어 선택 프로그램을 만들어보자
selectNumber = input('언어 선택(Choose your language): 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)
#######################################################
#2.나의 나이가 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('잘 못 입력했습니다.')
1.상품 가격과 지불 금액을 입력하면 거스름 돈을 계산하는 프로그램을 만들어 보자
단, 거스름 돈은 지폐와 동전의 개수를 최소로 하고, 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
product_price = int(input('상품 가격 입력:'))
pay_price = int(input('지불 금액:'))
if pay_price > product_price:
changeMoney = pay_price - product_price
print(changeMoney)
# changeMoney = changeMoney //10 # 3451 출력된다 원단위가 잘라져서 손해가발생
changeMoney = (changeMoney // 10) * 10# 손해를 피하기 위해 10을 다시 곱한다.
print('거스름돈: {}(원단위 절사)'.format(changeMoney))
if changeMoney > money50000:
money50000Cnt = changeMoney // money50000 # 5만원지폐의 몫이 나온다. ex)6만원 거스름돈이면 5만원 1장
changeMoney %= money50000# 위에서 남은 잔돈을 changeMoney에 담았따.
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)
#1. 국어, 영어, 수학 점수 입력 후 총점, 평균, 최고점수 과목, 최저점수 과목,
#그리고 최고 점수와 최저 점수의 차이를 각각 출력해보자
korScore = int(input('국어 점수 입력:'))
engScore = int(input('영어 점수 입력:'))
mathScore = int(input('수학 점수 입력:'))
totalScore = korScore+engScore+mathScore
avgScore = (korScore+engScore+mathScore)/3
#최고점수 과목 구하기
maxScore = korScore
maxSubject = '국어'
if engScore > maxScore:
maxScore = engScore
maxSubject = '영어'
if mathScore > maxScore:
maxScore = mathScore
maxSubject = '수학'
#최저 점수 과목 구하기
minScore = korScore
minSubject = '국어'
if engScore < minScore:
minScore = engScore
minSubject = '영어'
if mathScore < minScore:
minScore = mathScore
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)
#1.시,분,초를 입력하면 초로 환산하는 프로그램을 만들어보자
hou =int(input('시간 입력:'))
min =int(input('분 입력:'))
sec =int(input('초 입력:'))
# hou * 60 * 60 + min * 60 + sec
# 분 초 초
#60분은 3600초
print('{}초'.format(format(hou * 60 * 60 + min * 60 +sec, ',')))
#2.금액, 이율, 거치기간을 입력하면 복리계산하는 복리계산기 프로그램을 만들어보자
money = int(input('금액 입력:'))
rate = float(input('이율 입력:'))
term = int(input('기간 입력:'))
targetMoney = money #복리가 지나서 받을돈
for i in range(term) :
targetMoney = targetMoney + (targetMoney * rate * 0.01)
#왼쪽 targetMoney <--원금 오른쪽은 이자 --> (targetMoney * rate * 0.01)
targetMoneyFormated = format(int(targetMoney),',')
print('-' * 30)
print('이율 : {}'.format(rate))
print('원금 : {}'.format(format(money, ',')))
print('{}년 후 금액: {}원'.format(term, targetMoneyFormated))
print('-' * 30)
파이썬 기본 문법이 끝났다. 기본 문법은 쉽지만
문제풀이는 정말 어려웠다. 문제를 주어지면 혼자서 풀어보고 나서 강사님의 해설 강의를 보면서 이해했다. 스스로 코드를 작성 할 때는 되게 어렵지만 강사님의 코드를 보면 "아 이렇게 되는구나! 쉬운 문제였구나" 생각이 들었다. 자꾸만 나쁜 생각이 들었던 하루였다. 대학교와 국비 학원에서의 실패경험 때문일까 자꾸 겁을 먹게 된다. 곧 있으면 주말인데 시간표에는 주말 일정은 없지만, 주말에는
파이썬 공부를 더 해야겠다.