파이썬(PYTHON)/개념정리

[파이썬(Python)] 자료형, 형변환, 연산자

Hana_h 2022. 7. 8. 23:54

1일차 정리 - 내일부터는 바로 블로그에 기록해야겠다. 손으로 쓰는 걸 좋아하지만 시간이 너무 오래 걸려 효율성이 떨어진다..

========================================================================================

변수, 데이터형(Numbers, Strings)

'''
이 프로그램은 더하기 프로그램입니다.
작성자: 나무의 하루
작성일 : 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:])


==========================================================================
==============

데이터형(List)

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)


==========================================================================
==============

데이터형(Tuple)

**인덱싱에 음수 값을 넣으면 뒤에서부터 셈!
 #거꾸로셀 때는 위치 정보가 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)


==========================================================================
==============

데이터형(Dictionary)

a = {1:"apple", 2:"banana", 3:"tomato"}

print(a)

print(a[1])

print(a[3])


==========================================================================
==============

데이터형(set)

# 집합(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번은 프로젝트 위주로 가도 좋을 것 같다.
이 부분은 내가 개념을 체화한 후 다시 고민해 봐야겠다!!