Python 챌린지 4일차 TIL

‍박태우·2023년 3월 8일
0
post-custom-banner


Part 10. 딕셔너리와 튜플

1)튜플 만들기

  • 튜플 : 값을 변경하거나 삭제 할 수 없는 리스트와 비슷한 형태

  • 튜플의 형태 :
    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 발생

2)튜플 만들기 실습 (1)

#아래는 튜플을 만드는 세가지 방법이다.
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은 모두 같습니다.

3)튜플 만들기 실습 (2)

#튜플도 리스트 처럼 인덱스를 활용 가능 (변경, 삭제는 불가)
tuple1 = (11, 22, 33)
for i in range( len( tuple1) ):
    print( tuple1[i] )

11
22
33

Part 11. While문과 반복 제어

1)while 문 쓰기

  • while 문 : for 반복문 처럼 블럭 내부 내용을 반복시킴
    형태는 if 와 비슷
selected=None #None 은 아무것도 없다는 의미

#selected가 지정된 리스트 안에 없으면(not in) 계속 입력 반복(조건)
while selected not in ['가위','바위','보']:
    selected = input('가위, 바위, 보 중에 선택하세요>')
    
print('선택된 값은 : ',selected)

결과 분석) 지정된 리스트 내의 값이 아닌 것을 입력 받았을 시에는 while문에 의해 계속 입력받도록 하게 된다.

  • 위의 코드에서 while 대신 if 를 넣게 되면 반복이 아닌 1회만 실행한다.

*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문은 같은 결과를 출력함

가위
바위

가위
바위

  • while 문을 쓰면 편한 예시
    => 입력 대기(for 문을 쓰는 경우 복잡해 질 수 있음)

*상황에 맞는 반복문을 사용하는 것이 좋다.(for 시도->while 시도)

2)while 문 실습

#while 문을 이용해 numbers의 값을 한줄 씩 출력하는 실습
numbers = [1,2,3]
length = len(numbers)
i = 0
while i in range(length):
    print(numbers[i])

1
2
3

3)break, continue

  • break : 반복문 내에서 break 상위 블록 내에 첫번째 반복문을 탈출
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

4)break, continue 실습(1)

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번째에 있다.

5)break, continue 실습(2)

numbers = [(1, 2), (10, 0)] 
# 이런식으로도 리스트를 표현 가능하다. (요소가 여러개씩 묶인 경우)

for a, b in numbers:
    if b == 0:
        print("0으로 나눌 수는 없습니다.")
        continue #이 이후의 문장 수행하지 않고 반복을 계속
    print("{}을(를) {}로 나누면 {}".format(a, b, a/b))
    #print 들여쓰기 주의하기!!

0으로 나눌 수는 없습니다.


Part 12. 예외처리

1)try except

  • 에러 : 피하기만 할 것이 아닌 유용하게 프로그래밍을 할 수 있도록 하는 도구가 되기도 함

  • try :
    예외 발생 가능한 코드에 사용

  • except 에러 종류 :
    예외 발생시 어떻게 처리할지를 구현하는 코드

에러 예시)

-IndexError : 인덱스 범위 초과 에러
-ValueError : 값 오류(문자열->정수형 변환 불가)

=>이러한 에러의 이름을 활용하면 에러를 코드 내에서 처리 가능하다

  • ValueError 예시
text='100%'
try:
    number=int(text) #에러가 발생할 것 같은 코드를 써주기
except ValueError: #발생 할 것 같은 에러 이름 써주기(에러 발생시 실행)
    print('{}는 숫자가 아니네요'.format(text))

100%는 숫자가 아니네요

  • IndexError 예시
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 except를 써야만 하는 경우의 예시
try:
    import my_module
except ImportError:
    print('모듈이 없습니다.')

모듈이 없습니다.

2)try except 실습

try:
    a = 3/0
except ZeroDivisionError:#0으로 나누지 못하는 에러가 발생하는 경우의 에러명
    print("0으로 나눌 수 없습니다.")

0으로 나눌 수 없습니다.

profile
잘 부탁드립니다.
post-custom-banner

0개의 댓글