study/Python

[Python 기초 100제] 1일차,2일차 - 변수,자료형, 연산자

creatorAron 2023. 1. 17. 00:28

Javascript도 마스터 못했지만...

 

헷갈릴 수 있는 문법들을 100제를 풀면서 정리하고 익혀보고자 함.

 

주석처리?

상수 : Python에는 상수를 지정하는 코드가 없다? const라는 키워드 지원이 안된다!! 일단 변수를 상수처럼 사용.

다른 언어처럼 바꿀 수 없게 하는 방법도 있긴함. 별도의 함수를 만들어야 함.

 

변수 : python은 변수 선언 시 메모리 공간을 예약하기 위해 명시적 선언을 할 필요가 없다. 바로 변수명을 적어주고 값을 할당하면 자동으로 변수 선언 및 값 할당이 이루어짐.

 

print할 경우 Javascript console.log와 다른 점

#[1]:변수 선언 및 변수 값 할당
a = 100
b = 3.14
c = 'k'
d = 'Hello World'

#[2]:출력
print('[결과출력]')
print(a)
print(b)
print('a변수의 값은?',a)
print(d)
print(a,b,c,d)

#[3]출력 결과
[결과출력]
100
3.14
a변수의 값은? 100
Hello World
100 3.14 k Hello World

다중 할당

# 다중 할당

a=b=c=d=e= 100
print(a,b,c,d,e) // 100 100 100 100 100

컴마를 활용한 할당 - 쌍을 이뤄서 tuple이 된다고 함.

# 다중 할당

a=b=c=d=e= 100,200
print(a,b,c,d,e) //(100, 200) (100, 200) (100, 200) (100, 200) (100, 200)

print(a, type(a)) // (100, 200) <class 'tuple'>

//한꺼번에 4개
a = 100,3.14,'k','korea'
print(a,type(a)) // (100, 3.14, 'k', 'korea') <class 'tuple'>

한꺼번에 할당하기

오답

a=100, b=3.14, c=k, d=korea
print(a,b,c,d) // SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

정답

a,b,c,d = 100,3.14,'k','korea'
print(a,b,c,d) // 100 3.14 k korea

 

문자열 출력, 템플릿 리터럴..?

백슬래쉬 사용

a = '나는 엄마에게 말했다. "더 이상 \'카레\'는 먹기 싫어요!"라고..'
print(a) // 나는 엄마에게 말했다. "더 이상 '카레'는 먹기 싫어요!"라고..

 

id로 주소값을 출력 할 수 있다.

 

주소값에 따라 list 객체가 같은 주소인지 is 연산자로 출력할 수 있음.

a=[1,2,3,4,5]
b=a
c=[1,2,3,4,5]

print('a is b = ', a is b) # true
print(a is c, b is c) # false false

is 연산자

#is 연산자는 == 연산자와 달리 들어있는 데이터 값을 비교하는게 아니라 같은 객체(주소값)를 가리키는지를 비교한다.

==연산자

# ==연산자는 오브젝트의 데이터 값이 같은지 확인하고자 할 때 사용한다.

slice할 경우 주소값 변경

#slice 하는 법
#자바스크립트 slice처럼 [:] :기준으로 start : end
#[:-1]할경우 뒤에서부터 하나의 데이터를 빼고 나머지를 가져옴.

a = piano!
a[:-1]  //piano
print(a) //piano! <-- 원래 값에는 변화 없음.

 

변수 swap

#a와 b 값 바꾸기

a = 1
b = 2

temp = a
a = b
b = temp

print(a,b) // 2 1

#temp 사용하지 않고 한 줄로 바꾸기

a,b = b,a
print(a,b) // 2 1

자료형

숫자,문자열은 비슷한데 숫자의 경우 정수 int와 실수 float가 나뉨.(C#에서도 변수 선언시 정수인지 실수인지 구분해서 선언했었는데 이와 동일)

그 외 리스트, 튜플, 집합

# [1] : 숫자형 - 정수
a = 100
print(type(a))  #'int'


# [2] : 숫자형 - 실수
b = 3.14
print(type(b)) #'float'


# [3] : 문자형
c = 'apple'
d = '010-1234-5678'
#--- 문자 또는 문자열은 작은따옴표(')나 큰따옴표(")로 감싸줘야 한다 --;;
print(type(c),type(d)) #'str','str'


# [4] : 리스트형
ist = [ 1, 2, 3, 4, 5, 100, 100 ]
print(type(ist)) #'list'


# [5] : 튜플형
tpl = ( 1, 2, 3, 4, 5 )
print(type(tpl)) #'tuple'


# [6] : 집합형 --> 중복 X
s = { 1, 2, 3, 4, 5, 500, 500 }
print(type(s)) #'set'


# [7] : 딕셔너리(사전)형
dic = { 'a' : 1, 'b' : 2 }
print(type(dic)) #'dict'

tuple로 만드는 두 가지 방법

a = ( 1, 2, 3, 4, 5 )
print(type(a)) #<class 'tuple'>

b = 1, 2, 3, 4, 5
print(b) # (1, 2, 3, 4, 5)
print(type(b)) #<class 'tuple'>

아스키코드

아스키 코드도 배웠으니 기록(어디에 써야하는지 아직 잘 모르겠음)

# 아스키 코드란? 컴퓨터가 문자를 이진법의 숫자로 기록할 때 문자에 숫자를 붙여서 기록하는 방법. 
# 그 때 붙이는 아스키 규약에 따라 붙임.

# 대문자 A --> 65  ( 이후부터는 하나씩 증가하므로 B --> 66 )
# 소문자 a --> 97 ( 하나씩 증가하므로 100은 소문자 d )
# 숫자 0 --> 48 ( 하나씩 증가하므로 57은 숫자 9 )
# 엔터(Enter) --> 13
# 아스키코드 0번 --> NULL

print( ord('A') )  #--65
#--- ord() 함수는 문자를 입력받아 해당 문자에 해당하는 아스키코드 값을 반환(ordinal number) --;;
print( ord('a') )  #--97
print( ord('z') )  #--122

연산자

#대부분 연산자가 비슷함 다른 부분만 정리

산술연산자 중에 // #---몫을 구하는 연산자
% #나머지 구하는 연산자(js와 동일)


논리 연산자가 and, or, not으로 그냥 적으면 됨!

a = true
b = false

print (a or b)  #---이런 식으로 사용하면 true가 나옴.


멤버쉽 연산자(in)
basket = [1, 2, 3]
a = 1 in basket
print(a) # true