반응형

문자열 12

TypeError: 'str' object does not support item assignment 해결법

개요 다음과 같은 문자열 a가 있다고 가정해보겠습니다. a = 'abcde' a의 3번 인덱스 위치의 'd'를 'g'로 바꾸려고 시도해보려는데, 다음과 같이 에러가 발생하였습니다. a[3] = 'g' # TypeError: 'str' object does not support item assignment 원인 자료형 종류에는 수정이 가능한 객체인 mutable 타입(리스트, 딕셔너리 등)이 있고, 수정이 불가능한 객체인 immutable 타입(튜플, 문자열 등)이 있는데 문자열은 immutable 자료형이라서 위와 같이 인덱싱(혹은 슬라이싱)을 통한 값 수정이 불가능한 것입니다. 해결 방법 1. 문자열 수동 할당 문자열 덧셈 연산으로 이어 붙이기가 되는 점을 이용하여 재할당을 해주는 방법입니다. 다만, ..

Python/Debugging 2022.10.26

[C언어] 배열, 문자열 슬라이싱 구현 예제

파이썬 등의 일부 프로그래밍 언어에서는 다음과 같이 특정 위치 부분을 추출하는 "슬라이싱"이라는 기능을 제공합니다. list_a = [1, 3, 5, 7, 9] str_a = "hello world!" # 파이썬 슬라이싱 예시 print(list_a[1:4]) # [3, 5, 7] print(str_a[2:6]) # "llo " 그렇다면 C언어에서도 배열이나 문자열에 대하여 위와 같은 슬라이싱을 적용할 수 있을까요? 결론부터 말씀드리면, 포인터 및 동적할당을 통하여 간접적인 방법으로는 가능합니다! 여기서는 정수 배열 및 문자열에 대하여 슬라이싱 기능을 하는 함수를 구현해보도록 하겠습니다. C언어 배열 슬라이싱 구현 arr_slicing(arr, start, end) 형태로 int 자료형 배열 arr, 시..

C & C++ 2022.09.23

파이썬 문자열 인덱싱, 슬라이싱 방법 총정리

python의 string 자료형에서 일부를 추출하는 인덱싱과 슬라이싱에 대하여 경우의 수를 총망라하여 이해하기 쉽게 정리해보도록 하겠습니다. 파이썬 문자열 인덱싱 방법 인덱싱은 문자열 전체에서 특정 위치에 해당하는 1글자만을 가져오는 과정을 의미합니다. 기본 인덱싱 방법 기본적으로 문자열[인덱스 위치 번호] 형태로 해당 위치의 글자를 가져오게 되는데 이 때 가장 앞 문자의 인덱스 번호는 0이 기준이 되는 점을 유의해주세요. 대표적인 문자열 인덱싱 예시는 아래와 같습니다. a = "0123456789" b = "hello world!" # a의 1번째, 6번째 글자 인덱싱 print(a[0]) # '0' print(a[5]) # '5' # b의 2번째, 7번째 글자 인덱싱(공백도 자리에 포함됨에 유의) ..

[C++] 문자열 string vs char 배열 선언 방식 비교

C++ 문자열 string vs char array 차이 비교 예제 C++에서 문자열을 string으로 선언하는 경우와 char 배열로 선언하는 경우의 예시 코드를 토대로 두 경우의 차이를 비교해보도록 하겠습니다. string 선언 방식의 문자열 C++에서는 헤더 파일을 포함하게 된다면 string 타입으로 문자열을 선언하여 매우 편리하게 다룰 수 있게 됩니다. 해당 타입으로 문자열을 선언 뒤, 일부 글자를 수정해보고 문자열의 길이를 출력해보는 예시 코드는 아래와 같습니다. #include #include using namespace std; int main() { // 문자열 선언 string a = "hello!\n"; cout

C & C++ 2022.06.13

[C언어] 정수 배열 및 문자열에서 중복 원소 찾기, 중복 제거 방법

C언어 배열 중복 탐색 및 제거 예제 C언어의 정수가 저장된 배열 혹은 문자열에서 2번 이상 등장한 값들의 목록을 찾는 방법과 중복을 제거하여 고유값만 남기는 방법에 대해서 다루어보도록 하겠습니다. 숫자(정수) 배열 내 중복 원소 찾기 가정 : 배열 a 내에는 0~n까지의 범위 내에서 정수가 등장할 수 있습니다. 풀이법 : n+1 사이즈의 등장 횟수 배열 check를 선언 후, a 배열의 원소를 순회하며 각 인덱스에 해당 숫자의 등장 횟수를 카운팅하고, 2 이상인 인덱스들만을 모아서 반환합니다. 0~4 범위에서 정수가 등장할 수 있는 경우의 간단한 예제에 대한 원리는 다음 그림처럼 표현할 수 있습니다. 해당 예제의 실제 C언어 구현 코드는 아래와 같습니다.(각 줄 코드의 설명은 주석을 참고하세요!) #i..

C & C++ 2022.06.06

[C언어] 2차원 배열 선언, 값 접근/수정/출력 방법 및 문자열 배열

C언어 2차원 array 사용 방법 예제 이번 글에서는 C언어에서 2차원 배열을 선언하는 방법과 주요 특징을 먼저 살펴본 뒤, 값에 접근, 수정 및 출력하는 과정을 다루어보고 2차원 배열의 특수 케이스인 문자열(string) 배열에 대해서까지 말씀드려보도록 하겠습니다. 2차원 배열 선언, 특징 C언어에서 2차원 이상의 다차원 배열 선언 방법은 자료형 변수명 [1차 배열 크기][2차 배열 크기]... = {값} 형식으로 코드를 작성해주시면 됩니다. 아래는 2 * 3 크기의 int 2차원 배열과 3 * 4 크기의 double 2차원 배열을 선언한 예시입니다. #include int main(){ /* [[1, 2, 3], [4, 5, 6]] 꼴의 2차원 정수 배열 */ int arr1 [2][3] = { {..

C & C++ 2022.04.17

[C언어] 문자열 선언 방법 정리(배열, 포인터)

C언어 string 배열 및 포인터 선언 예제 및 특징 비교 C언어에서 문자열(string) 자료를 char 배열로 선언하는 경우와 포인터를 이용하여 선언하는 경우의 예시 코드를 살펴보고, 이 두 문자열 선언 경우의 특징을 비교해보도록 하겠습니다. 배열(array) 이용 문자열 선언 예시 C언어에서는 C++과 달리 string을 직접적으로 다룰 수 있는 자료형이 없어 각 글자에 대한 char 변수들의 배열 혹은 포인터 형태로 선언을 해야합니다. 그렇다면 먼저 array를 통한 문자열 선언 방법을 살펴보겠습니다. char 배열을 통한 string 선언을 그림으로 도식화하면 다음과 같습니다. 편의상 메모리 주소는 200부터 시작하는 것으로 가정하였습니다. 각 글자를 나타내는 char 자료형의 크기는 1 바이..

C & C++ 2022.04.05

TypeError: 'list' object is not callable 원인과 해결법

파이썬 object is not callable 에러 디버깅 리스트 인덱싱 등 과정에서 자주 등장할 수 있는 오류 종류인 '~~ object is not callable' 종류의 오류의 의미와 원인에 대해서 살펴보고 해결 방법을 파헤쳐보도록 하겠습니다. 오류 의미, 원인 이해를 돕기 위하여, 아래와 같은 아주 간단한 리스트와 함수를 생각해보도록 하겠습니다. x = [1, 2, 3] # 리스트 def double(num): # 함수 return num * 2 x[0] # 리스트 인덱싱 double(1) # 함수 호출 리스트에서 자료를 추출하는 인덱싱 과정에서는 [] 모양의 괄호가 사용되고, 함수에 input을 넣어 호출하는 과정에서는 () 모양의 괄호가 사용되는 것을 알 수 있습니다. 그렇다면 만약 인덱싱..

Python/Debugging 2022.03.30

파이썬 별찍기 간결 코딩 예제 : 피라미드, 역삼각형, 다이아몬드, 모래시계

파이썬 별찍기 구현 예시 파이썬에서 단 한 줄의 코드로 피라미드, 역삼각형 모양의 별찍기를 구현하고 다이아몬드, 모래시계도 비슷한 원리를 통해서 매우 간결한 코드로 별찍기를 구현한 예제를 다루어보도록 하겠습니다. 정방향 피라미드 모양 별찍기 여기서는 6줄의 별찍기 출력 결과를 기준으로 작성해보도록 하겠습니다. 우선, 피라미드 모양의 각 줄은 아래의 형태의 구성으로 되어있음을 이해해봅시다. * # 공백 5칸 + 별 1개 *** # 공백 4칸 + 별 3개 ***** # 공백 3칸 + 별 5개 ******* # 공백 2칸 + 별 7개 ********* # 공백 1칸 + 별 9개 *********** # 공백 0칸 + 별 11개 아래로 한 줄씩 내려갈수록 공백은 1칸씩 줄고, 별은 2개씩 늘어나는 형태입니다. ..

아스키(ASCII) 코드 표, 문자열 대소비교 원리

아스키코드 표 C언어 char 문자형 등에서 사용되는 아스키코드 표의 0 ~ 127번까지 해당되는 문자는 아래 표처럼 정리할 수 있습니다. 이중 높은 빈도로 사용되는 문자들은 색깔로 표시해두었는데요. 크게 순서를 정리하면 제어문자 < 숫자 < 영어대문자 < 영어소문자 순서로 위치하고 있는 것을 확인하실 수 있습니다. 이 외에 다른 문자들은 군데군데 사이에 껴있기는 하지만, 비교에서 높은 빈도로 사용되지는 않기에 유의미하게 기억해두실 필요는 없습니다. 0~32번까지는 제어문자라고 특수 기능을 하는 문자들이 매칭되어 있습니다. 물론, 이 문자들에서도 특수 문자를 따로 매칭해주어 출력이 가능하게 해주는 경우도 있다는 점을 참고해주세요. 문자열의 끝을 의미하는 NULL문자는 0번, 공백은 32번에 위치하고 있음..

반응형