Python 기초03

Doya·2025년 2월 6일

ESTSOFT_AI개발7기

목록 보기
4/43

개요

  • While문
  • 입력
  • 예외처리
  • 과제

Wile문

  • 조건식을 기반으로 실행 코드를 반복해서 실행하게 함
  • 반복 횟수를 모를 때 사용

While문의 구조

while 조건:
	실행 코드 

주의 사항

  • While문을 사용할 때 무한루프를 조심해야 함
  • 조건이 만족하지 않으면(False) While문 안 실행 코드는 실행이 안됨
잘못된 while 문 
1) 조건 만족X
cnt = 0
while cnt > 3:
	print('test')

2)조건식의 True로 인한 무한 루프 
cnt = 0
while cnt < 0
	print('test')
	
3) True 또는 1을 이용한 무한 루프
cnt = 0
while True: # while 1:도 같은 뜻임  
	print('test')
	cnt = 0

반복문을 제어하는 코드

  1. break
  • 반복의 실행을 종료
  • 반복 도중 break를 만나면 그대로 실행을 종료, 루프를 빠져 나옴
  • 사용 예시
    	```
    	cnt = 0
    	while True:
    		print('test')
    		cnt += 1
    		if(cnt == 3):
    			break
    
    	```
  1. continue
  • 반복문 내의 나머지 실행부를 건너뛰고 계속해서 반복 루프를 실행
  • 반복문을 종료 시키지는 않음
  • 사용 예시
    cnt, tot = 0, 0
	while cnt < 10:
  		cnt += 1
  		if(cnt == 5):
    		continue
  		print(cnt, end = ' ')
 	 	tot += cnt
	print(f'합계={tot}') # 5를 제외한 1~10까지의 총합이 나옴 

중첩 for문

  • 2월 5일 for문의 연장선
  • 실습 예제
# 구구단 
for i in range(2, 10):
  for j in range(1, 10):
    mul = i * j
    print(f'{i} * {j} = {mul}', end= ' | ')
  print('\n')

입력함수 input()

  • 사용자로부터 입력을 받는 것
  • input()을 통해 입력 받은 모든 것을 문자열로 취급
  • int(), float()등으로 정수형, 실수형으로 받을 수 있음
  • input() 사용 예시
name = input('이름 입력: ')
age = int(input('나이 입력: '))

split을 이용하여 동시에 입력 받기

num1, num2 = map(int, input('두 개의 정수를 입력하세요: ').split())
  • split()은 문자열을 특정 구분자를 기주으로 나누어 리스트로 반환하는 메소드
  • map()은 반복 가능한 객체의 각 요소에 특정 함수를 적용하여 새로운 값을 생성하는 Python내장 함수
  • split과 map은 추후 자세하게 다룰 예정

예외 처리

오류

  • 프로그래밍 언어에서 정해진 문법을 따르지 않는 명령이 입력되어 프로그램이 문제를 일으키는 것
  • 파이썬 오류는 정해진 문법을 지키지 않았기 때문에 발생하는 구문 오류, 문법 오류, 파씽 오류라고 함
  • 문법적으로는 올바른 프로그램이지만 예상하지 못한 상황으로 인해 종료가 되는 경우를 예외라고 함

try-except

  • 예외 처리를 위해 사용
  • try: 예외가 발생할 우려가 있는 코드를 입력
  • except: 오류 발생시 처리할 내용을 담고 있음
  • except Exception 를 사용하면 모든 예외를 한번에 처리 가능 -> 편리하지만 어떤 예외가 발생했는지 정확하게 구분하기는 힘듬
num1, num2, tot, mok = 0, 0, 0, 0

try:
  num1, num2 = map(int, input('두 개의 정수를 입력하세요: ').split())
  tot = num1 + num2 
  mok = round(num1 / num2, 2)
except Exception as ex:
  print(f'{ex}\n처리 오류입니다.\n확인 부탁드립니다\n')
  

print(f'{tot} = {num1} + {num2} ')
print(f'{mok} = {num1} / {num2}')
>>> try 절에서 오류 발생시 except 절 코드 실행 됨 

과제

역순 코드 만들기

조건: while사용, % 와 // 연산 사용
while 반복문 탈출 break가 있어야함
sort등 내장 함수 사용 금지 -> while을 이용해서 풀기

  1. 첫 시도
num = 5942
re_num = 0  #역순으로 들어갈 변수 

print(f'원본 = {num}')
while True:
  if(num > 1000):
    re_num = num // 1000
    num = num % 1000
  elif(num > 100):
    re_num += (num // 100 ) * 10
    num = num % 100
  elif(num > 10):
    re_num += (num // 10 ) * 100
    num = num % 10
  elif(num > 0):
    re_num += num * 1000
    num = num % 1
  elif(num == 0 ):
    break
 
print(f'역순 = {re_num}')

문제점:

  • 코드가 길고 복잡함
  • 코드를 좀더 간단하게 할 필요가 있음
  • 이미 정수가 주어진 상태인데 사족을 붙임

수정

num = 5942
re_num = 0  # 역순으로 저장할 변수

print(f'원본 = {num}')

while num > 0:
    re_num = re_num * 10 + num % 10  # 마지막 자릿수를 추가
    num //= 10  # 마지막 자릿수를 제거

print(f'역순 = {re_num}')
profile
안녕하세요. 도야입니다

0개의 댓글