이 글은 한빛미디어의 ⟪혼자 공부하는 파이썬 2019 개정판⟫을 참고하여 작성되었음을 알려드립니다.
변수를 선언하고 변수에 값을 할당하는 방법을 알아보겠다.
값을 저장할 때 사용하는 식별자이다.
변수를 활용하는 방법은 세 가지가 있다.
변수를 생성하는 것을 의미한다. 예를 들어, 이름을 저장할 변수를 만들고 싶다면 다음과 같이 선언할 수 있다.
name
이렇게 변수 이름만 적어주면 변수가 선언된다.
변수에 값을 넣는 것을 의미한다. 위에서 선언한 name 변수에 "John"이라는 값을 할당할 수 있다.
name = "John"
이렇게 변수 이름 옆에 등호(=)를 사용하여 값을 할당한다.
변수에서 값을 꺼내는 것을 의미한다. 위에서 name 변수에 "John"이라는 값을 할당했다면, 이 값을 참조하여 사용할 수 있다.
print(name) # 출력 결과: John
이렇게 변수 이름을 사용하면 변수에 저장된 값을 참조할 수 있다.(변수참조)
예를 들어, 나이를 저장하는 변수 age를 만들고, 값을 25로 할당한 뒤, 이 값을 참조하여 출력해보겠다.
age = 25 print(age) # 출력 결과: 25
이처럼 변수를 선언하고, 값을 할당하며, 참조하는 방법을 통해 프로그램을 만들 수 있다.
프로그래밍 언어 중 C, C++, JAVA, C# 등에서는 변수를 사용할 때 변수의 자료형을 미리 선언해야 한다.
int pi
그러나 파이썬은 변수에 자료형을 지정하지 않는다. 따라서 같은 변수에 여러 종류의 자료형을 넣을 수도 있다.
a="문자열" a=True a=10
유연해서 좋다고 말할 수도 있겠지만, 오히려 이러한 유연셩 때문에 변수에 어떠한 자료형이 들어 있는지 모르고 실수해서 실행 중에 TypeError를 발생할 확률이 높다. 따라서 하나의 변수에는 되도록 하나의 자료형을 넣어 활용하는 것을 권장한다.
변수를 활용할 때 기존의 연산자와 조합해서 사용할 수 있는 연산자이다. 자료형에 적용하는 기본 연산자와 = 연산자를 함께 사용해 다음과 같이 구성하는 연산자이다.
a += 10
이렇게 a+=10이라고 사용하면 a = a + 10이라고 하는 것과 같으 결과를 낸다.
숫자에 적용할 수 있는 복합 대입 연산자는 다음과 같다.
연산자 이름 | 설명 |
---|---|
+= | 숫자 덧셈 후 대입 |
-= | 숫자 뺄셈 후 대입 |
* = | 숫자 곱셈 후 대입 |
/= | 숫자 나눗셈 후 대입 |
%= | 숫자의 나머지를 구한 후 대입 |
* * = | 숫자 제곱 후 대입 |
문자열에 적용할 수 있는 복합 대입 연산자는 다음과 같다.
연산자 이름 | 설명 |
---|---|
+= | 숫자 덧셈 후 대입 |
* = | 숫자 곱셈 후 대입 |
명령 프롬프트에서 사용자로부터 데이터를 입력받을 때 input() 함수를 사용한다.
input("인사말을 입력하세요> ")
여기서 input 함수 괄호 안에 입력한 내용을 프롬프트 문자열이라고 하며, 사용자에게 입력을 요구하는 안내 내용을 의미한다.
해당 코드를 실행하면, 괄호 안의 텍스트가 뜨면서 프로그램이 종료되지 않은 상태로 대기에 들어간다. 이렇게 프로그램이 실행 도중에 잠시 멈추는 것을 블록(block)이라고 한다.
print(type(string)) <class 'str'>
앞서 input() 함수의 결과를 string이라는 변수에 대입한 코드이다. type() 함수를 사용하여 자료형을 알아보면, string 변수에는 '안녕하세요'라는 문자열을 입력해 대입했으니 당연히 자료형도 문자열이다. 문자열임을 나타내는 'str'로 결과가 확인되었다.
이후에 배울 True나 False와 같은 불(boolean)값을 입력해도 모두 문자열로 나온다.
input() 함수의 입력 자료형은 항상 문자열이다. 따라서, 입력받은 문자열을 숫자로 변환해야 숫자 연산에 활용할 수 있는데, 이를 캐스트(cast)라고 부른다.
자료형을 변환할 때 '변환할 수 없는 것'을 변환하려고 하면 ValueError 예외가 발생한다. 이런 현상이 발생하는 원인은 다음과 같다.
문자열로 변환하는 방법은 매우 다양한데, 그 중 하나로 str() 함수나 format() 함수를 활용하는 방법이 있다.
format() 함수는 문자열이 가지고 있는 함수이다. 형식은 다음과 같다.
"{}".format(10) "{} {}".format(10, 20) "{} {} {} {} {}".format(101, 202, 303, 404, 505)
중괄호{ }를 포함한 문자열 뒤에 마침표(.)를 찍고 format()함수를 사용한다. 여기서 중요한 규칙은 바로 '중괄호의 개수 = format 함수 괄호 안 매개변수의 개수' 이다.
위에서 말한 규칙을, 정확히는 '{ } 기호의 개수 > format() 함수의 매개변수 개수' 이면 IndexError 예외가 발생한다. 그럼 반대의 경우는 어떻게 될까? 만약, 매개변수가 { }보다 많다면, { }개수만큼 적용되고 나머지 매개변수는 버려진다. 그래서 아무 문제 없이 실행된다.
정리하자면,
다음은 이와 관련된 예시이다.
>> a = "Welcome to Hesther's Velog!" >> a.upper() 'WELCOME TO HESTHER'S VELOG!"
strip() 함수는 문자열 양옆의 공백을 제거한다. 여기서 말하는 공백이란, '띄어쓰기', '탭', '줄바꿈'을 모두 포함한다.
※lstrip(), rstrip() 함수는 거의 사용하지 않는다.
문자열이 소문자, 알파벳, 숫자 등등 어떤 것으로만 구성되어 있는지 등을 확인할 때는 is로 시작하는 이름의 함수를 사용한다. 아래 목록을 통해 확인해보자.
관련 사이트도 첨부한다.
문자열 내부에서 특정 문자가 어디에 위치하는지 확인할 때 사용하는 함수이다.
>> output_a = "열정열정파이팅", find("열정") >> print(output_a) 0
>> output_b = "열정열정파이팅", rfind("열정") >> print(output_b) 2
출력값이 이렇게 나오는 이유는 다음과 같다.
0 1 2 3 4 5 6
열정열정파이팅
문자열은 가장 앞글자를 0번째라고 세기 때문에, 처음 "열정"은 0번째 있는 것이고, 두 번째 "열정"은 2번째부터 등장하는 것이다.
문자열 내부에 어떤 문자열이 있는지 확인할 때 사용하는 연산자이다. 출력결과는 True(맞다) 또는 Flase(아니다)로 나온다.
>> print("사랑" in "사랑합니다") True
>> print("감사" in "사랑합니다" False
문자열을 특정한 문자로 자를 때 사용하는 연산자이다.
>> a = "10 20 30 40 50".split(" ") >> print(a) ['10', '20', '30', '40', '50']
위의 예시 코드에서는 split() 함수 괄호 안의 문자열인 공백(띄어쓰기)를 기준으로 자른다.
실행 결과로 리스트(list)가 나온다.