리스트
list = [val1, val2, val3]
변수를 연결해 놓은 구조 각 인덱스에 데이터 대입
값 대입
list.append("val")
numList=[]
sum=0
for i in range(0,4):
numList[i] = int(input("값 입력"))
sum+=numList[i]
print(sum)
값 접근
list[0] ~ list[len(list)-1]
list[-len(list)] ~ list[-1] 역방향 데이터 접근
- list[-1] =the last data
list[from:to-1]범위를 지정해 호출 - 시작값(default=0), 끝값(default=len(list)-1) 생략 가능
리스트 연산
리스트 덧셈
list1 + list2 서로 다른 리스트를 연결
리스트 곱셈
list * n 리스트 데이터가 n번 반복되어 len(list)*n 길이의 리스트 반환
numList = [1,2,3]
print(numList[3])
#IndexError: list index out of range 범위를 벗어난 값 호출
튜플
읽기 전용, 수정 불가
튜플 생성
# case1 소괄호로 생성
tup1 = (10)
# case2 괄호 생략, 튜플의 항목이 한 개일 때에도 콤마(,) 필수
tup2 = 10,
튜플 내 데이터 추가, 변경, 삭제 불가
tup1.append(4) #error
tup[0] = 3 #error
del(tup[1]) #error
딕셔너리
dict = {k1:val1, k2:val2, k3:val3}
2개의 쌍(키, 값)이 하나로 묶이는 자료구조 순서가 없으며, 키는 중복 불가하지만 값은 중복 가능
딕셔너리 생성
- 하나의 키에 중복해서 값을 배정하면 가장 마지막 값으로 적용
myDict[key] 정보 확인
myDict[key]='val' 정보 추가 및 변경
del(myDict[key]) 정보 삭제
len(myDict) 정보 갯수 확인
딕셔너리 사용
myDict.keys() 딕셔너리의 모든 키 반환
=> dict_keys([‘key1’,’key2’,’key3’])
list(myDict.keys()) 딕셔너리의 모든 키를 리스트 형태로 반환
=> [‘key1’,’key2’,’key3’]
myDict.values() 딕셔너리 모든 값 반환
=> dict_values([‘val1’,’val2’,’val3’])
myDict.items() 딕셔너리를 튜플 형태로 반환
=> dict_items([(‘key1’,’val1’),(‘key2’,’val2’),(‘key3’,’val3’)])
'key1' in myDict 특정 키가 있는지 확인
=> True/False
Ex - 편의점 재고 확인
item_stock={}
add = "Y"
while True:
itm_k = input("입력물품")
item_stock[itm_k] = int(input("재고량"))
add = input("더 추가할 제품이 있으십니까 Y/N")
if add == "n" or add == "N":
break
print("***물품의 재고량 확인***")
for k in item_stock:
find = input("찾을 물품을 입력하세요")
if find in item_stock.keys():
print(item_stock[find],"개 남았어요")
else:
print("그 물품은 없어요")
함수
내장함수
func() 별도의 반환 값이 없는 함수 호출
vari = func() 반환값이 있는 함수는 변수에 반환 값 할당
사용자 정의 함수
매개변수(parameter)를 받아 가공 및 처리 후 반환 값 출력
함수 정의
매개변수 default 설정 가능
def funcSum(arg1, arg2, arg3=4):
sum= arg1+arg2+arg3
return sum
funcSum(2,9) #2+9+4
print(sum)
반환 문이 필요 없는 경우 return 생략 가능
def funcGreet(name):
print("Hi", name)
funcGreet("Tom")
2개 이상 값 반환 가능
#함수 정의
def funcReturns():
rt1 = 100
rt2 = 200
return rt1, rt2
#전역변수 선언
num1, num2 = 0, 0
#메인 코드
num1, num2 = funcReturns()
pass 함수의 이름과 형태만 구성 후, 추후에 내용 작성 가능
def funcBlank():
pass
Ex - 계산기 함수
def calc (op, n1, n2):
if op == "+":
answer= num1+num2
elif op == "-":
answer= num1-num2
elif op == "*":
answer= num1*num2
else:
answer=num1/num2
return answer
operator= input("연산자를 입력하세요")
num1=int(input("첫 번째 숫자를 입력하세요"))
num2=int(input("두 번째 숫자를 입력하세요"))
print(calc(operator,num1,num2))
변수의 유효 범위
지역변수와 전역변수
def funcLocal():
a = 100
print(a)
def funcGlobal():
print(a)
a = 10
funcLocal() #100
funcGlobal() #10
Global 예약어
- 함수 내부에서
global 변수선언 시 전역 변수로 전환 (권장하지 않음)
def func1():
global a
a = 100
print(a)
def func2():
print(a)
a = 10
func1() #100
func2() #100
함수 사용 예제
100일 기념일 구하기
datetime라이브러리 활용
from datetime import timedelta, datetime
today = datetime.today()
addHund = timedelta(days=100)
anniversary = today+addHund
print(anniversary)
비밀번호 유효성 확인
def pw_chk(pwd):
while True:
if len(pwd) >=8:
if pwd.isalnum():
print("적합한 비밀번호입니다")
break
else:
pwd = input("영문자 및 숫자만 입력 가능합니다")
continue
else:
pwd = input("비밀번호는 8자 이상이어야 합니다")
continue
myPwd = input("비밀번호를 입력하세요")
pw_chk(myPwd)
[re]라이브러리 활용(/python/lib-re)
import re
def pw_chk_re(pwd):
check = re.compile("[a-zA-Z0-9]{8-16}")
while True:
if len(pwd)>=8:
if re.match(check,pwd):
print("적합한 비밀번호입니다")
break
else :
pwd =input("비밀번호는 영문자 및 숫자만 가능합니다.")
continue
else:
pwd = input("비밀 번호를 8글자로 입력해주세요")
continue
pwdTry = input("비밀번호를 입력해주세요")
pw_chk_re(pwdTry)