- end = ‘_’ 의 의미 : 출력이 마치고 나면 줄 바꾸는 것 대신에 _를 출력해주세요.
3) 줄 바꾸지 않고 한 줄에 표시하기 2
- 출력이 마치고 나면 줄 바꾸는 것 대신에 띄어쓰기 공백을 출력해주세요.
[5-3. 리스트형 데이터의 연산 : 인덱싱 연산]
1) 리스트의 덧셈
- 리스트는 수가 아니라 문자열이기 때문에, 사칙연산을 하지 않고 리스트가 합쳐지는 것임
2) 리스트의 곱셈
- 앞서 언급했듯이, 리스트는 숫자가 아니라 문자열이기 때문에 2배를 했다는 것은 상수곱이 아니라 리스트를 2번 열거하라는 뜻
<연습문제 05-1> ▶ 문제 1. 프롬프트상에서 다음과 같이 리스트를 선언하고, 인덱싱 연산을 이용해서 이 리스트에 담긴 내용을 하나씩 차례로 출력해보자. >>> st = [1, 2, 3, 4]
▶ 문제 2. 프롬프트상에서 다음과 같이 리스트를 선언하고, 인덱싱 연산을 이용해서 이 리스트에 담긴 내용을 하나씩 출력해보자. 단, 이번에는 인덱스 값을 음수만 사용하자. >>> st = [1, 2, 3, 4]
▶ 문제 3. 프롬프트상에서 다음과 같이 리스트를 선언하고, 이 리스트에 담긴 값을 모두 1씩 증가시켜보자. >>> st = [1, 2, 3, 4] 이번에도 인덱싱 연산을 통해서 값을 증가시키면 된다. 즉 총 네 번의 인덱싱 연산을 통해서 하나씩 값을 증가시키면 된다.
▶ 문제 4. 프롬프트상에서 다음과 같이 리스트를 선언하고, 이 리스트에 담긴 값을 모두 1씩 증가시켜보자. >>> st = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 그런데 이번에는 리스트 안에 담겨 있는 값이 많다. 총 10개다. 따라서 for 루프를 이용해서 이 문제를 해결해보자. 이는 10회 반복하는 for 루프를 작성하면 쉽게 해결할 수 있는 문제이다. (만약에 해결하지 못했다면 답을 보고서 이해하고 기억하자!)
▶ 문제 5. 프롬프트상에서 다음과 같이 리스트를 선언하고, 첫 번째 값과 마지막 값을 교환하는 문장을 만들어보자. >>> st = [1, 2, 3, 4, 5, 6] 다음과 같이 실행하면 두 변수에 저장된 값이 서로 바뀐다는 사실을 근거로 이 문제를 해결해보자. 참고로 다음과 같이 하면 두 변수에 저장된 값이 교환됨은 1장에서 소개하였다. >>> x, y = 2, 7 >>> x, y = y, x >>> print(x, y) 7 2
[5-4 ~ 6. 리스트형 데이터의 연산 : 슬라이싱 연산]
1) 리스트에서 두 칸씩 뛰면서 저장된 값들 꺼내기
- st2 = st1[0:9] : st1에 들어있는 리스트 중에서 0번째부터 9번째 자리 즉, st1[0] ~ st2[8]까지 뽑아내기
- st1[0]부터 st1[8]번째 자리까지 뽑아내는데, 그 중 2칸 씩 건너뛰며 뽑아라
- 위에 2에서 3만 바꾼 것
- 3칸 씩 건너뛰며 뽑아라
<연습문제 05-2>
▶ 문제 1. 다음 리스트를 대상으로 2와 4를 삭제하는 문장을 만들어보자. (이 경우 2와 4를 삭제하려는 노력보다 2, 3, 4를 3 하나로 교체하려는 노력을 해보면 어떨까?) st = [1, 2, 3, 4, 5] 왜 오류가 뜨는지 잘 모르겠음
▶ 문제 2. 다음 리스트를 대상으로 3과 4 사이에 3.5를 넣어보자. (이 경우 값을 끼워 넣을 생각을 하지 말고 일부 내용을 교체할 생각을 해보면 어떨까?) st = [1, 2, 3, 4, 5]
▶ 문제 3. 다음 리스트를 대상으로 2, 3, 4를 삭제해보자 st = [1, 2, 3, 4, 5] 이 문제를 해결하는 방법에는 몇 가지가 있는데, 여기서는 빈 리스트로 2, 3, 4를 대체하는 방법을 선택하자.
▶ 문제 4. 다음 리스트가 담겨 있는 값을 전부 지워보자. 즉 다음 리스트를 텅 빈 리스트로 만들어보자 st = [1, 2, 3, 4, 5]
▶ 문제 5. 다음 리스틀르 대상으로 홀수 번째 위치에 저장된 값들만 뽑아서 새로운 리스트르 만들어 변수 n에 저장하는 코드를 작성해보자. 그러니까 다음 리스트를 통해서 새로 만들어야 할 리스트는 [1, 3, 5, 7, 9]이다. st = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
▶ 문제 6. 다음 리스트를 대상으로 짝수 번째 위치에 저장된 값들만 뽑아서 새로운 리스트를 만들어 변수 n에 저장하는 코드를 작성해보자. 그러니까 다음 리스트를 통해서 새로 만들어야 할 리스트는 [2, 4, 6, 8, 10]이다. st = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[5-7. 스트링형 데이터 : 문자열]
- 파이썬에서 문자열을 표현하는 방법 : 큰 따옴표로 묶기
- 작은 따옴표로 출력되는 것을 볼 수 있음
- 어떤 따옴표로 묶든 상관 없이 문자열로 표출됨
- 문자열 : 그 자체로 문자들을 묶어놓은 데이터
- 위와 같이 숫자를 묶어서 문자열을 표현하면, 이는 정수가 아닌 문자들의 모임인 문자열로 인식
- 문자열도 파이썬이 인식하는 데이터의 한 종류임을 확인해보기
- 문자열의 데이터형을 확인하기 위해 type 함수 호출
- str : 스트링형 데이터 (문자열)
- int형 데이터 ex) 3, 5, 7, 9 - float형 데이터 ex) 2, 2, 4, 4, 6, 6, 8, 8 - 리스트형 데이터 ex) [3, 5, 7, 9], [2, 2, 4, 4, 6, 6, 8, 8] - 스트링형 데이터 ex) “I am a boy.”, “You are a girl”
▶ 문제 1. input 함수는 프로그램 사용자가 입력한 내용을 문자열의 형태로 반환한다는 사실을 본문에서 설명하였다. 따라서 이를 근거로 다음의 실행 흐름을 보이는 예를 작성해보자. (아래의 실행 흐름에서 12와 34는 프로그램 사용자가 입력한 값이다.)
>>>________________ 첫 번째 입력 : 12 >>>________________ 두 번째 입력 : 34 >>>_________________ 세 번째 입력 : 1234
위의 실행 흐름에서는 프로그램 사용자가 12와 34를 입력하였다. 그리고 이 둘을 합쳐 1234라는 결과를 만들어서 이를 출력하였다. 자! 그럼 이러한 실행 흐름이 진행되도록 위의 빈 공간을 채워보자.
[3-2. 입력받은 내용을 숫자로 바꾸려면]
1) input 함수 : 수(실수 또는 정수)가 아닌 오직 문자열로
2) This year에 2020을 집어넣겠음
3) eval : 문자를 수로 변환시켜주는 함수, 즉 2020이 수로 변환됨
4) 내년은 year에 1을 더하라는 함수를 입력, Next year을 나타내라
input과 eval을 함께 쓰는게 더 보편적이고 편리한 방법
<연습문제 03-2>
▶ 문제 2. eval 함수와 input 함수를 잘 묶어서 사용하면 프로그램 사용자로부터 산술 연산이 가능한 '수'를 입력 받을 수 있음에 대해 본문에서 설명하였다. 따라서 이를 근거로 다음의 실행 흐름을 보이는 예를 작성해보자. (아래에서 1.24와 3.12는 프로그램 사용자가 입력한 값이다.)
>>>___________________ 첫 번째 입력 : 1.24 >>>___________________ 두 번째 입력 : 3.12 >>>___________________ 세 번째 입력 : 4.36
위의 실행 흐름에서는 프로그램 사용자가 입력한 두 실수 1.24와 3.12를 대상으로 산술 덧셈이 진행 되었음을 알 수 있다. 그럼 이러한 결과를 보이도록 위의 빈 공간을 채워보자.
[3-3. 강력한 그러나 위험할 수 있는 eval 함수]
1. 굉장히 위험한 함수 eval
1) 프로그래머가 1번을 누르면 a가 나오고, 2번을 누르면 b가 나오고, 3번을 누르면 c가 나온다고 프로그래밍 한 상황.
2) eval 함수를 쓰게 되면 1번을 누를 때 자기 맘대로 해석하고, 분석하고, 계산해서 d나 e를 불러올 가능성이 있음
3) 즉, 프로그래머가 의도하지 않게 호출될 수 있음 (해킹, 버그 등)
[3-4. 정해진 횟수만큼 반복해서 실행시키기]
>>> sum = 0 >>> for I in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + I >>> print(sum) 55
<연습문제 03-3>
▶ 문제 1. 1, 3, 5, 7, 9의 합을 계산해서 그 결과를 출력하는 코드를 for 루프를 기반으로 작성해보자.
▶ 문제 2. 1부터 10까지의 곱의 결과를 계산해서 그 결과를 출력하는 코드를 for 루프를 기반으로 작성해보자.
▶ 문제 3. 구구단에서 7단 전부를 출력하는 코드를 for 루프를 기반으로 작성해보자.
▶ 문제 4. 구구단 7단을 전부 출력하되, 거꾸로 (7 x 9 = 63) 출력하는 for 루프를 기반으로 작성해보자.