아래 코드를 실행한 다음에 키보드에서 숫자 13을 입력하고 Enter 키를 누르면
최종적으로 '맞았습니다!'가 출력된다.
print("숫자맞히기 게임에 환영합니다.")
secret = 13
guess_str = input("10부터 19 사이의 숫자 하나를 입력하세요: ")
guess = int(guess_str)
if secret == guess:
print("맞았습니다!")
else:
print("틀렸습니다!")숫자맞히기 게임에 환영합니다.
10부터 19 사이의 숫자 하나를 입력하세요: 13
맞았습니다!
위 코드의 실행 내용은 다음과 같다.
secret변수에 정수 13을 할당한다.사용자가 입력한 값 13은
input()함수에 의해 문자열'13'으로 반환되어 변수guess_str에 할당된다.문자열
'13'이 곧바로guess변수에 정수 13으로 변환되어 할당된다.secret == guess가True로 계산되어 "맞았습니다!"가 화면에 출력된다.
input() 함수¶
일반적인 input()의 사용법은 다음과 같다.
input("입력값 안내 문자열")인자
input() 함수와 함께 지정되는 인자는
사용자가 입력해야 하는 값에 대한 정보를 알려주는 문장이며,
사용자의 입력값을 처리하는 방식과는 무관하다.
따라서 안내 문자열을 생략할 수 있다.
입력값 안내 문자열을 사용하지 않으면 아무런 정보 없이 사용자가 Enter 키를 입력할 때까지 기다린다.
아래 코드를 실행한 후에 파이썬을 입력한 후에 Enter 키를 치면
문자열 '파이썬'이 input() 함수의 입력값으로 처리된다.
input()파이썬
'파이썬'실행 과정
입력값 안내 문자열을 지정하고 실행하면 안내 문자열이 먼저 출력되고 사용자가 Enter 키를 입력할 때까지 입력창에서 커서가 기다린다.
반환값
input() 함수의 반환값은 사용자가 Enter 키를 치기 전까지
타이핑한 기호들로 구성된 문자열이다.
아래 코드를 실행할 때 사용자가 1과 3을 연속으로 입력한 후에 Enter 키를 치면
문자열 '13'을 반환한다.
input("10부터 19 사이의 숫자 하나를 입력하세요: ")10부터 19 사이의 숫자 하나를 입력하세요: 13
'13'이런 이유로 guess_str 변수에 할당된 값은 정수 13이 아니라 문자열 '13'이다.
guess_str'13'type(guess_str)str숫자 입력값 처리¶
문자열 '13'을 secret에 할당된 정수와 비교하면,
즉, secret == guess_str을 실행하면 무조건 "틀렸습니다!"가 출력된다.
이유는 정수와 문자열을 비교하면 무조건 False로 계산되기 때문이다.
13 == '13'Falseint() 함수 활용
guess_str에 할당된 값을 정수형으로 변환한 다음에 secret 변수가 가리키는 값과
동일한지 여부를 판단해야 한다.
이를 위해 int() 형변환 함수를 이용한다.
print(guess == int(guess_str))True
int(input()) 활용
앞서 입력된 값을 처리하기 위해 두 개의 변수를 사용하였다.
guess_str = input("10부터 19 사이의 숫자 하나를 입력하세요: ")
guess = int(guess_str)그런데 어차피 정수로 변환된 값을 사용할 것이기에 guess_str 변수를 사용하지 않으면서
직접 guess를 다음과 같이 정의해도 된다.
guess = int(input("10부터 19 사이의 숫자 하나를 입력하세요: "))이제 secret 변수에 저장된 13을 맞히는 코드를 다음과 같이 작성할 수 있다.
print("숫자맞히기 게임에 환영합니다.")
secret = 13
guess = int(input("10부터 19 사이의 숫자 하나를 입력하세요: "))
if secret == guess:
print("맞았습니다!")
else:
print("틀렸습니다!")숫자맞히기 게임에 환영합니다.
10부터 19 사이의 숫자 하나를 입력하세요: 13
맞았습니다!
물론 13이 아닌 다른 숫자를 입력하면 '틀렸습니다’가 출력된다. 아래 코드는 17일 입력했을 때의 결과를 보여준다.
print("숫자맞히기 게임에 환영합니다.")
secret = 13
guess = int(input("10부터 19 사이의 숫자 하나를 입력하세요: "))
if secret == guess:
print("맞았습니다!")
else:
print("틀렸습니다!")숫자맞히기 게임에 환영합니다.
10부터 19 사이의 숫자 하나를 입력하세요: 17
틀렸습니다!
float() 함수 활용
만약에 입력값을 부동소수점으로 변환해야 한다면 float() 형변환 함수를 이용한다.
아래 코드는 7을 2로 나눈 값 3.5를 입력해야 한다.
print("나눗셈 질문입니다.")
guess = float(input("7 나누기 2는 얼마인가요? "))
if guess == 3.5:
print("맞았습니다!")
else:
print("틀렸습니다!")나눗셈 질문입니다.
7 나누기 2는 얼마인가요? 3.5
맞았습니다!
int()를 사용하면 부동소수점 형식의 문자열 '3.5'를 처리할 수 없기에 오류가 발생한다.
print("나눗셈 질문입니다.")
guess = int(input("7 나누기 2는 얼마인가요? "))
if guess == 3.5:
print("맞았습니다!")
else:
print("틀렸습니다!")나눗셈 질문입니다.
7 나누기 2는 얼마인가요? 3.5
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[16], line 3
1 print("나눗셈 질문입니다.")
----> 3 guess = int(input("7 나누기 2는 얼마인가요? "))
5 if guess == 3.5:
6 print("맞았습니다!")
ValueError: invalid literal for int() with base 10: '3.5'예제¶
예제 1
입력받은 두 정수의 합을 지정된 형식으로 출력하는 코드를 작성한다.
입력된 두 개의 정수는 각각 변수 a와 b에 저장한다.
예를 들어 3과 2가 입력되면 아래처럼 화면에 출력되도록 한다.
3 + 2 = 5답:
정수 두 개를 각각 입력받을 수 있도록 input() 함수를 두 번 사용한다.
첫째 입력값은 정수로 변환해서 a에 할당, 둘째 입력값은 b에 할당한다.
지정된 형식으로의 출력은 print() 함수를 이용한다.
print() 함수에 쉼표를 이용하여 여러 개의 인자를 지정하면
각각의 인자가 공백으로 구분되어 한 줄에 출력되는 성질을 이용한다.
a = int(input("첫째 정수를 입력하세요: "))
b = int(input("둘째 정수를 입력하세요: "))
print(a, "+", b, "=", a + b)첫째 정수를 입력하세요: 3
둘째 정수를 입력하세요: 2
3 + 2 = 5
예제 2
두 개의 부동소수점x와 y를 입력받아 두 수의
평균값을 아래 형식으로 출력하는 코드를 작성한다.
2.4 와 5.7 의 평균값: 4.05단, x와 y의 평균값은 (x + y)/2이며, 평균값은 소수점 이하 셋째 자리에서 반올림한다.
힌트: float() 함수와 round() 함수 활용
답:
round() 함수의 첫째 인자는 부동소수점, 둘째 인자는 소수점 이하 자릿수를 지정하며
반올림을 이용하여 지정된 자릿수까지만 계산한다.
활용법은 다음과 같다.
round(3.141592, 3)3.142round(3.141592, 2)3.14사용자가 정수가 아닌 유한소수를 입력할 것을 예상해야 하기에
input() 함수의 결과에 바로 float() 함수를 적용한다.
그 다음에 평균값을 계산하여 지정된 방식으로 출력한다.
단, round() 함수를 이용하여 소수점 이하의 자릿수를 2로 지정한다.
x = float(input("첫째 유한소수를 입력하세요: "))
y = float(input("둘째 유한소수를 입력하세요: "))
# 평균값
mean = (x + y)/2
print(x, "와", y, "의 평균값:", round(mean, 2))첫째 유한소수를 입력하세요: 2.4
둘째 유한소수를 입력하세요: 5.7
2.4 와 5.7 의 평균값: 4.05
예제 3
사용자로부터 정수를 한 개 입력받은 후 입력된 정수의 짝수/홀수 여부를 판정하는 코드를 작성한다.
답:
input() 함수를 다음과 같이 이용하여 사용자로부터 정수를 입력 받아 정수로 변환하여
변수 user_input에 할당한다.
user_input = int(input("정수 하나를 입력하세요: "))이제 user_input에 할당된 정수의 짝수/홀수 여부를 2로 나눈 나머지가 0인지
여부에 따라 결정하여 그결과를 출력한다.
아래 코드는 9를 입력했을 때 홀수 판정을 내린다.
user_input = int(input("정수 하나를 입력하세요: "))
if user_input % 2 == 0:
print("짝수")
else:
print("홀수")정수 하나를 입력하세요: 9
홀수
아래 코드는 if ... else ... 조건문을 사용하지 않으면서
동일한 기능을 수행하는 코드를 보여준다.
대신 짝수일 때는 True를 홀수일 때는 False를 출력한다.
예를 들어 18을 입력하면 True를 출력한다.
user_input = int(input("정수 하나를 입력하세요: "))
print("입력값이 짝수인가요?", user_input % 2 == 0)정수 하나를 입력하세요: 18
입력값이 짝수인가요? True
예제 4
사용자로부터 하나의 정수를 입력받은 후 입력값이 17보다 크면 입력값과의 편차의 제곱을, 아니면 입력된 정수를 출력하는 코드를 작성한다.
답:
두 정수의 크기비교를 위해 > 연산자를 이용한다.
a가 표현하는 값이 b가 표현하는 값보다 클 때
표현식 a > b가 True로 계산된다는 사실을
if ... else ... 조건문에 적용한다.
20을 입력할 때: 9 출력
user_input = int(input("정수 하나를 입력하세요: "))
if user_input > 17:
print('17과의 편차의 제곱:', (user_input - 17)**2)
else:
print("17보다 크지 않은 값", user_input, '을(를) 입력하였습니다.')정수 하나를 입력하세요: 20
17과의 편차의 제곱: 9
15를 입력할 때: 15 출력
user_input = int(input("정수 하나를 입력하세요: "))
if user_input > 17:
print('17과의 편차의 제곱:', (user_input - 17)**2)
else:
print("17보다 크지 않은 값", user_input, '을(를) 입력하였습니다.')정수 하나를 입력하세요: 15
17보다 크지 않은 값 15 을(를) 입력하였습니다.
예제 5
사용자로부터 0이 아닌 한자리 정수 n 을 입력받아 n + nn + nnn 을 계산하는 코드를 작성한다.
단, nn과 nnn은 곱셈이 아니고 문자열 n을 각각 두 번과 세 번 반복한 결과로 생성된 정수를 가리킨다.
예를 들어 5가 입력되면 아래 값이 출력되어야 한다.
5 + 55 + 555 = 615주의사항: int(input()) 형식을 사용하면 곤란해짐.
답:
(1) 문자열 + 연산자 활용
5를 입력하면 input() 함수는 문자열 '5'를 입력값으로 지정한다.
n = input("한 자리 정수 하나를 입력하세요: ")이제 문자열 + 연산자를 이용하여 변수 n에 할당된 값을 이어붙인다.
예를 들어 문자열 '5'를 이어붙이면 '55'가 된다.
여기에 int() 함수를 적용하면 정수 55가 계산된다.
유사한 방식으로 정수 555를 계산할 수 있다.
위 설명을 코드로 구현한 다음에 5를 입력하면 언급된 결과가 화면에 출력된다.
n = input("한 자리 정수 하나를 입력하세요: ")
nn = n + n
nnn = nn + n
print(n+' + '+nn+' + '+nnn+' =', int(n) + int(nn) + int(nnn))한 자리 정수 하나를 입력하세요: 5
5 + 55 + 555 = 615
(2) 문자열 * 연산자 활용
두 변수 n과 nn을 * 연산자를 이용하여 정의한다.
실행할 때 7을 입력하여 7 + 77 + 777 = 861을 계산한다.
n = input("한 자리 정수 하나를 입력하세요: ")
nn = n * 2
nnn = n * 3
print(n+' + '+nn+' + '+nnn+' =', int(n) + int(nn) + int(nnn))한 자리 정수 하나를 입력하세요: 7
7 + 77 + 777 = 861
연습문제¶
참고: (연습) 사용자 입력