CHAPTER 03 프로그램 사용자로부터의 입력 그리고 코드의 반복

유동헌·2021년 9월 3일
0

열혈파이썬_기초편

목록 보기
3/14

01 프로그램 사용자로부터 입력받기

>>> str = input("how old are you: ")
how old are you: 12 years old
>>> print(str)
12 years old

input 함수가 호출되면 호출할 때 인자로 전달된 문자열이 출력되면서 프로그램 사용자가 무엇인가를 입력할 때까지 기다리게 된다. 따라서 이 상태에서는 무엇이든 키보드로 입력하고 입력의 끝을 의미하는 엔터키를 눌러야 한다. 그러면 키보드로 입력된 내용을 input 함수가 반환한다. 즉 다음과 같이 입력하고 엔터키를 누르면, 입력된 내용을 input 함수가 문자열의 형태로 반환해서 다음의 상태가 된다.

input() → 문자열로 반환

연습문제

input 함수는 프로그램 사용자가 입력한 내용을 문자열의 형태로 반환한다는 사실을 본문에서 설명하였다. 따라서 이를 근거로 다음의 실행 흐름을 보이는 예를 작성해보자. 12, 34, 1234

>>> str1 = input()
12
>>> str2 = input()
34
>>> str1+str2
'1234'
>>>

02 입력받은 내용을 숫자로 바꾸려면

>>> rad = eval(input("radius: "))
radius: 2.5
>>> area = rad * rad * 3.14
>>> print(area)
19.625

연습문제

eval 함수는 input 함수를 잘 묶어서 사용하면 프로그램 사용자로부터 산술 연산이 가능한 '수'를 입력받을 수 있음에 대해 본문에서 설명. 따라서 이를 근거로 다음의 실행 흐름을 보이는 예를 작성해보자.

>>> num1 = eval(input("첫 번째 입력 : "))
첫 번째 입력 : 1.24
>>> num2 = eval(input("두 번째 입력 : "))
두 번째 입력 : 3.12
>>> num3 = eval(input("세 번째 입력 : "))
세 번째 입력 : 4.46
>>> num1 + num2 + num3
8.82

03 강력한 그러나 위험할 수 있는 eval 함수

04 정해진 횟수만큼 반복해서 실행시키기

for i in [0,1,2]:
    print(i)
    print("hi")

변수 i에 0을 넣어서 for에 속한 문장들을 실행해, 그리고 이어서 i에 i을 넣어서, 마지막으로 2를 넣어서 for에 속한 문장들을 각각 실행해.

sum = 0
for i in [1,2,3,4,5,6,7,8,9,10]:
    sum += i
    print(sum)

# 출력
1
3
6
10
15
21
28
36
45
55

연습문제

구구단에서 7단 전부를 출력하는 코드를 for 루프를 기반으로 작성해보자

multiplication = 1
for i in [1,3,5,7,9]:
    multiplication *= i
    print(multiplication)

for i in [1,2,3,4,5,6,7,8,9]:
    gugudan7 = 7 * i
    print(gugudan7)
    
for i in [9,8,7,6,5,4,3,2,1]:
    gugudan7 = 7 * i
    print(gugudan7)

05 for in 과 range의 조합

sum = 0
for i in range(1, 100+1):
    sum += i
    print(sum)

data = int(input())
for i in range(data):
    data += i
    print(data)

연습문제

"안녕하세요"를 총 5회 출력하는 코드를 for, range 기반으로 작성해보자

for i in range(5):
    print("안녕하세요")

구구단 7단 전부를 출력하는 코드를 for, range 기반으로 작성해보자

for i in range(10):
    result = 7 * i
    print(result)

다음 수식의 결과를 계산해서 그 값을 반환하는 함수를 for, range 기반으로 정의해보자

X, Y제곱

예를 들어서 함수의 이름이 exp라고 할 때, exp(2,3)의 형태로 호출되면 2 2 2 = 8이므로 8이 반환되어야 한다. 이 문제는 함수 안에 for 루프를 넣어서 작성해야 한다.

def exp(num1, num2):
    for i in range(num2+1):
        result = num1 * i
    print(result)
    
exp(2,3)

# 출력
6

def exp(x, y):
    result = 1
    for i in range(y):
        result = result * x
    return result

print(exp(2,3))

# 출력
8

위의 답변이 내가 풀었던 답변. 잘 안 풀려서 답지를 보고 알았음.

우선 답지의 내용은 그 수의 제곱을 구하는 문제였고, for loop가 y라는 숫자만큼 도는데, 돌 때 마다 그 결과 값에 x를 
계속 곱해주는 방식이었음. 내가 풀었던 건.. 비슷하긴 했는데 어쨌든 결과를 도출하진 못했다. 

"반갑습니다"를 여러 번 출력하는 greet이라는 이름의 함수를 만들어보자. 단, 몇 번 출력할지는 프로그램 사용자에게 묻고 입력받는 형태로 작성하자. 즉 함수가 호출되면 다음과 같은 실행 흐름을 보여야 한다.

greet()

인사를 몇 번 할까요? ~~ 번

반갑습니다

.....

def greet():
    print("인사를 몇 번 할까요?")
    data = int(input())
    for i in range(data):
        print("반갑습니다")
        
greet()
profile
지뢰찾기 개발자

0개의 댓글