본문 바로가기
Programming/Python

[Python] 점프 투 파이썬 연습문제 풀이 4장

by EunjiBest 2022. 3. 3.

[Python] 점프 투 파이썬 연습문제 풀이 4장

 

 

 

Q1. 주어진 자연수가 홀수인지 짝수인지 판별해 주는 함수(is_odd)를 작성해 보자.

 

def is_odd(number):
  if #your code here:
    return True
  else:
    return False

 2로 나누었을 때 나머지가 1이 되게 하는 if문을 작성한다.

 

답 : number % 2 == 1

 

 

*참고* 람다와 조건부 표현식을 사용하면 더 간단히 만들 수 있다.

 

is_odd = lambda x: True if x % 2 == 1 else False

 

lambda(람다)는 함수를 생성할 때 사용하는 예약어다.

def와 동일한 역할을 하며, 일반 함수를 한 줄로 간결하게 줄일 때 사용한다.

 

lambda 매개변수1, 매개변수 2,... : 매개변수를 사용한 표현식

 

 

 

 

Q2. 입력으로 들어오는 모든 수의 평균 값을 계산해 주는 함수를 작성해보자. 
(단, 입력으로 들어오는 수의 개수는 정해져 있지 않다.)

 

def avg_numbers(#your code here):
  result = 0
  for i in args:
    result += i
  return #your code here

avg_numbers(1,2)
avg_numbers(1,2,3,4,5)

 

입력 개수에 상관없이 사용하기 위해서 *args를 매개변수로 사용한다.

 

def 함수이름(*매개변수):
   수행할 문장

 

args를 for문에 돌려 args안에 있는 매개변수들을 더할 수 있도록 result값도 만들어준다.

return 값은 args의 길이 len(args) 나누기 result를 입력한다.

 

답 : *args , result/len(args)

 

 

 

 

Q3. 다음은 두 개의 숫자를 입력받아 더하여 돌려주는 프로그램이다.

 

input1 = input("첫 번째 숫자를 입력하세요:")
input2 = input("두 번째 숫자를 입력하세요:")

total = input1 + input2
print("두 수의 합은 %s입니다." % total)

위 식에 대한 출력값이다. 

첫 번째 숫자를 입력하세요: 3
두 번째 숫자를 입력하세요: 6
두 수의 합은 36입니다.

3과 6을 입력했을 때, 9가 아닌 36을 반환했다.

이 프로그램의 오류를 수정해보자.

 

3과 6을 숫자가 아닌 문자로 인식을 해 

36이 나왔다.

 

input1 = input("첫 번째 숫자를 입력하세요:")
input2 = input("두 번째 숫자를 입력하세요:")

total = int(input1) + int(input2)
print("두 수의 합은 %s입니다." % total)

 

입력은 항상 문자열(str)이므로 숫자(정수형)으로 바꿔주어야한다.

따라서 

 

답 : int(input1) + int(input2)

 

 

 

 

Q4. 다음 중 출력 결과가 다른 것 한 개를 골라보자

 

① print("you" "need" "python")
② print("you"+"need"+"python")
③ print("you", "need", "python")
④ print("".join(["you", "need", "python"]))

콤마( , ) 가 있는 경우 띄어쓰기가 적용된다.

 

>>> print("you" "need" "python")
youneedpython
>>> print("you"+"need"+"python")
youneedpython
>>> print("you", "need", "python")
you need python
>>> print("".join(["you", "need", "python"]))
youneedpython

 

답 : 3번

 

 

 

 

Q5. 다음은 "text.txt"라는 파일에 "Life is too short" 문자열을 저장한 후 다시 그 파일을 읽어서 출려하는 프로그램이다.

 

f1 = open("test.txt", 'w')
f1.write("Life is too short")

f2 = open("test.txt", 'r')
print(f2.read())

 

이 프로그램은 우리가 예상한 "Life is too short"라는 문장을 출력하지 않는다.

우리가 예상한 값을 출력할 수 있도록 프로그램을 수정해보자.

 

! 잠시 알아갈 파일 열기모드 문법!

파일 객체 = open(파일이름, 파일 열기 모드)
파일 열기 모드 설명
r 읽기 모드 - 파일을 읽기만 할 때 사용
w 쓰기 모드 - 파일에 내용을 쓸 때 사용
a 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용

 

위 코드처럼 파일을 닫지 않고 바로 열면 저장이 되지 않아

데이터를 읽을 수 없다.

 

f1 = open("test.txt", 'w')
f1.write("Life is too short!")
f1.close()

f2 = open("test.txt", 'r')
print(f2.read())
f2.close()

 

따라서 열린 파일 객체를 close()를 이용해 닫아주고,

다시 열어야 저장된 파일의 내용을 읽을 수 있다.

 

한가지 방법이 더 있다.

 

with open("test.txt", 'w') as f1:
  f1.write("Life is too short!")
with open("test.txt", 'r') as f2:
  print(f2.read())

 

close를 사용하지 않고 with구문을 사용할 수 있다.

 

위 코드처럼 with문을 사용하면

with블록을 벗어나는 순간 열린 파일이 자동으로 close되어 편리한 역할을 한다.

 

 

 

 

Q6. 사용자의 입력을 파일(test.txt)에 저장하는 프로그램을 작성해보자.
(단 프로그램을 다시 실행하더라도 기존에 작성한 내용을 유지하고 새로 입력한 내용을 추가해야한다.)

 

user_input = input("저장할 내용을 입력하세요 : ")
f = open('test.txt', #your code here)
f.write(user_input)
f.write(#your code here)
f.close()

 

기존의 내용을 유지하고 새로운 내용을 덧붙이기 위해서

'a' 추가모드를 사용한다.

 

입력된 내용을 줄 바꿈(enter)하기 위해서

\n을 삽입한다

 

 

답 : 

user_input = input("저장할 내용을 입력하세요 : ")
f = open('test.txt', 'a')
f.write(user_input)
f.write("\n")
f.close()

 

 

 

 

Q7. 다음과 같은 내용을 지닌 파일 test.txt가 있다.
이 파일의 내용 중 'java'라는 문자열을 'python'으로 바꾸어서 저장해 보자.

 

Life is too short
you need java

 

f = open('test.txt', 'r')
body = #your code here
f.close()

body = #your code here

f = open('test.txt', #your code here)
f.write(body)
f.close()

 

1. 파일을 읽기 모드 'r'로 열고, 

2. body에 f.read()를 할당시켜준다.

3. 닫는다.

 

4. replace함수를 사용하면 java가 python으로 변경한 후 저장한다.

'

5. 저장된 파일을 읽어서 확인한다.

 

답 :

f = open('test.txt', 'r')
body = f.read()
f.close()

body = body.replace('java', 'python')

f = open('test.txt', 'w')
f.write(body)
f.close()

 

 

 

-끝-

반응형

댓글