안녕하세요? 제이스쿨입니다.
원래대로라면 입력과 출력을 포스팅해야 하지만
지난 시간 변수에 대한 설명이 부족했던 것 같아
간단한 문제로 공부해보고자 합니다.
▶오늘의 문제
변수a의 값이 3이고
변수b의 값이 8일때
a와 b의 값을 서로 바꾸시오.
▶문제 설명
문제에 대해 설명드리겠습니다.
위 사진과 같이 a변수에는 3을 대입하고 b변수에는 8을 대입했습니다.
그다음 회색박스의 코드를 입력하니
마지막에 a와 b를 출력하자
다음과 같이 출력이 되었습니다.
회색박스에는 어떤 코드가 있었을까요?
▶문제 풀이
대다수 처음 파이썬을 접하신 분들이라면
다음과 같이 코드를 적으셨을 것 같습니다.
#1
a=3
b=8
a=b
print(a,b)
정답코드와 위 코드의 차이점은
a=b 위아래로 t=a와 b=t가 있느냐 없느냐 입니다.
a=b만 있는 경우 실행시 사진과 같이 8 8 이 출력됩니다.
a를 출력했더니 b의 값인 8이나오고
b를 출력했더니 b의값인 8이 나온 것입니다.
이를 통해서 a=b라는 코드를 적었을 때, 코드는 뒤바뀌지 않고
오른쪽 변수의 값이 왼쪽 변수에게 대입된다는 것을 알 수 있습니다.
어떤 분들은 다음과 같이 코드를 작성하셨을 수 있습니다.
#2
a=3
b=8
a=b
b=a
print(a,b)
언뜻보면 a에는 b의 값을 대입하고
b에는a의 값을 대입하니 맞는 것 같습니다.
하지만 실행을 해보면
이번에도 a를 출력하니 8
b를 출력하니 8이 나왔습니다.
왜 이렇게 된 것일까요?
예전 포스팅에서 설명드렸듯, 프로그램은
프로그램작성자가 작성한 대로 움직일 뿐
프로그램작성자가 원하는 대로 움직일만큼
똑똑하지 않습니다.
#2코드를 해석해보겠습니다.
a=3
변수a에 3을 대입한다. a의 값은 3, b의 값은 없음(변수지정을 안했기 때문)
b=8
변수b에 8을 대입한다. a의 값은 3, b의 값은 8
a=b
b값을 a에 대입한다. a의 값은 8, b의 값은 8
b=a
a값을 b에 대입한다. a의 값은8, b의 값은 8
print(a,b)
a와 b를 출력한다.
8 8
이해가 되시나요?
그렇기 때문에 출력 시, 8 8이 출력된 것입니다.
올바른 코드는 다음과 같습니다.
▶정답 코드
a=3
b=8
t=a
a=b
b=t
print(a,b)
위 코드도 #2코드와 같이 해석해보겠습니다.
a=3
변수a에 3을 대입한다. a의 값은 3, b의 값과 t의 값은 없음(변수지정을 안했기 때문)
b=8
변수b에 8을 대입한다. a의 값은 3, b의 값은 8, t의 값은 없음(변수지정을 안했기 때문)
t=a
a값을 t에 대입한다. a의 값은 3, b의 값은 8, t의 값은 3(a로부터 받음)
a=b
b값을 a에 대입한다. a의 값은 8(b로부터 받음), b의 값은 8, t의 값은 3
b=t
t값을 b에 대입한다. a의 값은 8, b의 값은 3(t로부터 받음), t의 값은 3
print(a,b)
a와 b를 출력한다.
8 3
어떠신가요?
이해가 되셨나요?
두 변수 값을 서로 바꾸기 위해선 변수가 총 3개가 필요했습니다.
이를 통해 오늘은
등호(=)는 값을 같게 만든다기 보다 값을 대입시키는 부호라는 것,
두 변수의 값을 서로 바꾸기위해선 변수가 1개 더 필요하다는 것을
알 수 있었습니다.
이해가 안되는 부분은 오늘 포스팅과 같이 특별포스팅을 올려
학습에 도움을 드릴 수 있도록 하겠습니다.
피드백은 언제나 환영입니다.
감사합니다.
[Python/파이썬]009. 입력과 출력② / 파이썬 독학 (0) | 2020.02.29 |
---|---|
[Python/파이썬]007. 입력과 출력① / 파이썬 독학 (0) | 2020.02.19 |
[Python/파이썬]006. 출력하기④ / 파이썬 독학 (0) | 2020.02.18 |
[Python/파이썬]005. 출력하기③ / 파이썬 독학 (0) | 2020.02.17 |
[Python/파이썬]004. 출력하기② / 파이썬 독학 (0) | 2020.02.16 |
댓글 영역