# 프로그램 목적 : 변수 사용하기

# 1) 변수선언
# 스크립트 언어 : 컴파일을 하지 않고 바로 실행시킬 수 있는 언어 -> 파이썬은 스크립트 언어
# 스크립트 언어의 특징 1 : 컴파일을 하지 않고, 변수타입을 선언하지 않는다
# 스크립트 언어의 특징 2 : 가변타입 -> 타입 체킹이 어려움
a = 100  # 파이썬은 C 언어와는 다르게 타입을 명시적으로 선언하지 않는다!
print('변수 a의 타입은', type(a), '이고, 저장값은', a, '이다')
print('변수 a의 타입은 {0}이고, 저장값은 \'{1}\'이다'.format(type(a), a)) # format 함수를 이용하면 보다 편리하게 표현가능
a = '우리나라'  # 파이썬은 C 언어와는 다르게 동일 변수명을 다른 타입으로도 사용가능하다!
print('변수 a의 타입은 {0}이고, 저장값은 \'{1}\'이다\n'.format(type(a), a))

# 2) 두 변수의 덧셈연산
x = 100
y = 200
z = x + y
print('z의 타입은 {}입니다'.format(type(z)))
print(z, '=', x, '+', y)  # 300 = 100 + 200
print('{0} = {1} + {2}'.format(z, x, y))  # 300 = 100 + 200
# 언어로 내가 생각하는 것을 표현할 수 있어야 됨

# 주의) ' '안에 들어 있으면 문자열로 취급
# 숫자끼리의 연산일 때 +는 덧셈연산을 나타내나, 문자열끼리의 연산일 때 +는 concatenation 연산을 나타냄
x = '100'
y = '200'
z = x + y
print('z의 타입은 {}입니다'.format(type(z)))
print('{0} = {1} + {2}\n'.format(z, x, y))  # 100200 = 100 + 200

# 3) camel 표기법의 예시
korScore = 100
print('국어성적은', korScore, '점 입니다')  # 자동완성기능을 적극적으로 사용 (ctrl+space; 이클립스와 유사)
print('국어성적은 {:#d}점 입니다'.format(korScore))
print('국어성적은 {}점 입니다'.format(korScore))
print('국어성적은 {0}점 입니다'.format(korScore))

# 4) 변수의 자기참조연산
n = 10
n = n + 1
print('n의 값은 {:#d}입니다'.format(n))
n += 1  # 파이썬에도 축약연산자가 있다, 하지만 n++같은 증감연산은 없다!
print('n의 값은 {:#d}입니다'.format(n))