[4장 연습문제]



함수 - Q1

시선에 따라 문제가 헷갈릴 수도 있는데(저처럼..)아래와 같이 번역하여 이해하는 게 좋은 것 같습니다.


입력 정수 n이하의 피보나치 수열을 구하라 -> 입력 정수n항 이하의 피보나치 수열을 구하라(n=0,1,2 ....)


재귀함수를 쓰려면 초기 종료 조건이 필요한데, 피보나치 수의 정의에 따르면 전 항+ 전전항 숫자의 합이므로 첫번째, 두번째 항은 무조건 0,1로 주어져야 하기 때문에 이를 이용해 종료조건 코드를 작성할 수 있습니다. 전체 코드는 간결합니다.


* 3번 째 항의 피보나치 수: 2

               



파일 읽고 쓰기 - Q1

sample데이터를 텍스트 파일에 미리 만들어 놓고 주어진 힌트 소스코드를 완성하여 프로그램을 작성하는 방식과

sample.txt의 데이터를 input함수로 입력하고 write한 뒤 읽어들이는 식으로 프로그램을 작성할 수 있습니다. 


이 문제를 풀기 위해서는 다음 2가지를 이해하고 있어야 합니다.

1. 파일 입출력의 write함수는 데이터를 무조건 문자열(str) 자료형만 사용할 수 있다.

2. 파일 입출력의 read함수로 데이터를 읽어들이기 위해 int로 형변환하여 파일속 숫자를 읽어들여야한다.

(텍스트 파일에 숫자가 저장되어 있지만 실제로는 int형이 아닌 문자열 자료형으로 입력되었기 때문입니다.)


1. 정답 코드(sample.txt에 데이터를 미리 넣어둔 뒤 read->write하는 방식)

13행에서 문자열로 형변환하여 데이터를 write해야합니다.



만약 13행을 아래 처럼 작성하면 write함수는 문자열만 가능하다고 오류가 뜹니다.

             



2. 응용 코드(샘플 데이터를 write하여 넣어둔 뒤 read->write하는 방식)

4행에서 '\n'을 넣어주지 않으면 sample.txt에 데이터가 한 줄로 저장이 되어버립니다.


                   








'점프 투 파이썬' 카테고리의 다른 글

3장 연습문제  (0) 2021.01.07
2장 연습문제  (0) 2021.01.06


[3장 연습문제]


Q1- if문과 Q1-while문 연습문제는 헷갈릴만한 부분들을 응용하여 추가 작성하였습니다.



if문 - Q1

코드를 해석하면 "shirt"가 출력됩니다. 헷갈릴 수 있는 부분은 if~if~else문 구조가 아닌 if~elif~else 구조이기 

때문에 "need"는 출력되지 않는 점입니다.  


1) 정답 코드

                 


2) "need"까지 출력하기 위한 코드

               


while문 - Q1

i와 if문이 힌트로 주어졌기 때문에 i<=5까지 각 라인에 별을 찍고 i>5가 되었을 때 반복문을 탈출합니다.

별찍기의 경우 예전에 많이 풀어봤던 유형이라 가볍게 역방향 별찍기 코드도 구현해 보았습니다.


1) 정답 코드

                 


2) 역방향 별찍기

              


for문 - Q1

힌트 코드를 이용하여 쉽게 구현할 수 있습니다.

             


'점프 투 파이썬' 카테고리의 다른 글

4장 연습문제  (0) 2021.01.12
2장 연습문제  (0) 2021.01.06


[2장 연습문제]


문자열 - Q1

슬라이싱 이용


             



문자열 - Q2

인덱싱 이용


           


리스트 - Q1

reverse함수는 리스트를 자동으로 전체 정렬해주지 않기 때문에 [5,4,3,2,1]로 만들기 위해 sort-> reverse과정을 거칩니다.


                 


리스트 - Q2

낯선 문법이었는데, 사용자가 정의한 문구(" ")를 이용해 리스트를 문자열로 만들 수 있습니다.


           


튜플 - Q1

튜플은 +기호를 이용해 원소를 추가할 수 있는데, 하나의 원소를 갖는 튜플은 괄호 안 원소 뒤에 쉼표(,)를 추가해야 하므로  

아래와 같이 표현할 수 있습니다.


                     


딕셔너리 - Q1


          


집합 - Q1

집합 자료형은 원소가 중복될 수 없고 정답이 리스트 꼴로 되어있기 때문에 리스트->집합->리스트꼴로 변환하여 출력합니다.


             


변수 - Q1

다음 코드의 결과 및 이유 


                 


a와 b 모두 같은 [1,2,3] 리스트 객체를 가리키고 있기 때문에 a의 원소값이 변하면 b의 원소값도 같이 변합니다.


참고) a[1]을 변동시키되 b값은 처음 [1,2,3]을 유지하기 위해 다음 2가지 방법으로 구현할 수 있습니다.


1.  [:] 이용

a의 값을 모두 복사하여 b에 저장하기 때문에 a와 b가 가리키는 리스트는 각각 다르기 때문입니다.

                


2. copy모듈

b= copy(a)는 b=a[:]와 동일하기 때문에 1번방법과 결과가 동일합니다.


           



'점프 투 파이썬' 카테고리의 다른 글

4장 연습문제  (0) 2021.01.12
3장 연습문제  (0) 2021.01.07

+ Recent posts