본문 바로가기

Ping!_linux

Python 기초 문법 (1)

Unit 4 기본 문법

1) 세미콜론

파이썬은 세미콜론을 붙이지 않음.

보통 한 줄에 여러 구문을 사용할 때 세미콜론으로 구분

print('Hello'); print('1234')

 

2) 주석

코드 맨 앞에 #을 사용하면 해당 줄은 모두 주석

# Hello, world! 출력
print('Hello, world!')

 

3) 들여쓰기

코드를 읽기 쉽도록 일정한 간격을 띄워서 작성하는 방법

특히 파이썬은 들여쓰기 자체가 문법임.

들여쓰기를 하지 않으면 문법 에러

if a == 10:
print('10입니다.')    # 들여쓰기 문법 에러
if a == 10:
     print('10입니다.')

 

공백(스페이스) 2칸, 4칸, 탭(tab) 등을 사용해 들여쓰기

 

4) 코드블록

특정한 동작을 위해서 코드가 모여 있는 상태

파이썬은 들여쓰기를 기준으로 코드 블록을 구성

같은 블록은 들여쓰기 칸 수가 같아야 하고, 공백과 탭 문자를 섞어 쓰면 안 됨

 

Unit 5 숫자 계산하기

파이썬에서는 숫자를 정수(int), 실수(float), 복소수(complex)로 구분

 

1-1) 정수 계산

덧셈, 뺄셈, 곱셈, 나눗셈 가능

>>> 1 + 1
2
>>> 1 - 2
-1
>>> 2 * 2
4
>>> 5 / 2
2.5

 

//은 버림 나눗셈(floor division)이라고 부르며 나눗셈의 결과에서 소수점 이하는 버림

>>> 5 // 2
2
>>> 4 // 2
2

 

참고로 실수에 // 연산자를 사용하면 결과는 실수가 나오며 소수점 이하는 버림. 따라서 결과는 항상 .0으로 끝남.

>>> 5.5 // 2
2.0
>>> 4 // 2.0
2.0
>>> 4.1 // 2.1
1.0

 

%는 두 수를 나누었을 때 나머지만 구함.

참고로 몫은 버림 나눗셈(//)으로 구할 수 있음.

>>> 5 % 2
1

 

**은 거듭제곱 연산자이며 숫자를 특정 횟수만큼 곱함. 따라서 2 ** 10은 1024이고 2^10을 뜻함.

>>> 2 ** 10
1024

 

1-2) 값을 정수로 만들기

int에 괄호를 붙이고 숫자 또는 계산식을 넣으면 정수로 만들 수 있음.

특히 int에 문자열을 넣어도 정수로 만들 수 있음.

단, 정수로 된 문자열이어야 함

>>> int(3.3)
3
>>> int(5 / 2)
2
>>> int('10')
10

 

 

type은 말그대로 객체의 타입(자료형)을 알아내는 함수

>>> type(10)
<class 'int'>

파이썬에서는 숫자도 객체(object)이며, 객체는 클래스(class)로 표현함.

 

💡참고

몫과 나머지를 함께 구하려면 divmod를 사용

파이썬에서 값을 괄호로 묶은 평태를 튜플(tuple)이라고 하며 값 여러 개를 모아서 표현할 때 사

>>> divmod(5, 2)
(2, 1) #(몫, 나머지)

 

2-1) 실수 계산

덧셈, 뺄셈, 곱셈, 나눗셈 가능

>>> 3.5 + 2.1
5.6
>>> 4.3 - 2.7
1.5999999999999996
>>> 1.5 * 3.1
4.65
>>> 5.5 / 3.1
1.7741935483870968

 

그런데 4.3 - 2.7의 결과가 1.6이 나와야 하는데 1.5999999999999996이 나옴.

왜냐하면 컴퓨터는 실수를 표현할 때 오차가 발생하기 때문임. 후에 자세히 배울 예정!

 

실수와 정수를 함께 계산하면 표현 범위가 넓은 실수로 계산됨.(실수가 정수보다 표현 범위가 넓음)

>>> 4.2 + 5
9.2

 

 

float에 괄호를 붙이고 숫자 또는 계산식을 넣으면 실수로 만들 수 있음.

특히 float에 문자열을 넣어도 실수로 만들 수 있음.

단, 실수 또는 정수로 된 문자열이어야 함

>>> float(5)
5.0
>>> float(1 + 2)
3.0
>>> float('5.3')
5.3

 

float는 부동소수점(floating point)에서 따왔으며 값을 실수로 만들어줌. 즉, 실수는 float 자료형

>>> type(3.5)
<class 'float'>

 

괄호를 사용하여 계산하기

>>> 35 + 1 * 2
37
>>> (35 + 1) * 2
72

 

덧셈, 뺄셈, 곱셈, 나눗셈이 함께 있을 때는 곱셈과 나눗셈부터 계산

덧셈과 뺄셈을 먼저 계산하고 싶다면 괄호로 묶어줌.

 

 

참고 | 복소수

파이썬에서는 실수부와 허수부로 이루어진 복소수(complex number)도 사용할 수 있습니다. 이때 허수부는 숫자 뒤에 j를 붙입니다(수학에서는 허수를 i로 표현하지만 공학에서는 j를 사용합니다).

>>> 1.2+1.3j
(1.2+1.3j)

두 실수를 복소수로 만들 때는 complex를 사용하면 됩니다.

>>> complex(1.2, 1.3)
(1.2+1.3j)

 

 

참고 | 스크립트 파일에서 계산 결과가 출력되지 않아요.

스크립트 파일에서 1 + 1처럼 계산식만 넣으면 결과가 출력되지 않습니다.

print_add.py

1 + 1

실행 결과

(아무것도 출력되지 않음)

스크립트 파일에서 계산 결과를 출력하려면 print 함수를 사용해야 합니다.

print_add.py

print(1 + 1)

실행 결과

2

파이썬 셸은 결과를 즉시 보는 용도라서 값 또는 계산식만 넣어도 결과가 출력됩니다. 하지만 스크립트 파일에서 값 또는 계산식의 결과를 출력하려면 반드시 print 함수를 사용해야 한다는 점 기억하세요.

Unit 6. 변수와 입력 사용하기

변수 이름은 원하는 대로 지으면 되지만 다음과 같은 규칙을 지켜야 함.

  • 영문 문자와 숫자를 사용할 수 있습니다.
  • 대소문자를 구분합니다.
  • 문자부터 시작해야 하며 숫자부터 시작하면 안 됩니다.
  • _(밑줄 문자)로 시작할 수 있습니다.
  • 특수 문자(+, -, *, /, $, @, &, % 등)는 사용할 수 없습니다.
  • 파이썬의 키워드(if, for, while, and, or 등)는 사용할 수 없습니다.
>>> x = 10
>>> x
10
>>> y = 'Hello, world!'  #문자열도 가능 
>>> y
Hello, world!

#변수(객체) 타입 알아내기
>>> type(x)
<class 'int'>
>>> type(y)
<class 'str'>

 

변수 여러 개를 한 번에 만들기도 가능

변수와 값의 개수는 동일하게 맞춰주어야 하며 나열된 순서대로 값이 할당됨. 

만약 변수와 값의 개수가 맞지 않으면 에러가 발생

>>> x, y, z = 10, 20, 30
>>> x
10
>>> y
20
>>> z
30

 

변수 여러 개를 만들 때 값이 모두 같아도 된다면 다음과 같은 방식도 사용 가능

>>> x = y = z = 10
>>> x
10
>>> y
10
>>> z
10

 

두 변수의 값을 바꾸려면 다음과 같이 변수를 할당할 때 서로 자리를 바꿔주면 됨.

>>> x, y = 10, 20
>>> x, y = y, x
>>> x
20
>>> y
10

 

💡참고

변수 삭제하기 (del)

>>> x = 10
>>> del x
>>> x
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    x
NameError: name 'x' is not defined

 

빈 변수 만들기 (None 할당)

>>> x = None
>>> print(x)
None
>>> x
>>> (아무것도 출력되지 않음)

 

1) 변수로 계산하기

>>> a = 10
>>> a + 20
30
>>> a
10

a + 20처럼 20을 더하면 30이 나오지만 a의 값을 다시 출력해보면 10이 나옴

a + 20은 a에 20을 더하기만 할 뿐 계산 결과를 유지하지 않기 때문!

 

변수 한 개에서 값의 변화를 계속 유지하려면 계산 결과를 다시 변수에 저장해야 함.

>>> a = 10
>>> a = a + 20    # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30

 

또는

>>> a = 10
>>> a += 20    # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30

 

⚠️ 만들지 않은 변수에 값을 할당하면 에러가 발생함

>>> d += 10    # d는 만들지 않은 변수
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    d += 10
NameError: name 'd' is not defined

 

2) 입력값을 변수에 저장

매번 다른 값을 변수에 할당하려면 input 함수를 사용

>>> x = input('문자열을 입력하세요: ')
문자열을 입력하세요: Hello, world! (입력)
>>> x
'Hello, world!'
>>> a = input()
10 (입력)
>>> type(a)
<class 'str'>

다음과 같이 input의 결과를 변수에 저장한 뒤 type을 사용해보면 input의 결과가 문자열(str)이라는 것을 알 수 있음.

 

10 + 20의 결과가 30이 나오게 하려면 input에서 입력받은 문자열을 숫자(정수)로 만들어주어야 함.

a = int(input('첫 번째 숫자를 입력하세요: '))    # int를 사용하여 입력 값을 정수로 변환
b = int(input('두 번째 숫자를 입력하세요: '))    # int를 사용하여 입력 값을 정수로 변환
 
print(a + b)
첫 번째 숫자를 입력하세요: 10 (입력)
두 번째 숫자를 입력하세요: 20 (입력)
30

 

3) 입력값을 변수 두 개에 저장

input 한 번에 값을 여러 개 입력받으려면,

input에서 split을 사용한 변수 여러 개에 저장해주면 됨.(각 변수는 콤마로 구분)

  • 변수1, 변수2 = input().split()
  • 변수1, 변수2 = input().split('기준문자열')
  • 변수1, 변수2 = input('문자열').split()
  • 변수1, 변수2 = input('문자열').split('기준문자열')
a, b = input('문자열 두 개를 입력하세요: ').split()    # 입력받은 값을 공백을 기준으로 분리
 
print(a)
print(b)
문자열 두 개를 입력하세요: Hello Python (입력)
Hello
Python

 

 split에 기준 문자열을 지정하여 공백이 아닌 다른 문자로 분리도 가능

a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) # 입력받은 값을 콤마를 기준으로 분리
 
print(a + b)
숫자 두 개를 입력하세요: 10,20 (입력)
30

 

4) map을 사용하여 정수로 변환

split의 결과를 매번 int로 변환해주려니 귀찮다! 이때는 map을 함께 사용하면 됨. 

map에 int와 input().split()을 넣으면 split의 결과를 모두 int로 변환해줌(실수로 변환할 때는 int 대신 float를 넣음)

a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
 
print(a + b)
숫자 두 개를 입력하세요: 10 20 (입력)
30

 

Unit 7 출력 방법과 형태

1) 값을 여러개 출력하기

print에는 변수나 값 여러 개를 ,(콤마)로 구분하여 넣을 수 있음

>>> print(1, 2, 3)
1 2 3
>>> print('Hello', 'Python')
Hello Python

print에 변수나 값을 콤마로 구분해서 넣으면 각 값이 공백으로 띄워져서 한 줄로 출력됨.

이렇게 하면 값을 여러 개 출력할 때 print 함수를 여러 번 쓰지 않아도 됨.

 

2) sep로 값 사이에 문자 넣기 // seporator : 구분자

값 사이에 공백이 아닌 다른 문자를 넣고 싶을 때 print의 sep에 문자 또는 문자열을 지정해주면 됨.

>>> print(1, 2, 3, sep=', ')    # sep에 콤마와 공백을 지정
1, 2, 3
>>> print(4, 5, 6, sep=',')    # sep에 콤마만 지정
4,5,6
>>> print('Hello', 'Python', sep='')    # sep에 빈 문자열을 지정
HelloPython
>>> print(1920, 1080, sep='x')    # sep에 x를 지정
1920x1080

 

3) 줄바꿈 활용

다음과 같이 print에 값을 여러 개 지정하면 한 줄에 모든 값이 출력

>>> print(1, 2, 3)
1 2 3

 

print의 sep에 개행 문자(\n)라는 특별한 문자를 지정하면 값을 한 줄에 하나씩 출력할 수 있음.

>>> print(1, 2, 3, sep='\n') # or print('1\n2\n3') => 문자열 안에 \n을 사용하여 줄바꿈
1
2
3

 

💡참조

제어 문자: 화면에 출력되지는 않지만 출력 결과를 제어

\n: 다음 줄로 이동하며 개행이라고도 부릅니다.

\t: 탭 문자, 키보드의 Tab 키와 같으며 여러 칸을 띄웁니다.

\\: \ 문자 자체를 출력할 때는 \를 두 번 써야 합니다.

 

print는 기본적으로 출력하는 값 끝에 \n을 붙임. 그래서 print를 여러 번 사용하면 값이 여러 줄에 출력됨.

print(1)
print(2)
print(3)
1
2
3

 

print를 여러 번 사용해서 print(1, 2, 3)처럼 한 줄에 여러 개의 값을 출력하려면 print end에 빈 문자열을 지정해주면 됨.

print(1, end='')    # end에 빈 문자열을 지정하면 다음 번 출력이 바로 뒤에 오게 됨
print(2, end='')
print(3)
123

 

기본적으로 print의 end에 \n이 지정된 상태인데 빈 문자열을 지정(end='(공백)')하면 강제로 \n을 지워주기 때문에 한 줄로 출력 가능함.

 

end에 공백을 한칸 지정하면 하면 다음과 같이 출력

1 2 3

 

참고 | 제어 문자

제어 문자는 화면에 출력되지는 않지만 출력 결과를 제어한다고 해서 제어 문자라 부릅니다. 또한, 제어 문자는 \로 시작하는 이스케이프 시퀀스입니다(부록 ‎47.6 이스케이프 시퀀스 참조).

\n: 다음 줄로 이동하며 개행이라고도 부릅니다.

\t: 탭 문자, 키보드의 Tab 키와 같으며 여러 칸을 띄웁니다.

\\: \ 문자 자체를 출력할 때는 \를 두 번 써야 합니다.

'Ping!_linux' 카테고리의 다른 글

Python 기초 문법 (2)  (3) 2024.03.16
기본 명령어 및 vi 에디터  (0) 2024.01.28
3. x86 Assembly  (0) 2024.01.28
2. 리눅스 메모리 구조 (Linux Memory Layout)  (0) 2024.01.28
1. 컴퓨터구조  (0) 2024.01.28