Python 챌린지 3일차 TIL

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



Part6. 리스트 사용

1)리스트 사용

  • 리스트 : 여러값을 순서대로 담아두고 꺼내쓸 수 있는 자료형
    여러 값이 같이 들어있기 때문에 출력 시에도 여러 값이 함께 나옴
    => 첫 번째 값이 0부터 시작한다. (계산에 용이)
list1=['가위','바위','보']
list2=[37,23,10,33,29,40]

print(list1)
print(list2)

print(list1[1])
print(list1[2])
#print(list1[3]) 범위 초과 오류

결과)

  • 리스트 각 값의 수정과 가능한 인덱스 넘버
    => list1[-1]과 같이 음수로도 인덱스를 나타낼 수는 있다.
    (단, 음수도 너무 작으면 범위 초과)
    앞으로 갈 수록 숫자는 작아짐
#위의 코드에서 계속

list1[0]='바위' #리스트의 각 값을 수정할 수도 있다.
print(list[0])

#print(list1[3]) 범위 초과 오류
print(list1[-1])
print(list1[-3])
#print(list1[-4]) 범위 초과 오류

바위

바위

2)리스트 사용 실습(1)

#리스트의 첫번째 값을 저장하여 출력하는 실습
rainbow=['빨강','주황','노랑','초록','파랑','남색','보라']
first_color = rainbow[0]
print('무지개의 첫번째 색은 {}이다'.format(first_color) )

무지개의 첫번째 색은 빨강이다

3)리스트 사용 실습(2)

#리스트의 마지막 값을 이용하여 무지개의 마지막 색 출력하는 실습
rainbow=['빨강','주황','노랑','초록','파랑','남색','보라']
last_color = rainbow[-1] #rainbow[6]도 가능
print('무지개의 마지막 색은 {}이다'.format(last_color) )

무지개의 마지막 색은 보라이다.

4)리스트 수정

  • 리스트 확장
list2=[37,23,10,33,29,40]
print(list2)

list2.append(16) #.append(n) 으로 인해 리스트 끝에 n 값 추가
print(list2) #list2가 변경

list3=list2+[16] #list2와 16을 추가한 새로운 리스트 생성
print(list3)

list4=list2+list3# 두 리스트를 더하기
print(list4)

결과)

  • 리스트 축소 및 요소 삭제(위 코드 계속)
print(list4)
del (list4[12]) #()괄호 유무 상관 없음 12번째 데이터 삭제
print(list4)
list4.remove(40) #같은 값이 여러개 들었어도 가장 먼저 나오는 값 하나만 지워짐
print(list4)

결과)

  • 리스트 내부의 요소 탐색
n=12
ownership=n in list3 #list3에 n이 있으면 True, 없으면 False 대입
print(ownership)

n=10
if n in list3:
    print('{}은 있어!'.format(n))

결과)

5)리스트 수정 실습(1)

#list1에 값 4 추가하는 실습

list1=[1,2,3]
list1=list1+[4]#또는 list1.append(4)도 가능

print(list1)

[1,2,3,4]

6)리스트 수정 실습(2)

#list3를 list1가 list2를 이용해 특정 값으로 만들게 하는 실습

list1=[1,2,3]
list2=[4,5,6]
list3 =list1+list2

print(list3)

[1,2,3,4,5,6]

7)리스트 수정 실습(3)

#특정 값이 리스트 내부에 존재 하는지 확인하는 실습
numbers = [1,2,3,4,5]
if 5 in numbers: #5 값이 numbers 리스트 안에 있는가?
    print("5가 있다")

5가 있다

8)리스트 수정 실습(4)

#리스트에서 특정 값을 지워 수정해보는 실습
list1=[1,2,3]
del (list1[1]) #또는 list1.remove(2)도 가능


print(list1)

[1,3]

Part 7. for 반복문

1)for in list

사용예시)


patterns=['가위','보','보','가위','가위','가위','보','가위','바위','보']
for pattern in patterns:
    print(pattern)
    #각 줄에 한번씩 리스트 값 출력

결과)

  • for A in B 반복문 :
    -코드를 필요한 만큼 반복해서 실행할 수 있도록 해주는 기능
    -B에 있는 모든 값을 A에 한번 씩 넣어가며 블럭 실행
    이때 A는 대입하지 않고도 생겨나는 변수의 이름이다.(Python 에 존재)
    B에 있는 값을 매번 A라는 변수에 대입하며 실행된다.

  • for in 장점 :
    in 뒤의 리스트의 크기와 관계없이 항상 모든 리스트에 대해서 실행 가능하다.

  • 같은 코드를 조건에 맞게 반복해주는 코드 == 반복문

2)for in list 실습(1)

#for in 문을 이용해 list의 내용을 한줄씩 출력해보는 실습

list = ['가위','바위','보']
for play in list:
    print(play)#play는 list로 부터 순서대로 반복적으로 불러온다.

가위
바위

3)for in range

for i in [0,1,2,3,4]:
    print(i)

# 이경우 []안의 리스트 크기가 크면 곤란할 수 있음 (for in range의 필요성)

for i in range(5):
    print(i)

#위 코드와 동일한 결과 (0~4 각 줄에 출력)

#len()이용하여 길이 변화에 유용한 경우

for i in range(len(names)): #len() 을 이용하여 names 길이 만큼 반복
    name=names[i]
    print('{}번 : {}'.format(i+1,name))
  • for 뒤의 변수는 1씩 증가
  • range는 필요한 개수만큼의 숫자를 순서대로 만들어내는 것에 유용
  • enumerate는 순서와 리스트 안의 값을 모두 전달(좀 더 간단)
    => 처음에 1) index 넘버 리턴, 2) 그다음에 그 데이터 리턴

1번 : 철수
2번 : 영희
3번 : 짱구
4번 : 유리
5번 : 훈이

  • range 가 더 필요한 경우 (리스트를 만들 수 없거나 정보를 알기 어려운 경우)
    -예시 (모든 한글 출력)
for i in range(11172):
    print(chr(44032+i),end=' ')

#결과 : 모든 한글 출력

  • for in list : 순회할 리스트가 정해져 있을 때
  • for in range(숫자): 순회할 횟수가 정해져 있을 때(1씩 증가하는 숫자가 필요할 때)
  • for in enumerate(list명): 2개 이상의 값을 한꺼번에 처리

4)for range 실습(1)

#0부터 3까지 출력되도록 하는 반복문 실습
for i in range(4):
    print(i)

0
1
2
3

5)for range 실습(2)

#range 를 이용해서 무지개의 순서와 색을 출력하는 실습
rainbow=["빨","주","노","초","파","남","보"]
for i in 
range(len(rainbow))
 :
    color = rainbow[i]
    print('{}번째 색은 {}'.format(i+1,color))

1번째 색은 빨
2번째 색은 주
3번째 색은 노
4번째 색은 초
5번째 색은 파
6번째 색은 남
7번째 색은 보

6)for range 실습(3)

rainbow=["빨","주","노","초","파","남","보"]
for i,color in enumerate(rainbow):
    print('{}번째 색은 {}'.format(i+1,color))

1번째 색은 빨
2번째 색은 주
3번째 색은 노
4번째 색은 초
5번째 색은 파
6번째 색은 남
7번째 색은 보

7)for range 실습(4)

#각 달의 날 수를 리스트화 하고 정보 출력하는 실습

days = [31,29,31,30,31,30,31,31,30,31,30,31]

for i,dayNum in enumerate(days):
    print('{}월의 날짜수는 {}일 입니다.'.format(i+1,dayNum))
    
#다른 코드 
for i in range(len(days)):
	print('{}월의 날짜수는 {}일 입니다.'.format(i+1,days[i]))

1월의 날짜수는 31일 입니다.
2월의 날짜수는 29일 입니다.
3월의 날짜수는 31일 입니다.
4월의 날짜수는 30일 입니다.
5월의 날짜수는 31일 입니다.
6월의 날짜수는 30일 입니다.
7월의 날짜수는 31일 입니다.
8월의 날짜수는 31일 입니다.
9월의 날짜수는 30일 입니다.
10월의 날짜수는 31일 입니다.
11월의 날짜수는 30일 입니다.
12월의 날짜수는 31일 입니다.


Part 10. 딕셔너리와 튜플

1)딕셔너리 만들기

  • 딕셔너리 : 여러 값을 저장해두고 필요한 값을 꺼내 쓰는 기능
  • 딕셔너리이름={이름:내용,이름:내용...} 의 형태
  • 콤마(,)로 이름 각각을 구분
wintable={
	'가위':'보', #앞의 적힌 부분 : 이름표, 뒤의 적힌 부분 : 값
    '바위':'가위',
    '보':'바위'}
print(wintable['가위']) # 가위 이름표의 값을 출력

  • 함수를 이용한 딕셔너리
wintable={
    '가위':'보',
    '바위':'가위',
    '보':'바위'}
def rsp(mine,yours):
    if mine==yours:
        return 'draw'
    elif wintable[mine] == yours:
        return 'win'
    else :
        return 'lose'
        
result=rsp('가위','바위') #result에 승패 정보 대입

messages={
    'win':'이겼다!',
    'draw':'비겼네.',
    'lose':'졌어'} #승패 정보를 이름으로 하는 딕셔너리 생성
print(messages[result]) #딕셔너리를 리스트처럼 사용하여 해당하는 내용 출력

졌어

2)딕셔너리 만들기 실습(1)

days_in_month = {
    #여기에 코드를 완성해 보세요.
    '1월':31,'2월':28,'3월':31
    
 }

print(days_in_month)

{'1월': 31, '2월': 28, '3월': 31} #딕셔너리 정보 모두 출력

3)딕셔너리 만들기 실습(2)


dict = {"이름표":[1,2,3] }
#값은 리스트를 포함해서 무엇이든 올 수 있다.

print( dict["이름표"] ) #"이름표"이름의 정보(리스트) 모두 출력

[1,2,3]

4)딕셔너리와 반복문

  • 딕셔너리에서의 key 와 value
    key => 'a':'b'에서 'a'에 해당하는 이름표
    value :=> 'a':'b'에서 'b'에 해당하는 값

예시) 아래와 같은 딕셔너리가 있다고 하자
ages={'Tod':35,'Jane':23,'Paul':62}

-keys()사용 예시

#key 값을 가져오는 keys(), 
#python은 디폴트로 keys()를 가져오기 때문에 생략 가능
for key in ages.keys():
    print(key)

"""for key in ages:
	print(key)"""
    
#위 아래 동일 결과

Tod
Jane
Paul

-values() 사용예시

#value 값들을 가져오는 values()
#key 가 가지고 있는 값인 value를 가져오는 역할
for value in ages.values():
    print(value)

35
23
62

-items() 사용예시

#key,value 값을 순서 대로 모두 가져오는 items()
#리스트의 enumerate()와 비슷함
for key,value in ages.items():
    print('{}의 나이는 {}입니다.'.format(key,value))

Tod의 나이는 35입니다
Jane의 나이는 23입니다
Paul의 나이는 62입니다

  • 딕셔너리의 값은 순서를 지키지 않는다.

5)딕셔너리와 반복문 실습(1)

#for in 문을 이용해 딕셔너리의 키값 출력하는 실습
days_in_month = {"1월":31, "2월":28, "3월":31, "4월":30, "5월":31}
for key in days_in_month.keys(): #.keys() 생략가능
	print(key)

1월
2월
3월
4월
5월

6)딕셔너리와 반복문 실습(2)

# key와 value 한번에 전달 받아 출력하는 프로그램 실습
days_in_month = {"1월":31, "2월":28, "3월":31, "4월":30, "5월":31}
for key,value in days_in_month.items():
    print("{}은 {}일이 있습니다.".format(key,value) )

1월은 31일이 있습니다.
2월은 28일이 있습니다.
3월은 31일이 있습니다.
4월은 30일이 있습니다.
5월은 31일이 있습니다.


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

0개의 댓글