알고리즘2023. 1. 14. 18:10
728x90

[ 문제 ]

https://softeer.ai/practice/info.do?idx=1&eid=362 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

[ 코드 ]

n = int(input())

for i in range(n):
    a,b = map(int,input().split(' '))
    sum = a+b
    print("Case #%d: %d" %(i+1,sum))

 

[ 해결 아이디어 ] - 형식 지정 출력

 

* 문제 발생

처음에는 다음과 같은 코드로 print 했다.

print("Case #",i+1," ",sum)

 

하지만 print( , , )는 각 인자들을 띄어쓰기로 연결한다.

얼핏 보기에는 맞아보였지만 코드를 돌려보니 띄어쓰기가 틀렸다.

(노란색으로 표시한 부분이 print문을 ','를 이용 했을 때 발생하는 띄어쓰기이다.)

 

* 해결

그래서 형식을 지정해서 출력하는 방법으로 다시 시도했다.

이 방법은 따옴표 안에 원하는 형식으로 쓰고 거기에 들어가는 변수를 지정해주는 방법이다.

 

즉, Case #1: 2 이렇게 표현하고 싶다면 print 구문 안에 Case #%d%d 이렇게 적어주면 된다. (%d는 정수를 의미)

그리고 뒤에오는 %에는 순서대로 %d에 넣을 변수를 입력해준다.

 

print("Case #%d%d%(i+1,sum))

 

간단하게 실행 결과를 보여주면 다음과 같다.

i = 0
sum = 2
print("Case #%d: %d" %(i+1,sum))

 

-> 코드 실행 결과

    첫 번째 %d에는 i+1 값인 1이 출력되었다.

    두 번째 %d에는 sum 값인 2가 출력되었다.

 

 

[ 결과 ]

반응형
Posted by mminky
파이썬2021. 3. 10. 14:21
728x90

[ 파일에 쓰기 ]

 

f=open('hello.txt','w') #write모드
f.write('Hello Python')
f.close()

 

파이썬 파일이 있는 위치에 hello.txt가 생성됩니다.

직접 클릭해서 열어보면 다음과 같이 적혀있는 것을 확인할 수 있습니다.

 

[ with ~ as 문으로 파일에 쓰기 ]

 

위의 방법으로 하기 위해서는 f.close()가 필수 입니다.

하지만 귀찮기도 하고 까먹을 수도 있으니

f.close()를 하지 않아도 되는  with~ as 문을 알아보겠습니다.

 

with open('hello.txt','w') as f:

 

f=open('hello.txt','w')

f.close() 를 동시에 하는 코드라고 생각하면 쉽습니다.

with open('hello.txt','w') as f:
    f.write('hello Python!!')

 

결과도 똑같이 파일에 입력됩니다!

 

 

* 단, write 안에는 string만 가능합니다!

그래서 str()을 이용해서 type을 변경한 후 f.write를 해주세요!

 

[ 예제 ]

파일에 출력(Write) 하는 파이썬 코드 입니다.

file.out이라는 파일에 w(rite)모드로 answer을 string(문자열)로 쓰는 코드 입니다.

answer='hello world'
with open('file.out', 'w') as f:
    f.write(str(answer))

 

이런 식으로 file.out 이라는 파일이 생성됩니다.

 

확장자를 .txt로 변경하여 내용을 확인해봅니다.

 

 

[ 파일에서 한 줄씩 읽기 ]

전체를 읽기 위해서는 f.read()를 이용합니다.

하지만 한 줄씩 읽기 위해서는 f.readline()을 이용합니다.

 

numbers.txt

 

f=open('numbers.txt','r')
s=f.readline()
print(s)
s=f.readline()
print(s,end='')
s=f.readline()
print(s,end='')

f.close()

 

* 결과

print(s,end='')에서 end=''을 하는 이유는 두 줄 사이에 띄워쓰기를 하지 않기 위함인 것 같습니다.

(따라서 BBB와 CCC는 바로 다음줄에 출력됩니다.)

반응형
Posted by mminky