좀 더 쉽게 프로그래밍을 배울 수 없을까


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()

실습 예제

####반복문

  1. (문자열 함수 직접 만들기) line = "I am student"에서 s의 인덱스값 찾는 find함수.
  2. line = "Africa americano argus apartment applejam." 에서 a가 총 몇 번 등장했는지 찾는 count 함수.
  3. list1 = ['1', '2', '3'] 라는 문자로 이루어진 리스트를 [1, 2, 3]으로 바꿔주기.
list1 = ['1', '2', '3']
for i, x in enumerate(str_list):
    list1[i] = int(x)

모듈

  1. “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볼이라는 정보만 알려줍니다.

코딩 힌트 순서

  1. 랜덤 숫자 3개 생성하기
  2. 숫자 입력 받기
  3. 문자열로 받은 입력을 숫자로 바꿔주기
  4. 스트라이크 맞힌 상태 알려주기
  5. 볼 맞힌 상태 알려주기
  6. 숫자 입력을 연속해서 무한대로 받기
  7. 게임 횟수 세기 count
  8. 함수로 만들기. game_start()

정답 코드는 여기에

질문거리 3가지 적어보기






© 2017. by yunsu

Powered by dolphin