이해하기 쉬운 Python 3.6 - 3회차

2017. 4. 30. 16:56언어별 정리 자료/Python

이해하기 쉬운 Python 3.6 - 3회차

String 연산.

지난 시간에 String Type 값은 곱하기가 된다고 했습니다.

그에 이어서 String Type의 연산은 무엇이 있는지 간단히 살펴보고 가도록 하겠습니다.


String은 더하기, 곱하기에 대해 정의가 되어 있습니다.


String의 더하기는 특히 Concatenation 이라고 부릅니다. ( Concatenation : “String1” + “String2” )


print(“int” + “ : “ + “2, 3, 4”)	 # int : 2, 3, 4 
“2” + “2” + “3” # 223
1+ ‘2’ + 3 + ‘4’
# Traceback ( most recent call last )
# File “<stdin>”, line 1, in <module>
# TypeError : unsupported operand type(s) for + : ‘int’ and ‘str’


String의 곱하기는 따로 지칭하진 않습니다. ( Multiplied by Interger : “String1” * integer )

곱하는 숫자는 항상 int 형 값을 곱해야 합니다.


print(“spam”*3)	# spamspamspam
2 * “4”	44
'17’ * ‘87’	# TypeError : can’t multiply…
'python’*7.0 # TypeError : can’t multiply…





입력과 출력

출력

지난 시간에 사용 해 본 type() 함수의 결과는 type class 형태의 변수라고 하였습니다.

이러한 함수의 결과를 x = type(3), 혹은 x = type("30") 같이 저장 가능합니다. 이런 경우, x 는 type class 변수 " int ", type class 변수 " string "입니다.


print() 함수는 지난 시간에 말했듯, void형 함수입니다.

따라서 print(type(x)) 와 같이 하게 된다면 x 의 type 을 화면상에 보여 줄 수 있습니다.


이 때, type class 는 string이 아닌데 어째서 print가 되는가! 한다면 print 함수의 구현에서 자동으로 형태의 변환을 구현 해 주기 때문입니다.

이에 대한 자료는 지난 시간에 암시적 형 변환으로 언급했었습니다.


이런 자동 형 변환( 암시적, Implicit 형 변환 )으로 int, float 등도 지원을 하며, 상당히 많은 변수의 Type들을 자동으로 변환 해 줍니다.

이렇게 print() 함수를 쓰면 어떤 입력에 대한 화면상에 출력을 해 줄 수 있습니다.



입력

input() 함수는 어떠한 입력을 받기 위해서 대기합니다. 그리고 그렇게 입력 받은 값을 string type의 형태로 반환 해 주는 함수 입니다.

이 때, input 함수의 입력 값은 ( () 안에 들어가는 것은 ) 화면 상에 이러한 input 을 받기 위해 출력하는 값 입니다.


input(“Enter here : “) # Enter here : ( writing )
float(input(“Enter a float”)) + float(input(“Enter another float”)) # Enter a float...
- 한 줄 입력을 받는 화면상의 모습입니다. 엔터를 누르면 입력이 끝나게 됩니다.

- 한 줄에서 input() 함수를 여러 번 부를 수 있습니다. 이렇게 되면 앞의 input() 부터 실행 되게 됩니다.



이렇게 print() 와 input() 함수를 통해 입력 / 출력을 받을 수 있습니다.

input() 함수로 입력 받는 값은 항상 String 형 변수라는것을 기억 하셔야 합니다!!

- 위에서 했던 것 처럼 함수를 여러번 호출 하게 되면, 한줄만으로도 여러 기능을 수행 가능합니다.










변수

지난 시간에 입력 값과 출력 값은 Type 이나 그 내용 값이 계속해서 변할 수 있는 값이라고 했습니다. 또한 그러한 값들을 저장하고 바로바로 불러 쓸 수 있게 해주는 것을 변수라고 했습니다.


정리해보자면, 변수란 저장된 값에 붙은 이름 이라고 할 수 있습니다.


변수를 만들기 위해서는 equal sign(" = ")이 필요하다는 사실은 지난 시간에도 했던 말입니다.

x = 7
print(x) # 7



변수는 한 변수의 이름에 대해서 여러번 할당 해줄 수 있으며, Python에서 변수의 Type은 변수의 선언시에는 큰 문제가 되지 않습니다.  

즉, String형 변수에서 Int형 변수로 바로 선언해서 다시 쓸 수 있습니다.


x = 123.456
Print(x) # 123.456
x = “This is String”
Print(x) # This is String
x = 4 + 56
Print(x) # 60


- 위와 같이 위의 코드를 실행 할 때, x 는 가만히 있고, 들어가는 값만 계속해서 바뀌는 것입니다.





변수의 조건

  1. 변수의 이름은 문자(character)들로 쓸 수 있습니다. ( abcd.., _, 1234... )
  2. 또한 “_”를 사용 가능하고, 스페이스는 사용될 수 없습니다.
  3. 소문자와 대문자가 구별되어 사용됩니다.


x = 20 # OK, int 형 변수 x
xyz = 30 # OK, int 형 변수 xyz
__std_x = "Set OK" # OK, string 형 변수 __std_x
23OK = 23 # Error!! 숫자로 시작하면 안됨.
$%Val = "value" # Error!! 특수 문자를 사용하면 안됨.



당연하게도, 할당하지 않은 변수의 이름은 사용 될 수 없습니다. 따라서 변수를 사용하기 위해서는 위에서 꼭 선언 하여야 합니다.

- 선언하지 않은 변수를 사용하면 Not defined error 를 볼 수 있습니다.


del() 함수를 이용하면 원래의 변수를 삭제도 가능합니다.


x = 123.456
del x # del(x) 로 써도 좋습니다.
print(x)

- del() 로 삭제된 변수는 다시 선언하기 전까진 삭제할 수 없습니다. 변수가 너무 많이 생성되면 프로그램의 진행에 지장이 생기므로, 너무 많이 생긴다면 삭제 해 주는 것이 좋습니다.




또한, 할당과 동시에 Input이 가능합니다.


foo = input(“Enter Here : “)
Enter Here : string is here
del foo 혹은 del(foo)





연산 줄여쓰기

x = x + 2 와 같은 연산은 줄여쓰는 것이 가능합니다. 이렇게 줄여 쓰게 되면, 간단한 표현만으로 복잡한 연산을 나타내는 것이 가능 해 집니다.


이는 int,float 계산인 X = X +3  == X += 3, //=, *=, %=,  -= 에 모두 사용 가능하며, 심지어 String의 연산에도 사용 가능합니다


x_int = 2 # x_int = 2
x_int -= 23 # -21
x_int *= -2 # 42

x = "spam" #spam
x += "Egg" # spanEgg
.

( 주의 ) : 그러나, C 언어나 다른 언어와 달리 Python은 X+=1 의 줄임인 X++을 가지고 있지 않습니다.




Boolean Type

Boolean 변수

Boolean 이란 True , False 를 나타내는 변수의 한 종류입니다. C 언어에서는 1을 true, 나머지를 모두 false 로 나타내는데 비해, Python 같은 언어에서는 True / False 를 나타내는 값이 있어서 비교하는 것과 같은 연산에서 편하게 쓸 수 있습니다.



my_b = True # True


이 때, Boolean Type은 대입 연산 말고도, 비교 구문을 통해 생성하는 것도 가능합니다.


2==3 # False
x = 2!=3 # True
y = 7 > 5 # True
print(x and y) # True


비교 구문

비교 구문은 특정한 조건을 만족하면 True, 만족하지 못하면 False 를 return 하는 일종의 연산자 입니다.

예를 들어 > 같은 경우는 왼쪽이 더 크다면 True, 아니면 False 를 return 합니다.


비교 구문 : < , > , <=, >=, ==, !=

== 는 = 와 달리 "두 변수 / 값이 같은가?" 를 의미하는 연산자이며, != 는 "같지 않은가?" 를 의미하는 연산자 입니다.


‘=‘ 와 ‘==‘ 의 차이는 전자는 대입하는 것, 후자는 비교하는 것의 차이입니다.


2==3 # False
2!=3 # True
7 > 5 # True
9 <= 2 # False


또한, 비교는 String에서도 가능합니다. 


aa 는 aaa 보다 작고, ab 는 aa 보다 큰 방식으로 비교합니다. ( 사전 순서 )

이때의 비교 방법을 Lexicographically하게 비교한다고 합니다.





Operator Precedence ( 연산 순서 )

Python에서는 연산에 순서가 있습니다.

2 + 3 * 4 가 있으면 3 * 4 먼저 하듯, Python 또한 그러합니다.


연산의 순서는 다음과 같습니다.

Parentheses ( 괄호 ) > exponentiation ( 지수 곱 ) > 곱셈, 나눗셈 > 덧셈, 뺄셈 > &, | > 비교 > and / or

같은 순서일 경우 앞에서부터 연산을 진행합니다.


and / or, &, | 의 연산은 다음 시간에 다룰 예정입니다.






이번에는 변수의 선언과 Boolean, 또한 String 변수의 연산에 대해 알아 보았습니다. 또한 기본적인 input 과 output ( I / O ) 에 대해 알아 보았습니다.


이러한 I / O 는 Python에서 간단하게 무엇인가를 확인하고자 할 때 잘 쓰이는 함수들입니다. 잘 기억하시면 좋겠습니다.


또한 연산 순서도 잘 기억하셔서 9 ** 1 / 2 가 옳은 것인지 9 ** (1/2) 가 옳은 것인지 햇갈리지 않도록 합시다.