서울시 공공데이터/데이터 분석

[서울시 공공데이터] - 알고리즘 - 반복문, 제어문 3일

막막한 2023. 5. 10. 20:24
for i in ' python':
	print(i)

1. 선택 구조

 

선택 구조 = if / if else  / if elif

 

< if 구조 >

# if/ 점수 입력받아 점수 60점 이상이면 합격 출력/ 들여쓰기로 묶임

score = int(input('점수:'))
if score>= 60:
	print('합격')
  	print('축하합니다')
print('수고하셨습니다')

< if else 구조 >

# if, else /  점수 60점이상 합격 , 아니면 불합격

score = int(input('점수:')
if score >= 60:
	print('합격')
else:
	print('불합격')

< if elif else 구조>

score = int(input())

if score >= 90:
	grade = 'A'
    
elif score >= 80:
	grade = 'B'
    
elif score >= 70:
	grade = 'C'
        
elif score >= 60
	grade = 'D'
    

esle : 
	grade = 'F'
    
print('grade: ' , grade)

연습문제

# 정수 입력받아 홀 짝 판별

num = int(input('정수: '))

if num % 2 == 1:
	print('홀수')
elif num==0:
	print(0)
else:
	print('짝수')

2. 횟수 반복하기 (for문)

 

반복구조 

지정한 조건 충족될 때까지 명령문이나 명령문 블록 여러 번 실행하는 구조 

 

횟수 제어 반복 : for 구조 / 반복의 범위가 미리 정해진다 

 

# for 반복구조

for i in [1,2,3,4,5]:
	print(i) #지역변수 출력

 

for i 'python': # p  y  t  h  o  n 출력 
	print(i:)
    
for i range(5): # 0~4 출력 
	print(i)
    
    
#hello 10번 출력
for i in range(10):
	print('hello')

<range()함수> --  횟수 지정하기 위한 함수

range(끝값) = 0~ (끝값-1)  

range( 시작값, 끝값)

range( 시작값, 끝값, 증가값)

#중첩 반복 구조

for i in range(3):
	for j in range(4):
    		print(i,j)

 

구구단 출력

for i in range(2,10): # 2~9단
	for j in range(1,10): # 1* 9* 
    	print(f'{i}*{j}={i*j}', end='\t')
    print()

세로버전

for i in range(1,10):
	for j in range(2,10):
    		print(f'{j}*{i}={j*i}', end='\t')
            
	print() #enter 역할

연습문제

1~10 까지의 정수의 합 구하기

total=0 #초기화
for i in range(1, 11):
	total+= i
print(total)

1~100까지의 홀수의 합 구하기

total=0
for i in range(1,101):
	if i%2=1:
    	total +=i
print(total)

3. 조건으로 반복하기 ( while)

 

조건제어 반복 :while 구조

 

1~5 출력

n =1 #초기화

while n<=5:
	print(n)
    n+=1

1~10 더하기

n=1
total =0
while n<=10:
	total += n
    n+=1
print(total)

'q' 입력할때까지 반복해 이름 입력받기

name= input('이름:')
while name != 'q':
	name = input('이름:')

조건에서 빠져 나오기 : break

while True:
	name= input('이름:')
    	if name == 'q':
    		break

연습문제

 

올바른 아이디 비밀번호 입력할때까지 입력받는 프로그램

id = 'id123'
pwd= 'pwd123'

while True:
	input_id= input('id:')
    	input_pwd= input('pwd:')
    
    	if ie==input_id and pwd==input_pwd:
    		break

아이디 잘못, 비밀번호 잘못 되었을 때

id = 'id123'
pwd= 'pwd123'

while True:
	input_id= input('id:')
    	input_pwd= input('pwd:')
    
    	if id==input_id and pwd==input_pwd:
    		break
        if id!= input_id:
        	print('아이디 확인')
		if pwd!= input_pwd:
        	print('비번 확인')

사용자가 0 입력할 때까지 숫자 입력받아 입력받은 숫자들의 합을 구하기

total = 0

while True:
	num = int(input('숫자:'))
    	if num ==0:
    		break
    	total += num

알고리즘 연습하기 - 조건문과 반복문

1. up&down 숫자 맞추기 게임

1~100 사이의 정답 숫자를 랜덤 설정 맞출 때까지 게임 진행

# 정답 숫자 랜덤 설정
import random 
num = random.randrange(1,101)
print(num)  #실행할때마다 랜덤 숫자 만들기

# 정답 맞출 때까지 반복하기 (정답 맞추면 반복 벗어남)
while True:
	answer = int(input('예상 숫자:'))
    	if answer==num:
    		break
         if answer<num:
           print('up')
         else: 
            print('down')

기회 5번 주어짐 / 5회 넘으면 횟수 초과 안내 메시지 / 정답 맞출 시 몇 번째에 맞췄는지

#횟수
count =0


# 정답 숫자 랜덤 설정
import random 
num = random.randrange(1,101)
print(num)  #실행할때마다 랜덤 숫자 만들기

# 정답 맞출 때까지 반복하기 (정답 맞추면 반복 벗어남)
while True:
	count =+1
    if count>5:
    	print('횟수 초과: 정답은', num)
        
	answer = int(input('예상 숫자:'))
    	if answer==num:
    		print('정답 !)
            print(count, '번만에 맞추었습니다.')
            break
         if answer<num:
           print('up')
         else: 
            print('down')

2. 사칙 연산 프로그램

# 두 수와 사칙 연산 기호 입력받아 결과 출력

num1= int(input('숫자 1:'))
num2= int(input('숫자 12:'))
op= input('연산기호:')

if op=='+':
	print(f'{num1} + {num2}={num1+num2}')
elif op=='-':
	print(f'{num1} - {num2}={num1-num2}')
elif op=='*':
	print(f'{num1} * {num2}={num1*num2}')
elif op=='/':
	print(f'{num1} / {num2}={num1/num2}')
else:
	print('잘못 입력했음')

3. 할인된 금액 계산

물건 구매가 입력

금액에 따른 할인율 계산

구매가, 할인율, 할인금액, 지불금액 

price = int(input('물건 구매가: '))

if price >= 100000:
	dc =10
elif price >= 50000:
	dc =7
elif price >= 10000:
	dc=5
else:
	dc=0
    
print(f'''
구매가:{price}
할인율:{dc}
할인금액:{price*(dc/100)}
지불금액: {price-price*(dc/100)}

''')