사전교육 3일차

DUUUPPAAN·2021년 8월 26일
0

개발자의 길

목록 보기
4/6

·대입 연산자

-저번 시간에 했던 대입 연산자를 복습하면서 매우 중요한 부분을 발견했다. 대입 연산자의 경우 처음 선언했던 변수가 변하기 때문에 유의해야 한다는 점!
ex)
num1 = 10
num2 = 40
num2 -= num1
print(num1, num2)

이 경우 결과는 10, 30(40-10)이 된다.
자 이 상태에서

num2 = num1
print(num1, num2)
이렇게 이어서 쓰게 될 경우
결과는 10, 400이 아니라 10, 300이다.
위에서 num2가 40이라고 선언했지만, 대입 연산자를 통해 num2의 결과가 30으로 바뀌었기 때문에 마지막에 대입된 30에서 30
10=300이 되는 것이다.

물론 다시 이어서 쓴다면, num2는 300의 값을 갖게 된다.

※ 대입 연산자 사용 시 변수 값이 변하는 것에 유의하자!!!!! 혹여라도 헷갈린다면 print(변수)를 통해 변수의 값을 꼭 확인해볼 것!

·비교 연산자

-비교 연산자: >, <, <=, >=, ==, !=
말 그대로 비교를 할 때 사용하는 연산자.
프로그램이 해당 연산자를 사용하면, 이 식이 맞는지 틀린지 True False로 표현해줌
크다 작다는 수학에서도 동일하게 쓰이니 그대로 쓰면 된다.
print(5>3) -> 결과는 True
print(3<5) -> 결과는 False

-아래 두 기호는 제시된 두 기호 중 하나라도 True라면 True 값이 출력된다. 두 개 중 하나만 OK면 True!
[<=] : 작거나 같다
[>=] : 크거나 같다

print(3<=5); print(5<=5)
위의 두 경우 전부 결과는 True

print(5>=3); print(5>=5)
위의 두 경우도 결과는 전부 True

여기까지도 조금만 생각해보면 쉬움

==와 !=

-생소한 ==와 !=는 숫자 뿐만 아니라 문자에도 적용가능하다.

[==] : 양변이 같다면 True값 출력. 양변이 같은지?
print(3==3) -> True
위에 언급했듯이 문자에도 적용가능
print("제가 개발자의 길을 가려합니다."=="제가 개발자의 기를 가려합니다.") -> False
이렇게 두 문자열이 같은지 다른지 확인가능.

[!=] : 양변이 다르다면, True값 출력. 양변이 다른지?
print(3!=4) -> True
print(3!=3) -> False

위의 두 연산자는 로그인 같은 부분에서 활용될 수 있다. 예를 들어 ID와 PW를 입력하는 곳에 위의 두 연산자를 활용할 수 있다. ID와 PW를 입력했는데 기존의 정보와 조금이라도 다르다면 오류 메세지를 출력하게 하거나, 전부 같다면 로그인을 허용해주는 방식으로.

※ print(5>3) 보다는
result = 5>3; print(result)로 사용하는 것이 더 일반적이다.
즉, 출력에 바로 수식을 입력하기 보다는 연산 결과를 변수에 담아서 변수를 출력하는 방식이 더 바람직하다고 함.
(이건 경험해보지 못해서 막 와닿지는 않았지만, 알려주신 선생님의 말씀이니 되도록이면 후자처럼 사용!)

·type() 함수

-type() 함수의 경우 변수나 숫자 문자의 자료형을 알 수 있게 해주는 함수다.
type() 안에 무엇을 넣냐에 따라 정수형(int)인지 실수형(float)인지 문자형(str)인지 불린형(bool)인지 표시해준다.
해당 함수로 자료형이 달라 발생하는 연산의 오류 등을 확인하여 수정할 수 있다.

·논리 연산자

-and, or, not
논리 연산자 양변에는 불린형 타입의 변수 혹은 식이 와야 한다.
(참고로 연산자의 경우 프로그램마다 조금씩 다른 경우가 많다고 함. 위의 연산자는 python 기준!)

-and : 둘 중 하나라도 False가 있으면 결과는 False
print(True and True) -> 결과: True
print(True and False) -> 결과 : False
print(False and True) -> 결과 : False
print(False and False) -> 결과 : False
이것도 로그인 시 아이디도 기존 정보와 동일하게 썼고, 비밀번호도 기존 정보와 동일하게 썼다는 결과를 가진다면, 로그인을 하게 해주는 방식으로 활용가능
그 외의 경우에는 전부 False 출력!

언급했듯이 변수 혹은 '식'도 올 수 있다.
print(5>3 and 3>=3) -> True
bool타입의 변수가 오면 되니 다음과 같이 문자형도 가능하다
print("abc"=="adc" and 5>3) -> False

var1 = 10>=3 -> True
var2 = "가나다"=="가다나" -> False
var3 = var1 and var2
print(var3) -> False
위처럼 변수에도 넣어서 사용 가능! 물론 위의 경우에는 var1과 var2의 결과가 True인지 False인지 확인하는 출력을 중간에 넣어서 확인하면 더 좋을 수 있다.
물론 그렇게 출력의 값이 많아진다면 뭐가 var1의 값인지 헷갈리기 때문에 출력 시 앞에 확인할 수 있는 문자열을 배치하는 것도 좋다. 다음처럼.
print("var1: ", var1)
print("var2은? ", var2)
print("var3의 값은? ", var3)

-or 연산 : 둘 중 하나라도 True면 결과는 True, 둘 다 False 일 때만 결과는 False
(또는; 두 개가 있다면 둘 중 하나라도? 느낌임)
print(True and True) # 결과 : True
print(True and False) # 결과 : True
print(False and True) # 결과 : True
print(False and False) # 결과 : False

-not 연산 : bool 타입 변수 또는 식에 사용할 수 있으며 값을 반전시킴.
print(not True) # 결과는 반전됨. 결과는 False
print(not 5>3) -> false
var4 = False
var5 = not var4
print("var5 값은?", var5) # True

·멤버십 연산(in, not in)

-print("a" in "abcd") # True
앞의 "a"는 체크하고 싶은 목표, "abcd"는 체크할 대상
-print("a" not in "abcd") # False

·input 함수

-이전까지는 변수의 값을 입력하고 콘솔에서 출력되게 했지만, input 함수를 사용하면 콘솔에서 값을 입력하게 할 수 있다.
number1 = input("첫 번째 숫자를 입력하세요: ",)
print(number1)
이런식으로 사용할 경우 콘솔에
첫번째 숫자를 입력하세요: 라는 질문이 뜨고 숫자를 입력할 수 있게 된다. 그리고 숫자를 입력하면 입력된 숫자를 print함수로 출력한다.

-문제: input 함수를 이용하여 숫자 두 개를 입력 받고 입력된 숫자의 합을 출력해보세요.

num1 = input("첫 번째 숫자를 입력하세요: ",)
num2 = input("두 번째 숫자를 입력하세요: ",)
num3 = num1 + num2
print(num3)

위처럼 하면 될 것 같지만,
숫자를 각각 10, 20으로 입력하고 출력하면 결과는 1020이 나온다.

수업시간에 이런 결과가 나왔는데, 이렇게 나온 이유는 아마도 num1과 num2에 입력된 10과 20은 정수형이 아닌 문자열이기 때문일 것이라 추측했다. (+ 연산자가 연결된 결과를 출력했으니.. 컴퓨터는 잘못이 없다 잘못은 내가 한 것!) 그래서 문제 푸는 시간 동안 구글링을 해보니 int()라는 함수를 통해 입력된 값을 정수형으로 바꿀 수 있었다.

그래서 남은 시간동안 다른 방식으로 시도해봤다.
num1 = input("첫 번째 숫자를 입력하세요: ",)
num2 = input("두 번째 숫자를 입력하세요: ",)
print(type(num1))
print(type(num2))
(위의 타입함수로 num1과 2에 입력된 자료형이 무엇인지 확인해보았다.)
그리고 구글링에서 본 int()함수로
num1 = int(num1)
num2 = int(num2)
num3 = num1 + num2
까지 쓰고 나서야 결과인 30을 얻을 수 있었다.
물론 위의 타입함수에서 자료형의 결과는 'str' 문자형이었다.

이 후 풀이과정에서 선생님께서 해당 부분을 미리 알려주지 않아 당황하셨겠다는 말과 함께 내가 위에서 쓴 그대로 강의를 해주셨다.

강의가 끝난 후 구글링한 블로그에서 더욱 간결하게 쓸 수 있는 방법도 있어서 따로 추가해본다.
위의 복잡한 과정을 엄청나게 줄일 수 있다.
num1 = int(input("첫 번째 숫자를 입력하세요: ",))
num2 = int(input("두 번째 숫자를 입력하세요: ",))
애초에 변수에 넣을 때 입력된 값을 바로 정수형으로 바꾸고 변수로 대입시키는 방식으로 쓴 것이다.
이 후, num3 = num1 + num2; print(num3) 혹은 print(num1 + num2)를 하면 30을 바로 얻을 수 있다.

3일차

  1. 내주신 문제를 스스로 해결해보려 구글링도 하고 문제의 답을 풀어냈다는 것이 기분 좋았다.
  2. 앞으로 벨로그에 이렇게 자세하게는 못 쓰겠지만, 스스로 이런 식으로 하루에 뭘 배웠는지 정리하면서 또 써보는 것이 상당히 도움이 될 것 같다. 앞으로 6개월 간 매일 12시간의 공부도 이런 식으로 바로바로 복습 정리하도록 하자!
  3. 파이팅!!!
profile
비전공자란 이름으로 새로운 길을 가려 하는 신입

0개의 댓글