Python 기초04

Doya·2025년 2월 7일

ESTSOFT_AI개발7기

목록 보기
5/43

개요

  • 함수
  • import를 이용하여 모듈 불러오기
  • 리스트
  • 숙제

함수

  • 프로그래밍을 하다 보면 동일한 코드를 반복해서 사용하는 경우가 많음
  • 함수는 특정 작업을 수행하는 코드 블록
  • 매개변수를 받아 처리하고 return을 사용해서 값을 반환 할 수 있음
  • 코드의 재사용성과 가독성을 높여 효율적인 프로그래밍을 가능하게 해줌

Parameter 와 Argument

  1. Parameter
  • 함수를 정의할 때 입력값을 받기 위해 사용하는 변수
  1. Argument
  • 실제로 함수가 호출될 때, 넘기는 변수값

함수의 구조

def 함수이름(매개변수(생략가능)):
	내용
	return 변수 #함수가 일 수행 후 그 결과를 반환 

함수 사용 예시

# 함수 생성 매개인자 없음, 리턴값도 없음 
def board_delete():
	pass
# 매개인자 있음, 리턴값 없음
def board_delete(a, b):
	pass


# 매개인자는 없음, 리턴값 있음
def server_connet():
	flag = False
	~~~
	flag = True
	return flag #리턴값이 있을때 필수 

# 매개인자 있음, 리턴값 있음 
def Cal(a,b):
	hap = a + b
	return = hap
x, y = 5, 4
tot = Cal(x,y)

반환문 return

  • 일반적으로 함수 내부는 블랙박스라 가정
  • 함수의 내부는 특정 코드를 갖고 있으며 주어진 일을 수행하고 결과를 반환
  • return을 이용해서 사용하여 하나 이상의 값을 반환함
  • 두 개 이상의 값도 반환 할 수 있음-> 다중 반환문
def fun_name(pra):
	code1
    code2
    ...
    return 반환되는값

함수와 블랙 박스

블랙박스

  • 내부 동작 방식은 보이지 않고, 입력 -> 처리 -> 출력만 보이는 시스템
  • 함수도 블랙 박스처럼, 내부 로직을 몰라도 입력하면 결과
  • 함수도 블랙 박스처럼, 내부 로직을 몰라도 입력하면 결과를 반환하는 방식으로 동작

전역변수와 지역변수

전역변수(global variable)

  • 함수 바깥에서 선언되거나 전체 영역에서 사용 가능한 변수
  • 클래스 전체에서 사용가능함

지역변수(Local variable)

  • 특정 구역내에서 선언되거나 그 구역에서만 사용 가능한 변수
  • 함수 속에 선언되어 함수 속에서만 사용이 가능

가변적인 인자전달

  • 인자의 수가 정해지지 않음
  • *을 이용해서 사용
  • 가변적 인자는 튜플이나 리스트와 비슷하게 for in문에서 사용 가능
def greet(*names):
    for name in names:
        print('안녕하세요', name, '씨')

greet('홍길동', '양만춘', '이순신') # 인자가 3개
greet('James', 'Thomas') # 인자가 2개 

>>>
안녕하세요 홍길동 씨
안녕하세요 양만춘 씨
안녕하세요 이순신 씨
안녕하세요 James 씨
안녕하세요 Thomas 씨

모듈 가져오기(import)

  • 2월 6일 datetime모듈 가져오는 것 처럼 모듈을 가져 올 수 있음
  • python 자체에 미리 만들어진 내장 모듈과 사용자가 직접 만든 사용자 정의 모듈로 나뉨
# 모듈 전체를 가져오는 방법
import 모듈
# 모듈 내에서 필요한 부분만 가져오는 방법 
from 모듈 import 이름

실습

#game.py
# 임의의 모듈 
def Game(x):
  today_game = ' '
  if(x == 1 ):
    today_game = '몬스터 헌터 월드'
  elif(x == 0):
    today_game = '포켓로그'
  else:
    today_game = '로스트 아크'
  return today_game  

def exercise(x):
  today_ex = ' '
  if(x  == 1):
    today_ex = '계단 운동'
  elif(x == 0):
    today_ex = '팔굽혀펴기'
  else:
    today_ex = '오늘은 쉬는날'
  return today_ex  

def Music(x):
  today_mu = ' '
  if(x == 1 ):
    today_mu = '발라드'
  elif(x == 0):
    today_mu = '팝송'
  else:
    today_mu = 'j-pop'
  return today_mu  

def play():
  print('game.py문서의 play함수')
  print('운동 하기')
  print('뮤직 play')
# game.py를 import 하기 
import game
import random
# from 문서이름 import 함수이름만 명시  -> 머신러닝에서 많이 사용하는 방법
from game import exercise


rm_game = 0
rm_exercise = 0
rm_music =0

rm_count = random.randrange(0,2)
rm_exercise = random.randrange(0,2)
rm_music = random.randrange(0,2)

result_game = game.Game(rm_count)
print(result_game)
result_ex = exercise(rm_count)
print(result_ex)

실행 결과

과제

랜덤 난수를 이용한 랜덤 로또 번호 뽑기

조건
1. 중복 숫자가 없어야 함
2. set()집합 사용 X

random 모듈을 이용하여 난수 구하기

  • 난수: 정해진 범위 내에서 무작위로 추출된 수
  • import random으로 모듈을 불러올 수 있음

1. set()을 사용한다면?

import random
lotto = set()
num = 0

while len(lotto) < 6:
  num = random.randrange(1,45)
  lotto.add(num)

lotto_list = list(lotto)
lotto_list.sort()
print(lotto_list)

2. 리스트만을 이용해서 로또 번호 생성기 만들기

import random

lotto = []

for i in range(7):
  i = random.sample(range(1,45))
  lotto.append(i)

lotto.sort()
print(lotto)

문제점: 중복 숫자가 나올 수 있음

3. 중복 배제하기

import random
lotto = list()
num = 0

def ran_lotto_number(lotto_list): # 랜덤 함수 번호 생성해주는 함수 
  while len(lotto_list) < 6:
    num = random.randrange(1,45)
    if num not in lotto_list: 
      lotto_list.append(num)
  lotto_list.sort() # 로또번호 정렬 
  return lotto_list

def view_lotto_number(): # 로또 번호 리스트를 보여주는 함수 
  view_lotto = ran_lotto_number(lotto)
  print(view_lotto)

view_lotto_number()
profile
안녕하세요. 도야입니다

0개의 댓글