파이썬 기초 2

매생이·2021년 10월 9일
0

파이썬 공부

목록 보기
3/8

연산자

연산자란?
하나 이상의 값을 가지고 정해진 규칙에 따라 새로운 값을 만들어내는 것을 연산이라고 하는데,
연산자는 그 연산의 내용을 나타내며 피 연산자는 연산의 대상이 되는 값을 말합니다.
연산자의 종류는 4가지가 있습니다.

  • 산술 연산자
    • - : 빼기
    • + : 더하기
    • * : 곱하기
    • / : 나누기(0으로 나누면 오류 발생)
    • % : 나머지 값 구하기
    • ** : 거듭제곱 구하기
  • 할당 연산자
    • = : 왼쪽 피연산자에 오른쪽 피연산자를 저장
    • += : 왼쪽 피연산자의 값에 오른쪽 피연산자의 값을 더해서 왼쪽 피연산자에 저장
    • -= : 왼쪽 피연산자의 값에 오른쪽 피연산자의 값을 빼서 왼쪽 피연산자에 저장
    • /= : 왼쪽 피연산자의 값에 오른쪽 피연산자의 값을 나눠서 왼쪽 피연산자에 저장
    • %= : 왼쪽 피연산자의 값에 오른쪽 피연산자를 나눈 나머지를 왼쪽 피연산자에 저장
    • //= : 왼쪽 피연산자의 값에 오른쪽 피연산자의 값만큼 제곱근한 값을 왼쪽 피연산자에 저장
  • 비교 연산자
    • > : 왼쪽 피연산자의 값이 오른쪽 피연산자보다 크면 True, 작으면 False를 리턴
    • >= : 왼쪽 피연산자의 값이 오른쪽 피연산자보다 크거나 같으면 True, 작으면 False를 리턴
    • < : 왼쪽 피연산자의 값이 오른쪽 피연산자보다 작으면 True, 크면 False를 리턴
    • <= : 왼쪽 피연산자의 값이 오른쪽 피연산자보다 작거나 같으면 True, 크면 False를 리턴
    • == : 왼쪽 피연산자의 값이 오른쪽 피연산자와 같으면 True, 작으면 False를 리턴
    • != : 왼쪽 피연산자의 값이 오른쪽 피연산자와 다르면 True, 작으면 False를 리턴
  • 논리 연산자
    #논리연산자의 경우,
    • and : 왼쪽 피연산자의 값이 True이고 오른쪽 피연산자의 값도 True이면 True를 리턴
    • or : 왼쪽 피연산자의 값이나 오른쪽 피연산자의 값중 하나라도 True이면 True를 리턴
    • not : 피연산자를 하나만 갖는 단항 연산자로, 피연산자의 반대되는 값을 리턴한다.

Operator

operator를 설명하기 이전에 먼저 모듈에 대해서 알아야 합니다.
모듈이란 누군가가 이미 만들어놓은 기능이라고 생각하시면 되는데, operator모듈은 수학 연산자의 기능을 만들어놓은 모듈입니다.

당연하게도 컴퓨터는 + 연산자를 바로 이해하지 못합니다.
내부적으로 + 연산자는 왼쪽에 존재하는 변수의 데이터와 오른쪽에 존재하는 변수의 데이터를 매개변수삼아 더하기 연산을 시행하는 함수 입니다.
그럼 방금 앞에서 말한 매개변수의 더하기 연산은 어떻게 시행되느냐는 어셈블리 수준까지 가야할 것 같기 때문에 설명하지 않겠습니다.

+ 뿐만 아니라 모든 특수기호를 사용한 연산자가 위에서 말한 것처럼 함수가 내재된 것입니다.

비단 기호가 아니더라도, 이전 게시물에서 이야기한 del 같은 경우도 operator 모듈입니다.

operator는 기존에 존재하는 operator와 예약어들을 제외한 단어중에서 함수를 선언하고 operator로 설정하여서 직접 만들어 사용할 수도 있습니다.

조건문

조건문이란? 말 그대로 조건을 명시하고 조건에 부합하는지에 따라 프로그램을 분기한다.
게임의 선택지처럼 A또는 B의 다른 결과로 분기된다.

조건문의 종류는 3종류로 나눌 수 있다.

  • if문 : 단일조건
  • if ~ else문 : 양자택일
  • if ~ elif문 : 다자택일(다중조건)
a = 10
b = 11
if (a>b):
  print("a is bigger than b")
else : 
  print("b is bigger than a")

출력결과 : b is bigger than a

다중조건문 사용시 조심해야할 점

- 조건문 순서가 중요하다

다중 조건문은 코드를 위에서부터 아래로 읽어 내려오면서 첫번째로 만난 조건문의 조건이 참일 경우, 다른 조건문들은 고려하지않고 해당 조건문을 실행한다.
즉 a - b - c - d 순서의 조건문이 있다면, a조건문이 만족될경우 b c d는 고려되지않는다.
그런데, a조건문이 대부분 만족되는 경우거나 default를 a순서에 설정해버리면 다른 조건문들이 고려되지 않기 때문에 문제가 생긴다.

score = int(input("점수를 입력하세요 : "))

if (score>50):
	print("D score")
elif (score>70):
	print("C score")
elif (score>90):
	print("B score")
elif (score>=100):
	print("A score")

80 입력시 실행 결과 : D score

원래대로라면 80은 70이상이기 때문에 C score가 맞지만, D score가 출력되는 문제가 생긴다.

그리고 위 예시에는 한가지 더 조심해야하는 문제가 있는데, 바로 범위의 정확한 설정이다.

score = int(input("점수를 입력하세요 : "))

if (score==100):
	print("A score")
elif (100>score>90):
	print("B score")
elif (90>=score>70):
	print("C score")
elif (70>=score>50):
	print("D score")

80 입력시 실행 결과 : C score

조건문의 조건 설정시, 정확한 범위를 설정해주어야 경계값에서 오류가 생기지 않는다.

중첩 조건문

조건문의 응용으로, 조건문 속의 조건문인 중첩 조건문을 사용할 수 있다.

dinner = "fried chicken"
if ("chicken" not in dinner): 
# not in은 dinner라는 변수의 문자열에 chicken이 포함되어 있는지를 true false로 리턴
  print("dinner is not chicken")
else:
  if (dinner == "fried chicken"):
    print("dinner is fried chicken")
  else :
    print("dinner is special chicken")

실행 결과 : dinner is fried chicken

반복문

반복문이란 특정 실행을 반복하는 코드를 이야기한다.
반복문을 사용하면 프로그래밍이 간결하고 유지보수가 쉬워진다.
그렇기 때문에 반복문은 굉장히 중요하다.
코드의 실행시간이 좌지우지되는 중요한 부분이기도 하지만, 반복문 내에서 오류가 나면 무한루프에 빠지거나 전혀 다른 결과가 나올 수 있기 때문이다.

대표적인 반복문으로는 for 문과 while 문이 있는데 반복을 위해 설정하는 조건에 차이가 있다.

횟수에 의한 반복조건에 의한 반복으로 나누어지는데, 횟수에 의한 반복이 for , 조건에 의한 반복이 while이다.

횟수에 의한 반복시 반복 범위를 설정해주어야 하는데, range() 함수를 많이 사용한다.
range() 함수는 매개변수로 시작, 끝, 증가 값을 줄 수 있다.

  • ex) range(1,10,2) : 1부터 9까지 2씩 증가하며 출력. 끝으로 지정한 값의 -1까지가 범위
    증가 값은 지정하지 않을 수 있으며 default는 1이다.
#예시
sum=0
for i in range(10):
	sum += i
print(sum)

실행결과 : 45

익숙하지 않은 사람은 왜 55가 아니라 45가 나올까? 하고 생각할 수도 있는데, range(10)을 사용하면 숫자가 1이 아니라 0부터 시작하여 10개째인 9까지 i에 할당되기 때문이다.
파이썬에서 대부분의 숫자 범위를 지정해서 사용할때 n을 지정하면 0부터 n-1까지 라고 생각하면 편하다.

while문은 조건식을 주고, 조건식이 참(True)인 동안 계속 반복하는 방식이다.

#예시
i=0
sum=0
while(i<10):
  sum+=i
  i+=1

print(sum)

실행결과 : 45

  • 무한루프 : 반복문을 빠져나올 수 없는 경우를 이야기하는데, 보통 while문에서 조건식의 결과가 항상 true인 경우, 반복문을 빠져나올 수 없다.

Continue : 반복문의 실행중 continue를 만나면 코드의 실행을 생략하고 다음 반복회차로 넘어간다.
break : 반복실행중 break를 만나면 반복문 전체를 빠져나온다.

중첩 반복문

반복문도 조건문처럼 중첩 반복문이 가능하다.
사실 중첩 반복문은 실제 코드 구현을 할 경우 굉장히 많이 사용하게 되는데, 물론 많이 사용하는건 코드의 가독성과 처리시간때문에 지양해야하지만, 코드 구현력이 딸리는 나로썬 굉장히 애용했었다...

사용방법은 반복문 안에 또 다른 반복문을 선언하는 방법의 예시로, 10번 반복하는 반복문을 또 10번 반복시키는 방법으로 100회를 수행할 수 있다.

#예시
data = ["a","b","C","d","E","f","G","H","i"]
newdata=[]
for alphabet in data:
   new = alphabet.upper()
   #소문자를 대문자로 바꿔주는 함수
   for i in range(10):
     new_index = new+str(i)
     newdata.append(new_index)

print(newdata)

실행 결과 : ['A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'B0', 'B1', 'B2',......., 'I7', 'I8', 'I9']]

위 코드 예시와 같이, 많은 list를 대량으로 만들어 인덱스를 만들거나 할 때 쓰기 편합니다.

0개의 댓글