brunch

You can make anything
by writing

C.S.Lewis

by 김지영입니다 Jan 16. 2024

외계어 배우기 - 문제#1 WordCount:정수,변수

Python을 배워봅시다

지난 시간에 이어 첫 번째로 주어진 문제를 풀기 위해 공부해 보자.


우선, 지난 시간에는 문자열 값에 대해 배운 것을 정리하였고, 이번 시간에는 숫자 값에 대해 배운 것을 정리해 볼 것이다.


파이썬에는 숫자를 나타내는 두 가지 데이터 타입이 있는데, 정수(interger, 소수점이 없는 숫자)와 부동소수점(float, 실수를 표현할 때 소수점의 위치를 고정하지 않는 것) 수이다.

덧, 부동소수점이라는 말은 많이 들어봤는데 그에 해당하는 영어 표현이 float인 것을 처음 알았다.


숫자에도 역시 우리가 익히 잘 알고 있는 사칙연산을 적용할 수 있다. +, -, * 연산을 사용할 수 있으며 나눗셈의 경우 /, //, % 연산을 사용할 수 있다.


여기서 특별히 기억해야 하는 것은 나눗셈의 경우인데, /(division) 연산자의 경우 일반적인 나눗셈을 의미하며 소수점 아래 부분까지 표기한다. //(floor division) 연산자의 경우 나머지는 버리고 몫만 구한다. 나머지는 버리고 몫만 구하다 보니 값은 더 작아진다(왼쪽으로 이동)고 생각하면 좋다. %(mod) 연산자는 나머지만 보여준다. 예를 들면,


여기서 정수가 아닌 소수점이 있는 부동 소수점 수가 나타난다.


부동 소수점 수는 문제#2에서 다시 이야기하기로 하고, 여기서는 정수만! 여하튼, 또한 파이썬은 일반적인 수학(산수?) 문제를 풀 때와 같이 우선순위 규칙을 따른다. 즉 곱셈과 나눗셈을 덧셈과 뺄셈보다 먼저 한다는 것이다.


그렇기 때문에 코딩을 할 때 가급적 우선순위가 높은 연산에 괄호( )를 치는 습관을 들이는 것이 헷갈리지 않고 더 좋다. 아참 연산자 앞뒤에 공백은 꼭 필요한 것은 아니지만 가독성을 위해 적용하는 것이 좋다. 지금은 나 혼자만 보는 코드를 작성하며 공부하고 있지만, 나중에는 모두가 볼 수 있는 코드를 작성하게 될테니...(라고 선생님이 말씀하셨다)


덧, 책에서 잠시 이진법이 나와 선생님께 들었으나 이 부분은 차후 따로 조금 더 자세히 공부해 보겠다.

Chatpy가 정리해 준 내용. 아직 print 문에 대해서는 정리하기 전인데... 얘가 순서를 모르네~


자, 그럼 이제 변수에 대해 알아보자.


변수(variables)란 무엇일까? 선생님께서 변수란 쉽게 말해 메모리 주소의 별명이라고 이야기해 주셨다. 변수는 값을 대신하는 이름이며, 주소는 특정 공간을 의미하기 때문에 메모리(데이터?)를 보관한 공간의 별명이라고 생각하면 될 것 같다. 주소를 할당하다는 것은 공간을 확보한다는 의미인데, 파이썬에서는 등호 기호 =를 이용하여 값을 할당한다.


할당문(assignment statement)은 이런 식이다.


주의할 점은 변수는 한 번에 하나의 값만 대신한다는 점이다. 또한 변수명은 값의 의미를 부여할 수 있는 이름으로, 누구나 이름만 봐도 어떤 값을 나타내는지 알 수 있게 간단하고 의미 있게 지어야 한다. 파이썬의 변수명은 소문자로 시작해야 하며 언더바(_)와 숫자를 포함할 수 있다.

덧, 변수 이름은 대소문자를 구분한다. 즉, myVariable, myvariable은 모두 다른 변수이다. 그리고 변수명은 숫자로 시작할 수 없다고 한다.

이전에 말했듯, 변수는 한 번에 하나의 값만 대신한다. 그래서 만약 위에서 할당된 dollars의 값을 바꾸고 싶다면 다시 할당문을 작성해주어야 한다.

위의 코드에서 볼 수 있듯이, 처음 dollars에는 250을 할당하였다. 그 후 dollars를 dollars + 1로 재할당하여 dollars가 값 251을 대신한다. 이후 다신 dollars를 dollars + 1로 재할당하였고 dollars는 이제 값 252를 대신한다. 이해되지?


문제#1을 해결하기 위해 이제까지 우리가 배운 것들을 정리해 보자.

1. 문자열을 배웠고, 한 줄(단어로 구성된)을 문자열을 이용해서 저장할 수 있다.

'age and glasses of wine should never be counted'

2. 한 줄에서 공백의 개수를 셀 수 있는 count 메서드를 배웠다. 메서드가 뭐라고? 메서드는 값을 나타내는 데이터 타입에 특화된 연산으로 값이랑 메서드명 사이에 .으로 표시된다.

3. 일반 수학과 같이 사칙 연산 등을 사용하는 법을 배웠다.

4. 변수와 할당문에 대해 배웠다. 사실 변수가 없어도 문제를 해결할 수 있지만 그러면 기억하기도 어렵고 입력도 너무 많이 해야 하고 가독성도 나쁘고... 여하튼 번거롭다.

오예!!!

Chatpy가 정리해 준 변수에 대한 내용!


이전에 ChatGPT가 정리해 준 내용에도 등장했던 input 함수, print 함수에 대해서 알아보자. 함수는 메서드와 비슷하게 필요한 인자를 전달하여 호출하면 값을 반환한다. 둘의 차이점은 . 연산자를 사용하지 않는다는 것이다. 함수에 전달되는 모든 정보는 인자를 통해 전달된다.


input 함수(입력 읽기)

input()을 치고 엔터(enter)를 누르면(호출) >>> 프롬프트가 사라지고(돌려받지 못함) 우리가 무언가를 입력할 때까지 기다린다. 무언가를 입력하고 엔터를 누르면 이 함수는 입력한 내용을 문자열로 반환한다. 이때 우리가 무엇을 입력하든 print 함수는 항상 문자열을 반환한다.


print 함수(출력 쓰기)

우리가 사용하는 파이썬 쉘에서 식을 입력하면 값이 나오는 것은, 파이썬 쉘이 제공하는 기능일 뿐이다. 그래서 무언가를 출력하고자 할 때는 print 함수를 사용해야 하며 가장 일반적인 방법이다. 즉 print 함수는 콘솔에 정보를 출력하는 데 사용된다. print() 함수는 다행히 값을 문자열로 반환하지 않는다. 그리고 여러 인자를 받아 사이에 자동으로 공백을 추가하여 출력한다.


그런데 여기서 잠깐! 어떤 건 문(satetment)이고, 어떤 건 함수(function)이고, 또 어떤 건 메서드(method)일까?


Chatpy says,
1. Statements
Definition: In programming, a statement is an instruction that the Python interpreter can execute. Think of it as a single operational step in your code, which tells the computer to do something.
Examples: x = 5 is an assignment statement where you're assigning the value 5 to the variable x. print("Hello, world!") is a print statement that outputs the text "Hello, world!".
Characteristics: Statements in Python end with a newline (when you press Enter). You can have multiple statements in your program, each performing a specific task.

2. Functions
Definition: A function in Python is a block of reusable code that performs a specific task. Functions take input (arguments), process it, and return an output (the result).
Examples:                                Built-in functions like print(), len(), max().                  Custom functions that you define using the def keyword, such as def my_function():.                            
Characteristics: Functions help in breaking down complex problems into smaller, manageable pieces. They promote code reuse and make your code more organized and readable.

3. Methods
Definition: Methods are similar to functions, but they are associated with objects. In Python, which is an object-oriented programming language, a method is a function that belongs to an object.
Examples:                                .append() is a method that adds an item to the end of a list. For instance, if you have a list my_list, you use my_list.append(item) to add an item to it.                  .format() is a string method used for string formatting. For example, "Hello, {}".format(name) replaces {} with the value of name.                            
Characteristics: Methods are called on objects, and they often manipulate the data contained within those objects. The object that a method is called on is passed to the method as its first parameter, typically named self in the method definition.

Summary
Statements are the basic building blocks of a program and are like instructions for the computer.
Functions are reusable blocks of code designed to perform a specific task.
Methods are functions associated with objects and typically manipulate or interact with the object's data.


다음 시간에는 실제로 문제#1을 프로그래밍을 통해 풀어보도록 하자.





매거진의 이전글 외계어 배우기 - 문제#1 WordCount : 문자열
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari