[TIL][python] 1~14 replit 정리

Hyeseong·2020년 12월 15일
0

TIL

목록 보기
9/13
post-thumbnail

파이썬 Quick하게 정리

01. Print

파이썬에서 화면에 출력을 하고자 할때는 print 명령어를 사용할 수 있습니다. 예를 들어, "Hello World!" 를 화면에 출력하고자 할때는 다음 코드를 실행하면 됩니다.

print("Hello World!")

위의 코드의 뜻은 print 다음에 오는 괄호 안에 있는 글자들을 출력하라는 뜻입니다.

정확한 문법은 다음과 같습니다.

먼저 "print" 라는 함수 (function) 이름이 위치합니다.

그리고 괄호가 위치합니다.

그리고 괄호 안에 따옴표가 위치합니다.

마지막으로 따옴표 안에 출력하고자 하는 글자열(text)이 위치합니다.

참고로 print 외에 다른 함수들도 위와 동일한 구성으로 호출됩니다. 이에 관해서는 다음에 더 자세히 배울 것입니다.

함수(function)이 무엇인지 아직 몰라도 괜찮습니다. 곧 자세히 배울겁니다.

본 수업에서는 문자열을 화면에 출력하기 위해서는 print라는 함수를 사용해야 한다는 점만 기억하면 됩니다.

프로그래밍에서 두개의 따옴표 ("") 사이에 오는 글자열들을 string 이라고 합니다.

파이썬이 string 을 출력할때 따옴표들은 제외하고 출력하게 됩니다.

따옴표들은 단순히 print의 괄호 안에 들어가는 값들이 string 이라고 알려주는 역을 할 뿐입니다.

참고로 print 와 괄호 사이에 space를 집어 넣어도 상관 없습니다.

print ( "Hello World!" )

다만 파이썬 코딩을 할때 괄호는 space를 넣지 않고 바로 붙이는게 일반적이긴 합니다. 이러한 코딩 스타일은 기능적으로 차이가 나는건 아니지만 코드의 가독성에 영향을 끼치기 때문에 많은 개발자들이 되도록 일반적인 스타일로 코딩을 하는것을 선호 합니다.

02. Data Types

Data type은 해당 데이터가 숫자인지 텍스트 인지 등의 타입을 이야기 합니다..

예를 들어, 숫자 2 와 텍스트 "2", 그리고 소수점 숫자 2.0은 사람에게는 문맥상 같은 의미를 가지지만 컴퓨터에게는 3개가 전부 다른 의미를 가집니다. 그럼으로 정확한 data type의 값을 지정하는것이 중요합니다.

파이썬에서는 다음과 같은 데이터 타입들이 존재 합니다.

  • Integer
  • Float
  • Complex Numbers
  • String
  • Boolean

Integer

정수 값을 이야기 합니다. 예를들어, 1, 2, 100 등이 integer 타입 입니다.

Float

소수점 숫자를 이야기 합니다.

2.0, 3.7, 9.99 등이 float 타입 입니다.

Complex Numbers

실수와 허수를 포함하고 있는 복소수를 이야기 합니다.

허수를 표현할때 수학책에서는 대부분 i 를 썼겠지만 파이썬에서는 j를 사용합니다.

예를 들어, 1+3j 가 complex number 입니다.

String

일반적인 문자열 값을 이야기 합니다.

"안녕하세요", "Hello World!", "100" 등이 string 입니다.

Boolean
조건문(condition) 에 주로 사용되는 값으로 True 나 False 이 2가지 값만 가지고 있습니다.

예를 들어,

1 == 1 은 True 값이며,

2 == 3 은 False 입니다.

3 == "3" 도 당연히 False 입니다. Data type이 틀리기 때문입니다.

Assignment

03. Variables for Strings

  • 제 이름은 송은우 입니다.
  • 제 성별은 남자 입니다.

위의 두 문장을 읽으시면 아마 다음과 같이 이해를 하셨을 것 같습니다. (참고로 == 의 뜻은 equality 즉 양쪽의 값이 동일 하다는 뜻입니다).

  • 이름 == 송은우
  • 성별 == 남자

여기서 이름은 명사 지만 위의 문장의 문맥에서 이름은 "송은우"를 뜻합니다.

마찬가지로, 성별 이라는 단어또한 명사 이지만 위의 문장의 문맥 에서는 "남자"를 뜻하고 있습니다.

만약 제가 여러분에게 "저의 이름" 이라고 말씀 드리면 여러분은 "송은우" 라고 이해하실 겁니다.

마찬가지로 "저의 성별" 이라고 말씀 드리면 여러분은 "남자"라는 값을 연결시켜 생각하실 겁니다.

만약 다른 사람에 대한 문맥이라면 "이름"과 "성별" 이라는 단어들은 "송은우" 와 "남자" 가 아닌 다른 값을 뜻할 것입니다.

파이썬에서 variables(변수) 는 위의 "이름" 그리고 "성별" 과 같은 역할을 합니다.

즉 어떠한 특정 값을 저장하고 있는 '명사' 라고 생각하시면 됩니다.

위의 두 문장을 파이썬으로 표현 하면 다음과 같습니다.

name   = "송은우"
gender = "남자"

여기서 variable은 name 과 gender 이고 "송은우"는 name 변수가 나타내는 값이며, 마찬가지로 "남자"는 gender 변수가 나타내는 값입니다.

이름이라는 단어가 나타내는 값은 사람마다 다를 수 있듯이 파이썬에서 변수도 다른 값으로 바뀔 수 있습니다.

다음 처럼 name 변수와 gender 변수의 값을 다르게 바꿀수 있습니다.

name   = "아이유"
gender = "여자"

지금까지 보셨듯이 파이썬 에서 변수는 = 기호의 왼쪽에 위치하고 실제 값은 = 기호의 오른쪽에 나옵니다.

그리고 = 기호는 "assignment" 즉 값 지정을 뜻합니다.

변수가 지정되면 파이썬은 변수의 실제 값을 자동으로 적용합니다.

예를 들어, 전 시간에는 print 구문에 실제 string 값을 적용해서 출력을 했지만 대신에 변수를 사용할 수 있습니다.

name = "송은우"
print(name) ## "송은우" 출력

그리고 앞서 말했듯이 변수의 값은 바뀔 수 있습니다.

name = "송은우"
print(name) ## "송은우" 출력
 
name = "아이유"
print(name) ## "아이유" 출력

한가지 참고 해야 할 점은, 실제 문장에서는 특정 단어가 뜻하는 문맥이 존재하지만 파이썬은 그러한 문맥이 없다는 점입니다. 예를 들어, name 이라는 단어는 이름을 뜻하는 단어 이기 때문에 자동차를 가리키면서 "that's my name" 이라고 할 수 없지만 파이썬에서는 그러한 문맥이 없기 때문에 name 이라는 변수에 "car" 라는 값을 저장할 수 있습니다.

name = "car"
name = "car"
하지만 위에처럼 하면 코드의 가독성이 떨어지기 때문에 물론 가능한 문맥에 맞게 변수의 이름을 정하는 것이 좋습니다.

String

지금까지 본 변수에 저장한 값들은 모두 double quotation mark (따옴표) 에 둘러쌓여 있으신걸 보실 수 있습니다. 이렇게 따옴표에 둘러쌓여 있는 값을 "string" 이라고 합니다.

String 은 문자열 값을 뜻합니다. 즉 일반적인 텍스트(text) 값을 이야기 합니다.

만일 문자열에 따옴표가 없으면 변수 나 함수(function)로 파이썬이 인지를 합니다. 그럼으로 문자열(text) 값을 표현하고 싶을때는 꼭 따옴표를 사용해야 합니다.

변수 이름 법칙

변수 이름은 영어 알파벳과 숫자 그리고 underscore (_) 으로만 구성될 수 있습니다.
변수 이름 첫글자는 알파벳이나 underscore로만 시작해야 합니다. 숫자로는 시작될 수 없습니다.
영어 알파벳은 대문자와 소문자가 구분이 됩니다 (case sensitive).
올바른 변수 이름

  • name
  • _name
  • my_name
  • myName

잘못된 변수 이름

  • 7name
  • my name

04. Variables For Numbers

변수에 저장할 수 있는 값(value)은 string 뿐만이 아닙니다. 다음 처럼 숫자 값도 저장 할 수 있습니다.

age = 23
 
print(age) ## 23 출력

숫자를 변수에 저장할 때 조심해야 할 점은 string 과 다르게 따옴표를 사용하면 안된다는 점입니다.

만일 따옴표를 사용하면 숫자 가 아니라 string 즉 문자열로 인식이 되게 됩니다.

age = "23"
next_year = age + 1
 
print(next_year)

위에 코드를 실행 시키면 다음과 같은 에러가 발생됩니다:

Traceback (most recent call last):   
    File "python", line 2, in <module> 
TypeError: must be str, not int
Traceback (most recent call last):   
    File "python", line 2, in <module> 
TypeError: must be str, not int

변수 age 의 값이 숫자가 아니라 string 인데 거기에 숫자 1을 더하는 연산을 하려고 하니 문자열에는 숫자 연산이 안되기 때문에 에러가 나는 것입니다. 위의 코드가 제대로 작동하게 하려면 age 의 값을 string 이 아닌 숫자로 변경하면 됩니다.

age = 23
next_year = age + 1
 
print(next_year)

위의 코드를 실행 시켜면 24가 출력됩니다.

가능한 숫자 타입

숫자 값은 정수(integer) 이외에도 부동 소수점(floating) 숫자 값도 가능합니다.

price = 24.90
price = 24.90

뿐만 아니라 음수(negative number)도 가능합니다.

stock_profit_percentage = -10

05~06. Math Expressions - Add

num1 = 2;
num2 = 4;

plus = num1 + num2;
minor1 = num1 - num2;
minor2 = num2 - num1;
sliced = num2 / num1;
double = num1 * num2;
intSliced = num1 // num2;

print(plus)
print(minor1)
print(minor2)
print(sliced)
print(double)
print(intSliced)
num1 // num2;

Python에만 있는 정수 나누기 slicing에서 index는 정수만 사용할 수 있어 유용하다.

07. Math Expressions - Divide

Python은, / 연산자를 사용하여 나누기 실행이나, Python3은 자동으로 결과값 형변환
// 연산자를 사용하여 정수나누기가능하며, divide()를 리턴할 수 있다.

def divide():
	result = 66 // 10
    	return result		#결과# divide() // --> 6

08. 09. Increment & Decrement a Number

Python does not have unary increment/decrement operator( ++/--). Instead to increament a value, use

a += 1

to decrement a value, use−

a -= 1

Example

>>> a = 0
>>>
>>> #Increment
>>> a +=1
>>>
>>> #Decrement
>>> a -= 1
>>>
>>> #value of a
>>> a
0

Python does not provide multiple ways to do the same thing .

However, be careful if you are coming from a languae like C, Python doesn’t have “variables” in the sense that C does, instead python uses names and objects and in python integers(int’s) are immutable.

Let’s understand it with an example−

>>> a =1
>>> print(id(a))
1919375088
>>> print(hex(id(a)))
0x726756f0

So what above statement means in python is: create an object of type int having value 1 and give the name a to it. The object is an instance of int having value 1 and the name a refers to it. The assigned name a and the object to which it refers are distinct.

Now lets increment a

>>> a +=1
>>> print(id(a))
1919375104
>>> print(hex(id(a)))
0x72675700

As int are immutable, python understand above statement as

  • Look up the object that a refers to (it is an int and id 0x726756f0)

  • Look up the value of object 0x726756f0 (it is 1).

  • Add 1 to that value (1+1 =2)

  • Create a new int object with value 2 (object with id 0x72675700).

  • Rebind the name a to this new object (0x72675700)

  • Now a refers to object 0x72675700 and the previous object (0x726756f0) is no longer refered to by the name a. If there aren’t any other names referring to the original object it will be garbage collected later.

So from above, you can understand when we do: a += 1

This will reassign a to a+1. That’s not an increment operator, because it does not increment a, but it reassign it.

Let’s understand above increment/decrement with some more example−

>>> a = b = c =1
>>> id(a)
1919375088
>>> id(b)
1919375088
>>> id(c)
1919375088
>>> #Above all have the same id
>>>
>>> # Now increment a
>>> a +=1
>>> id(a)
1919375104
>>> id(b)
1919375088
>>> id(c)
1919375088

From above you can understand we have a single object that a, b and c refers to (an int with id 1919375088)

On incrementing the value of a, now a is reasign to a+1 (id: 1919375104) and other b and c refers to same object (1919375088).

Also python does come up with ++/-- operator.

>>> a =1
>>> ++a
1
>>> --a
1
```s

# 10. Finding a Remainder

> The modulus operator, sometimes also called the remainder operator or integer `remainder operator` works on integers (and integer expressions) and yields the remainder when the first operand is divided by the second. In Python, the modulus operator is a percent sign (%). The syntax is the same as for other operators.

```python
quotient = 7 // 3     # This is the integer division operator
print(quotient)
remainder = 7 % 3
print(remainder)

11. Advanced Math Expressions

파이썬은 기본적인 수학 연산 표현 이외에도 다음과 같은 상급 수학 연산 표현 또한 지원하고 있습니다.

  • %
  • +=
  • -=
  • *=
  • /=

%

%는 modulo operator 라고 하며, 나누기의 나머지 값을 계산할때 사용됩니다.

예를 들어, 10 % 3 은 1을 리턴합니다.

print(10 % 3) # == 1 출력

+=

만약 어떠한 변수의 값에 1을 더하고 싶다면 어떤식으로 구현할 수 있을까요?

아마 다음과 같이 표현할 수 있을 것입니다.

num1 = 10
num1 = num1 + 1
num1 = 10
num1 = num1 + 1

위의 방식도 문제는 없지만, 대신에 변수 이름을 2번 반복해서 입력해야 한다는 번거러움이 있습니다.

위의 예제에서는 변수 이름이 짧기 때문에 번거러움이 크게 안다가올 수 있지만, 만일 변수 이름이 길거나 혹은 비슷한 이름의 변수가 있어서 실수 하는 경우 번거러움을 느낄 수 있을것입니다.

그래서 파이썬에서는 위에 처럼 어떠한 변수에 값을 더하여 동일한 변수에 저장하는 것을 더 짧은 방식으로 표현할 수 있도록 지원합니다:

num1 = 10
num1 += 1
 
print(num1) # ==> 11 
num1 = 10
num1 += 1

print(num1) # ==> 11 

-=

-= 는 += 와 비슷하지만 더하기 대신 빼기를 실행 합니다.

num1 = 10
num1 -= 2
 
print(num1) # ==> 8 출력
num1 = 10
num1 -= 2

print(num1) # ==> 8 출력

*=

*= 는 곱하기를 실행한 후의 값을 변수에 저장합니다.

num1 = 10
num1 *= 2
 
print(num1) # ==> 20 출력
num1 = 10
num1 *= 2

print(num1) # ==> 20 출력

/=

/= 는 나누기를 실행한 후의 값을 변수에 저장합니다.

num1 = 10
num1 /= 2
 
print(num1) # ==> 5 출력
num1 = 10
num1 /= 2

print(num1) # ==> 5 출력

**

** 는 수학에서 멱법 (Exponentiation)을 구할때 사용됩니다.

예를 들어, 10의 2승은 다음과 같이 구현할 수 있습니다.

10 ** 2

12. Order of Arithmetic Operators

수학 기호 연산자 우선순위

OperatorDescription
**Exponentiation (raise to the power)
~ + -Complement, unary plus and minus (method names for the last two are +@ and -@)
* / % //Multiply, divide, modulo and floor division
+ -Addition and subtraction
>> <<Right and left bitwise shift
& Bitwise 'AND'td>
^Bitwise exclusive OR' and regular OR'
<= < > >=Comparison operators
<> == !=Equality operators
= %= /= //= -= += *= **=Assignment operators
is is notIdentity operators
in not inMembership operators
not or andLogical operators

13. Concatenating Text Strings

String Concatenation

To concatenate, or combine, two strings you can use the + operator.

Example

Merge variable a with variable b into variable c:

a = "Hello"
b = "World"
c = a + b
print(c)

Example

To add a space between them, add a " ":

a = "Hello"
b = "World"
c = a + " " + b
print(c)

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d       #( 30 * 15 ) / 5
print "Value of (a + b) * c / d is ",  e

e = ((a + b) * c) / d     # (30 * 15 ) / 5
print "Value of ((a + b) * c) / d is ",  e

e = (a + b) * (c / d);    # (30) * (15/5)
print "Value of (a + b) * (c / d) is ",  e

e = a + (b * c) / d;      #  20 + (150/5)
print "Value of a + (b * c) / d is ",  e

출력결과

Value of (a + b) * c / d is 90
Value of ((a + b) * c) / d is 90
Value of (a + b) * (c / d) is 90
Value of a + (b * c) / d is 50

14. Significant Whitespace

Whitespace 란 바로 들여쓰기(indention)을 이야기 합니다.

다른 언어에서는 들여쓰기가 필수사항은 아닙니다. 단순히 코드의 가독성을 높이기 위해서 사용하는 수준입니다.

하지만 파이썬에서는 들여쓰기는 요구사항 입니다. 들여쓰기를 통해 코드의 종속성을 나타냅니다.
예를 들어. JavaScript나 자바등의 다른 언어들은 함수에 종속된 코드를 나타내기 위해서 중괄호 ({ }) 를 사용합니다.

function func() {
    ... code here
}
function func() {
    ... code here
}

하지만 파이썬에서는 중괄호를 사용하지 않고 들여쓰기를 사용해서 종속된 코드를 나타냅니다.
들여쓰기의 칸 수는 일반적으로 4칸이지만 2칸을 사용하는 개발자도 있습니다.

대부분 tab 사이즈를 space 4칸으로 설정해서 tab으로 들여쓰기를 합니다.
들여쓰기는 함수 뿐만이 아니라 if문, for문, 클래스 등 파이썬의 모든 것에 적용됩니다.
(아직 함수 나 if 문등은 안 배웠으므로 이해가 안가도 괜찮습니다. 중요한 것은 파이썬에서 들여쓰기를 잘 해야 한다는 점입니다)

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글