-저번 시간에 했던 대입 연산자를 복습하면서 매우 중요한 부분을 발견했다. 대입 연산자의 경우 처음 선언했던 변수가 변하기 때문에 유의해야 한다는 점!
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에서 3010=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() 안에 무엇을 넣냐에 따라 정수형(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
-print("a" in "abcd") # True
앞의 "a"는 체크하고 싶은 목표, "abcd"는 체크할 대상
-print("a" not in "abcd") # False
-이전까지는 변수의 값을 입력하고 콘솔에서 출력되게 했지만, 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을 바로 얻을 수 있다.