좀 더 쉽게 프로그래밍을 배울 수 없을까
3주차
###
- 강의 진도 : 챕터 6 - 8 ( 리스트, 반복문 , 모듈)
- 숙제 검사 :
- 숫자를 입력받아 정수인지 소수인지 출력해주는 함수 만들기. - 숙제
- 왼쪽 상단이 직각인 직각 삼각형 별 기호로 출력하기. 첫 줄 별이 20개, 마지막 줄 별은 1개 - 숙제
- 알고리즘 연습 - 핸드폰 번호 가리기
리스트
List
- 리스트가 나온 이유
- 하나의 변수에 여러 개의 값을 저장할 수 없을까?
- 여러개의 값을 담을 수 있는 변수
- list1 = [1,2,3,4,5]
- 값 읽어오기
- 리스트를 사용할때는 0번째가 첫번째
- 첫번째 값 list1[0]
- 두번째 값 list1[1]
- 뒤에서 첫번째 값 list1[-1]
- 뒤에서 두번째 값 list1[-2]
- 리스트에 들어있는 값 보다 큰 값을 읽어오려고 하면 에러
- 예. 위의 list1에서 list1[5] 또는 list1[-6]은 에러
- 값 쓰기
- 변수와 같이 list1[0]=10이라고 하면 list의 첫번째 값이 10으로 변경
리스트에 새로운 값을 추가 하는 방법
- list1=[1,2,3]
- append()를 이용
list1.append(4)
- 새로운 리스트를 더하기
- list2=list1+[4]
- list1은 그대로 두고, 새로운 리스트를 만들어 낸다.
- 리스트에 값이 들어있는지 확인하는 방법
- in 연산을 이용
n=12
if n in list1:
print('{}가 리스트에 있다.'.format(n))
####리스트에서 필요 없는 값을 지우는 방법
- del을 이용해서 특정 위치의 값을 지우기
- del list1[10] 리스트의 10번째 값을 지워라
- remove를 이용해서 특정 값을 지우기
- list1.remove(40)을 하면 리스트에 40이라는 값이 있는경우 삭제
- 여러개의 값이 있는 경우 가장 앞에 있는 하나만 지워짐
for 반복문
for in list 형
리스트에서 값을 하나씩 가져오는 기능
for number in number_list: print (number)
for in range 형
수 집합을 만들어서 하나씩 넘겨주는 기능
for i in range(5):
print(i)
enumerate
리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능
names = ['철수', '영희', '영수'] for i, name in enumerate(names): print('{}번: {}'.format(i + 1, name))
모듈
- 혹시 test.py tryhelloworld.py와 같은 파일을 작성하면서 .py가 의미하는 게 무엇인지 생각해본적 있나요?
- 지금까지 다루었던 .hw, .excel 파일들과는 달랐는데요.
- 무심코 지나갔을 수도 있지만, .py라는 확장자는 .python의 약자입니다.
파이썬 코드가 담겨있는 파일이라는 뜻이죠. 파이썬 모듈이라고도 합니다.
- 모듈이란 단어는 낯설게 느껴지지만 파이썬에서는 코드가 작성된 파일을 모듈이라고 합니다.
- 당연하지만 파이썬 모듈이 되려면 .py를 붙이는 것이 필수입니다.
- 왜 모듈이란 개념이 필요할까?
- 지금처럼 5줄 10줄을 코드만 필요하다면 필요할 때마다 코드를 덧 붙여 작성하면 됩니다.
- 하지만.. 1만 줄의 코드를 하나의 파일에 작성해야 하면 어떨까요.
- 원하는 코드를 찾으려고 스크롤을 내리다가 하루가 갈겁니다.
- 그러면 파일을 나누어서 작성해보자. 파일을 여러개로 작성하면서 나온 개념이 모듈입니다.
- 그렇지만 모듈이 만들어지고 나서 문제가 생겼습니다.
- 1만 줄의 코드를 1000줄씩 10개의 모듈에 나누었습니다.
- 그리고 모듈1에 있는 A라는 함수를 모듈 2에서 쓰고 싶은데 가져올 방법이 없습니다.
- 그래서 등장한 것이 from, import이라는 개념입니다.
윤수.work
와 같이 모듈 이름 옆에 .을 붙여서 모듈 속에 있는 코드를 내가 쓰고 싶은 곳으로 가져올 수 있는 것이죠.
import 윤수
윤수.work()
from 윤수 import work
work()
실습 예제
####반복문
- (문자열 함수 직접 만들기)
line = "I am student"
에서 s의 인덱스값 찾는 find함수. line = "Africa americano argus apartment applejam."
에서 a가 총 몇 번 등장했는지 찾는 count 함수.list1 = ['1', '2', '3']
라는 문자로 이루어진 리스트를 [1, 2, 3]으로 바꿔주기.
list1 = ['1', '2', '3']
for i, x in enumerate(str_list):
list1[i] = int(x)
모듈
- “ys.py”, “lucy.py” 라는 모듈에 각각 함수를 만들어 서로 불러와보기.
def hello(): print(“Hi from yunsoo”) def hello(): print(“Hi from lucy”) ```
도전 문제
숫자야구 게임 파이썬 좋은 예제 참고
게임 소개
컴퓨터는 랜덤으로 1~9사이의 3개의 수를 순서있게 고릅니다. 사용자는 총 5번의 기회를 가지고 정답을 시도할 수 있습니다. 이때 각 도전마다 컴퓨터는 사용자에게 볼과 스트라이크라는 힌트를 줍니다. 스트라이크는 컴퓨터가 선택한 수와 사용자가 선택한 수가 순서도 같고 숫자도 같을 때. 볼은 순서는 다르지만 숫자가 같을 때. 예를 들어 컴퓨터 = 1 2 3 사용자 = 1 3 9
사용자의 1번 숫자는 자리수와 숫자가 일치하므로 1 스트라이크 2번 숫자는 자리수는 틀렸지만 3이라는 숫자가 컴퓨터 숫자에 존재하므로 1 볼 3번 숫자는 자리수와 숫자 모두 틀렸기 때문에 아무 힌트도 안줌. 그래서 컴퓨터는 위의 과정을 거쳐 사용자에게 1스트라이크 1볼이라는 정보만 알려줍니다.
코딩 힌트 순서
- 랜덤 숫자 3개 생성하기
- 숫자 입력 받기
- 문자열로 받은 입력을 숫자로 바꿔주기
- 스트라이크 맞힌 상태 알려주기
- 볼 맞힌 상태 알려주기
- 숫자 입력을 연속해서 무한대로 받기
- 게임 횟수 세기 count
- 함수로 만들기. game_start()