파이썬 코드 질문

조회수 1655회

6.텍스트로 데미지를 입력받아 체력이 낮아짐, save라고 입력시 남은 체력 저장

코딩 출력시 글씨

아래에 상황에 맞는 코드를 알려주세요!

7.프로그램을 실행시키면 이전에 저장한 체력에서 시작하도록 파일 읽기 단, 파일이 없을 경우 “파일을 찾을 수 없습니다.”를 출력하라. (앞에서 작성한 프로그램을 수정) 제가 앞서 질문한 내용이랑 연관됩니다.!

아래에 상황에 맞는 코드를 알려주세요!


세이브 된 파일을 불러오는 중

현재 체력은 120 입니다.

데미지를 몇 입었습니까? : 10

체력이 110 남았습니다.

데미지를 몇 입었습니까? : 110

체력이 0 남았습니다.


6번문제

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

hp = 280

while(1):

    print("현재 체력은 %d 입니다." %hp)

    sub = input("데미지를 몇 입었습니까 : ")

    if(sub == "save"):

        print("저장했습니다.")
        break

    else:
        hp -= int(sub)

f.write(hp)

f.close()

save를 입력하면 120점이 메모장에 저장되어야 하는데 여기서 어느 부분을 수정해야 할까요?


7번 문제

print('세이브된 파이을 불러오는중.....')

f = open('score.txt', 'w+')

hp = 120
while(1):
    print("현재 체력은 %d 입니다." %hp)
    sub = input("데미지를 몇 입었습니까 : ")

    if(hp == 'sub'):
        print("체력이 0 남았습니다.")
        break

    else:
        hp -= int(sub)

f.write()
f.close()

어떻게 해야 sub 값이 0일떄 메모장에 0이라고 저장될까요?

f.write에 어떤 값을 써야 할지 알려주세요

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • save를 입력하면 왜 120이 저장되어야 하나요? HIAOAIH 2020.5.5 21:03
  • save 를 입력하여 120을 저장하고 그 뒤에 다시 불러오기를 통해서 0으로 만들기 위해서 일단 save를 입력하여 저장하는 것입니다.! 알 수 없는 사용자 2020.5.5 21:10
  • 처음에 280에서 어떤 값이 되던간에 무조건 저장할때는 120이 되어야 한다는건가요? HIAOAIH 2020.5.5 21:14
  • 아뇨!! 120은 단지 예일 뿐이고 save 직전 마지막에 남은 체력을 저장해야 하는 겁니다! 알 수 없는 사용자 2020.5.5 21:18

2 답변

  • 파일 존재 여부 확인

    https://docs.python.org/ko/3/library/os.path.html#os.path.exists

    만약 별도의 모듈을 사용하지 않고자 하신다면 읽기 형식으로 연 후에 예외처리를 하셔도 됩니다.

    예외처리

    https://docs.python.org/ko/3/tutorial/errors.html

    나머지는 작성하신 코드 위치만 조정하면 될 것 같습니다.

  • f = open('score.txt', 'w')
    hp = 280
    while 1:
        print("현재 체력은 %d 입니다." % hp)
        sub = input("데미지를 몇 입었습니까 : ")
        if sub == "save":
            print("저장했습니다.")
            break
        else:
            hp -= int(sub)
    f.write('%s' % hp)
    f.close()
    

    6번은 마지막에 f.write('%s' % hp)로 바꿔주면 남은 hp가 저장될 겁니다.
    string만 파일에 저장할 수 있습니다.


    import os.path
    path = 'score.txt'
    if os.path.isfile(path):
        with open(path, 'r') as f:
            hp = int(f.read())
        print('세이브된 파일을 읽었습니다.')
    else:
        print('파일을 찾을 수 없습니다.')
    

    7번은 os.path.isfile을 사용해서 해당 위치에 파일이 있는지 확인합니다.
    있다면 True, 없다면 False를 반환합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)