[파이썬(Python)] 자료형, 형변환, 연산자
========================================================================================
'''
이 프로그램은 더하기 프로그램입니다.
작성자: 나무의 하루
작성일 : 2022-07-08
'''
num1 = 1
num2 = 2
print( num1+num2 ) #여기는 출력하는 부분입니다.
num1 = 5
print ( num1+num2 )
num2 = 3.5
print ( num1+num2 )
char1 = 'a'
print(char1)
a = 10
b = 10
c = 10
print(id(a))
print(id(b))
print(id(c))
b = 8
print(id(a))
print(id(b))
print(id(c))
#누적계산
#1+2+3+4+5
baseball = "ncsoft"
print(baseball)
print(baseball[4])
win = "10승"
print(baseball+win)
print(win*2)
print(baseball[2:5])
str = "Hello World"
print(str)
print(str[0])
print(str[2:5])
print(str[2:])
========================================================================================
baseball_team = ["SAMSUNG", "LG", "KT", "NC", "SK"]
print(baseball_team)
print(baseball_team[0])
print(baseball_team[4])
basket = [3, "hi", 'a', 3.14, [1,2,3]]
print(basket)
print(basket[1])
print(basket[4][1])
a = [3, 4, "hi", 3.14]
b = ["helllo", 10]
print(a)
print (a[1])
print(a[1:3])
print(a * 2)
print(a + b)
a[0] = 10
print(a)
========================================================================================
**인덱싱에 음수 값을 넣으면 뒤에서부터 셈!
#거꾸로셀 때는 위치 정보가 5,4,3,2,1(0이 아님!!)
a = (3, 4, "hi", 3.14)
b = ("hello", 10)
print(a)
print(a[1])
print(a[1:3])
print(a * 2)
print(a + b)
========================================================================================
a = {1:"apple", 2:"banana", 3:"tomato"}
print(a)
print(a[1])
print(a[3])
========================================================================================
# 집합(set) : 중복 안 됨, 순서 없음
my_set = {1,2,3,3,3}
java = {"유재석", "김태호", "양세형"}
python = set(["유재석","박명수"])
print("==========================\n\n")
#교집합
print(java & python)
print(java.intersection(python))
print("\n==========================\n\n")
# 합집합
print(java | python)
print(java.union(python))
print("\n==========================\n\n")
#차집합
print(java - python)
print(java.difference(python))
print("\n==========================\n\n\n")
# 추가
python.add("김태호")
print(python)
print("\n==========================\n\n\n")
# 빼기
java.remove("김태호")
print(java)
print("\n==========================\n")
========================================================================================
a = "10" #문자열
b = 4 #정수
# 14가 나오게 하려면?
print(int(a) + b)
c = [1,2,3]
#tuple로 형변환
print(tuple(c))
d = "10.5" #문자열
e = 3
#값이 13.5가 나오게 하려면?
print(float(d)+e)
print(int(float(d))) # 10 (실수->정수 : 버림)
========================================================================================
- 연산자
1. 산술 연산(+, - , *, / %, //, **)
2. 비교 연산(==, !=, >, <, >=, <=)
3. 할당 연산(=, +=, -=, *=, /=, %=, **==, //==)
4. 논리 연산(and, or, not)
5. 비트 연산(&, |, ^, ~, >>, <<)
** 잘 몰랐던 연산자들만 기록
a=5 / b=2
1. 산술 연산
% : 나머지 연산(모드 mod) print (a % b) → 1
** : 앞 수를 뒷 수 만큼 곱해라(거듭제곱) print (a ** b) → 25
// : 몫 print(a // b) →2
2. 비교 연산 : 결과가 True / False 둘 중 하나로 나옴.
!= : 같지 않다.
3. 할당 연산
= 왼쪽 변수에 오른쪽 변수 값에 할당 / c = a +b print (c) → 7
+= : 왼쪽 변수에 오른쪽 변수를 더한 결과를 왼쪽 변수에 할당 / c += a print (c) → 12
-= : 왼쪽 변수에서 오른쪽 변수를 뺀 결과를 왼쪽 변수에 할당 / c -= a print (c) → 7
*= : 왼쪽 변수에 오른쪽 변수를 곱한 결과를 왼쪽 변수에 할당 / c *= a print (c) → 35
/= : 왼쪽 변수에서 오른쪽 변수를 나눈 결과를 왼쪽 변수에 할당 / c /= a print (c) → 7
%= : 왼쪽 변수를 오른쪽 변수로 나누고 남은 나머지를 왼쪽 변수에 할당 / c %= a print (c) → 2
**= : 왼쪽 변수를 오른쪽 변수만큼 곱한 결과(거듭제곱)를 왼쪽 변수에 할당 / c **= a print (c) → 32
//= : 왼쪽 변수를 오른쪽 변수로 나눈 몫을 왼쪽 변수에 할당 / c //= a print (c) → 6
4. 논리 연산
and : 둘다 True -> True
or: 둘중 하나 True -> True
not: not True -> False / not False -> True
5. 비트 연산 : 문자열 앞에 0b가 붙면 이진수
* 이진수는 보통 네자리로. 세자리일 경우 앞에 0이 생략되어 있음.
* 이진수에서 제일 앞이 1이면 음수
a = "0b101" / a = int(a,2) print (a) → 5
b = "0b110" / b = int(b,2) print (b) → 6
& : 같은 자리 수가 모두 1이어야 1 (and) print( a & b) → 4 (0b100)
| : 1이 한 개라도 있으면 1 (or) print( a | b) → 7 (0b111)
^ : 수가 같으면 0, 다르면 1 (exclusive or) print( a ^ b) → 3 (0b011)
~: 1을 0으로, 0을 1로 바꾸고 , 다시 십진수로 바꿀 때는 1을 0으로, 0을 1로 바꾼 후 제일 낮은 자리 수에 1 더함(보수법)
print( ~a ) → -6 (0101 → 1010 -> 십진수 0101 + 1 - > 제일 앞이 1이었으므로 음수)
a = 5
b = 2
#산술 연산
print( a + b ) #7
print( a - b ) #3
print( a * b ) #10
print( a / b) #2.5
print( a % b ) #1 % : 나머지 연산(모드 mod)
print( a ** b ) #25
print( a // b ) #2 //: 몫
#비교 연산
print( a == b) #False
print( a != b) #True
print( a > b) #True
print( a < b) #False
print( a >= b) #True
print( a <= b) #False
#할당 연산
c = a + b
print(c) #7
c += a
print(c) #12
c -= a
print(c) #7
c *= a
print(c) #35
c /= a
print(c) #7
c %= a
print(c) #2
c **= a
print(c) #32
c //= a
print(c) #6
# 비트 연산
a = "0b101"
a = int(a,2)
b = "0b110"
b = int(b,2)
print (a & b)
print (a | b)
print (a ^ b)
print( ~a )
========================================================================================
*C언어를 하다 넘어와서인지 이해가 더 잘 되고, 쉬운 부분도 있지만 불편한 점도 있다.
대체 왜 괄호나 따옴표 하나 열면 자동으로 닫히지가 않는 건지..ㅠㅠ 타자 칠 게 늘어나서 귀찮아졌다.
Python IDLE을 써서 그런가..?
파이썬은 C언어 때처럼 마냥 배우기만 하는 게 아니라 어떻게 가르쳐야 할지 생각하면서 배우다 보니 조금 막막한 부분도 있다.
과연 학생들이 이걸 알아들을 수 있을까..?
최대한 실습 위주로 하며 중간중간 개념 설명을 하는 방향으로 갈지, 개념 위주로 먼저 다루면서 중간중간 실습을 넣을지 고민이다.
전자가 학생들이 따라오기는 좋을 것 같은데 어떤 것이든지 기초를 잘 다져야하기는 해서...
4번 수업이니까 2번은 개념 위주, 2번은 프로젝트 위주로 가도 좋을 것 같다.
이 부분은 내가 개념을 체화한 후 다시 고민해 봐야겠다!!