#사용법
import + 모듈명
모듈명.키워드(함수/class 등)
#'.' 점(dot) 접근 연산자
import math
#절댓값: 10
print(math.fabs(-10))
#올림: 6
print(math.ceil(5.21))
#내림: -6
print(math.floor(-5.21))
#버림: -5
print(math.trunc(-5.21)
#최대공약수: 7
print(math.gcd(14, 21))
#팩토리얼: 3628800
print(math.factorial(10))
#제곱근: 3.4641016151377544
print(math.sqrt(12))
import time
#class형으로 반환
lt = time.localtime()
#연도만 추출
print(lt.tm_year())
#월만 추출
print(lt.tm_mon())
import random
#1-10 정수 중 난수 1개 발생
rNum = random.randint(1, 10)
print(f'rNum: {rNum}')
#0-100 정수 중 난수 10개 발생
#sample(범위, 난수 갯수) > list형으로 값 반환
rNums = sample(f'rNums: {rNum}')
sample
함수
두 개의 매개번수를 받음
매개변수 1. 샘플링할 대상📌시퀀스(리스트, 튜플 등)
매개변수 2. 샘플링할 항목의개수
📌 시퀀스(sequence)란?
python에서 데이터를 순서대로 저장하고 접근하는데 사용되는 데이터 형식
인덱싱(indexing), 슬라이싱(slicing)을 통해 개별 항목에 접근 가능
- 종류
리스트(List)
: 순서가 있는 값들의 목록으로, 대괄호 []를 사용하여 정의됩니다.
튜플(Tuple)
: 순서가 있는 값을 그룹화한 것으로, 소괄호 ()를 사용하여 정의됩니다. 튜플은 불변(immutable)하며 수정할 수 없습니다.
문자열(String)
: 문자의 시퀀스로, 작은따옴표 ' '나 큰따옴표 "로 둘러싸인 텍스트입니다. 문자열은 불변(immutable)_하며 수정할 수 없습니다.
범위(Range)
: 숫자 시퀀스를 나타내는 데 사용되며, 주로 반복문과 함께 사용됩니다.
바이트(Byte)
: 이진 데이터를 시퀀스로 나타냅니다.
바이트 배열(Bytearray)
: 변경 가능한 바이트 시퀀스입니다
💡 sample 매개변수에 문자열을 넣는다면?
import random
text = 'abcdefg'
sample_result = random.sample(text, 3)
print(sample_result) #출력 예: ['d', 'g', 'c']
특정 기능을 가지고 있는 파이썬 파일을 만든 후 > 해당 파일의 이름을 import
해주면 됨
1) 모듈파일 생성
#파일명: calculator.py
def add(n1, n2):
print(f'덧셈 결과:{n1 + n2}')
def sub(n1, n2):
print(f'뺄셈 결과:{n1 - n2}')
def mul(n1, n2):
print(f'곱셈 결과:{n1 * n2}')
def div(n1, n2):
print(f'나눗셈 결과:{n1 / n2}')
2) 모듈 import
import calculator
calculator.add(3,4)
#덧셈 결과:7
as
를 사용해서 모듈 이름을 단축시킬 수 있음
import calculator as cal
#cal만 작성해도 모듈을 불러올 수 있음
cal.add(10, 20)
from
키워드를 이용해서 모듈의 특정 기능만 사용할 수 있음
#여러 기능을 불러올 경우 ,(콤마)로 구분
from random import randint, sample
#from를 사용해서 함수를 가져올 경우, 모듈명으로 접근하지 않고 함수명만 입력하여 실행
num = randint(1, 100)
# *키워드를 사용하면 모든 기능을 가져옴 (import random과 동일한 기능)
from random import *
1) 단독 실행일때
__main__
으로 설정됨__name__
= '__main__'2) 모듈로써(import되어) 사용될때
__name__
= 'addModule'__name__
= 'subModule'3) 언제 __name__ 변수를 사용하는가?
파이썬 엔진
이 여러개의 파이썬 스크립트가 있는 프로그램을 실행할 때, __name__을 이용해서 실행파일을 찾음
def add(n1, n2):
return n1 + n2
if __name__ == '__main__':
print(f'__name__: {__name__}')
#실행 파일일 때만, __name__: __main__ 이 출력됨
#로또 당첨 여부 알아보기!
#사용자에게 5개의 번호(1~45)를 입력받아, 모듈 내 생성된 난수(로또번호 5개 + 보너스번호 1개)와 일치하는지 확인할 수 있는 모듈
import random
userNums = []; ranNums = []; collNums = []
randBonuNum = 0
#사용자에게 받은 번호(list형)을 모듈 내 변수에 입력하는 함수
def setUserNums(ns):
global userNums
userNums = ns
#모듈 내 변수를 실행파일로 가져올 수 있도록 하는 함수
def getUserNums():
return userNums
def setRandNums():
global randNums
randNums = random.sample(range(1, 46), 6)
def getRandNums():
return randNums
def setBonuNum():
global randBonuNum
while True:
randBonuNum = random.randint(1, 45)
if randBonuNum not in randNums:
break
def getBonuNum():
return randBonuNum
def lottoResult():
global userNums
global randNums
global collNums
collNums = []
for un in userNums:
if un in randNums:
collNums.append(un)
if len(collNums) == 6:
print('1등 당첨!!')
print(f'번호: {collNums}')
elif (len(collNums) == 5 ) and (randBonuNum in userNums):
print('2등 당첨!')
print(f'번호: {collNums}, 보너스 번호: {randBonuNum}')
elif len(collNums) == 5:
print('3등 당첨!')
print(f'번호: {collNums}')
elif len(collNums) == 4:
print('4등 당첨!')
print(f'번호: {collNums}')
elif len(collNums) == 3:
print('5등 당첨!')
print(f'번호: {collNums}')
else:
print('아쉽습니다. 다음 기회에 ~')
print(f'기계 번호: {randNums}')
print(f'보너스 번호: {randBonuNum}')
print(f'선택 번호: {userNums}')
print(f'일치 번호: {collNums}')
def startlotto():
n1 = int(input('번호(1~45) 입력: '))
n2 = int(input('번호(1~45) 입력: '))
n3 = int(input('번호(1~45) 입력: '))
n4 = int(input('번호(1~45) 입력: '))
n5 = int(input('번호(1~45) 입력: '))
n6 = int(input('번호(1~45) 입력: '))
selectNums = [n1, n2, n3, n4, n5, n6]
setUserNums(selectNums)
setRandNums()
setBonuNum()
lottoResult()