튜플 : 값을 변경하거나 삭제 할 수 없는 리스트와 비슷한 형태
튜플의 형태 :
tuple1=(1,2,3)
#괄호 없어도 가능(그러나 튜플이라는 것을 확인하기 위해 괄호는 쓰는 것이 좋음)
type(tuple1)
<class 'tuple'> #튜플이라는 데이터 형태
리스트로 부터 만들어 보는 튜플
list1=[1,2,3]
tuple3=tuple(list1) #list1을 튜플화
tuple3
(1,2,3) #대괄호가 아닌 소괄호
튜플의 인덱스 활용
tuple3[0]
1
=>tuple3[0]=5 #값을 바꾸려고 하면 TypeError 발생
#아래는 튜플을 만드는 세가지 방법이다.
tuple1 = (1,2,3)
tuple2 = 1,2,3
list3 = [1,2,3]
tuple3 = tuple(list3)
if tuple1 == tuple2 == tuple3:
print("tuple1과 tuple2와 tuple3은 모두 같습니다.")
tuple1과 tuple2와 tuple3은 모두 같습니다.
#튜플도 리스트 처럼 인덱스를 활용 가능 (변경, 삭제는 불가)
tuple1 = (11, 22, 33)
for i in range( len( tuple1) ):
print( tuple1[i] )
11
22
33
selected=None #None 은 아무것도 없다는 의미
#selected가 지정된 리스트 안에 없으면(not in) 계속 입력 반복(조건)
while selected not in ['가위','바위','보']:
selected = input('가위, 바위, 보 중에 선택하세요>')
print('선택된 값은 : ',selected)
결과 분석) 지정된 리스트 내의 값이 아닌 것을 입력 받았을 시에는 while문에 의해 계속 입력받도록 하게 된다.
*for 문과의 비교
patterns=['가위','바위','보']
length=len(patterns)
i=0
while i<length:
print(patterns[i])
i=i+1
for i in range(len(patterns)):
print(patterns[i])
#위 아래의 각각 while 문과 for문은 같은 결과를 출력함
가위
바위
보
가위
바위
보
*상황에 맞는 반복문을 사용하는 것이 좋다.(for 시도->while 시도)
#while 문을 이용해 numbers의 값을 한줄 씩 출력하는 실습
numbers = [1,2,3]
length = len(numbers)
i = 0
while i in range(length):
print(numbers[i])
1
2
3
list=[1,2,3,5,7,2,5,237,55]
for val in list:
if val % 3==0:
print(val)
break # break문 없을시 3과 237이 각각 출력됨
3
*continue : 반복문의 continue 이후 부분을 실행하지 않고 반복의 처음으로 돌아감
=>장점 : 제외하는 경우를 첫번째로 처리해 줌으로서 핵심이 되는 블록이 너무 깊게 들어가지 않도록 방지해준다.
for i in range(10):
#짝수인 경우에는 반복문의 처음으로 돌아가 다시 실행(continue 이용)
if i%2==0:
continue;
print(i)
#핵심 부분인 이부분을 깊게 들어가지 않게 한다.
#깊게 들어간다 ==> :를 통해 많이 들어가는 것을 의미
1
3
5
7
9
sizes = [33,35,34,37,32,35,39,32,35,29]
for i,size in enumerate(sizes):
if size == 32:
print("사이즈 32인 바지는 {}번째에 있다.".format(i+1))
break #사이즈가 32인것을 찾으면 출력후 반복문 탈출
사이즈 32인 바지는 5번째에 있다.
numbers = [(1, 2), (10, 0)]
# 이런식으로도 리스트를 표현 가능하다. (요소가 여러개씩 묶인 경우)
for a, b in numbers:
if b == 0:
print("0으로 나눌 수는 없습니다.")
continue #이 이후의 문장 수행하지 않고 반복을 계속
print("{}을(를) {}로 나누면 {}".format(a, b, a/b))
#print 들여쓰기 주의하기!!
0으로 나눌 수는 없습니다.
에러 : 피하기만 할 것이 아닌 유용하게 프로그래밍을 할 수 있도록 하는 도구가 되기도 함
try :
예외 발생 가능한 코드에 사용
except 에러 종류 :
예외 발생시 어떻게 처리할지를 구현하는 코드
에러 예시)
-IndexError : 인덱스 범위 초과 에러
-ValueError : 값 오류(문자열->정수형 변환 불가)
=>이러한 에러의 이름을 활용하면 에러를 코드 내에서 처리 가능하다
text='100%'
try:
number=int(text) #에러가 발생할 것 같은 코드를 써주기
except ValueError: #발생 할 것 같은 에러 이름 써주기(에러 발생시 실행)
print('{}는 숫자가 아니네요'.format(text))
100%는 숫자가 아니네요
def safe_pop_print(list,index):
try:
print(list.pop(index)) #인덱스의 해당하는 값을 지우면서 리턴하는 함수 pop
except IndexError:
print('{} index의 값을 가져올 수 없습니다'.format(index))
safe_pop_print([1,2,3],5)
5 index의 값을 가져올 수 없습니다.
=> 이경우 if else 문으로 바꿀 수도 있는데 둘중에 더 간결하고 읽기 쉬운것을 선택
def safe_pop_print(list,index):
if index<len(list):
print(list.pop(index))
else:
print('{} index의 값을 가져올 수 없습니다'.format(index))
safe_pop_print([1,2,3],5)
5 index의 값을 가져올 수 없습니다.
try:
import my_module
except ImportError:
print('모듈이 없습니다.')
모듈이 없습니다.
try:
a = 3/0
except ZeroDivisionError:#0으로 나누지 못하는 에러가 발생하는 경우의 에러명
print("0으로 나눌 수 없습니다.")
0으로 나눌 수 없습니다.