Lecture 강의

Undergraduates 학부 Graduates 대학원 Lecture 역학 Lecture 설계 Lecture IT(IoT, AI) Lecture SAP2000 Lecture 아바쿠스 Lecture 파이썬 Lecture 엑셀 VBA Lecture 마이다스 Lecture 이탭스

[Quiz 07] 2.7 파일 입출력

작성자 : kim2kie

(2023-03-05)

조회수 : 1659

ELCENTRO_0.DAT 내려받기

[참조]
.관련 동영상
https://youtu.be/T3d56g3FF18

 

Q) 
당신의 회사에서는 매주 1회 작성해야 하는 보고서가 있다.
보고서의 기본 형식은 다음과 같다.

- X 주차 주간보고 -
부서 : 
이름 : 
업무 요약 : 

1주차부터 4주차까지의 보고서 파일을 만드는 프로그램을 작성하라.

조건: 파일명은 '1주차.txt', '2주차.txt', ... 와 같다.

.출력 결과(예시): 
완성된 코드를 실행시키면 소스코드와 동일한 위치에 다음과 같이 4개의 파일이 생긴다.
1주차.txt
2주차.txt
3주차.txt
4주차.txt

그리고 각 파일에는 해당 주차에 해당하는 주간보고 내용이 포함된다.
(예: 4주차.txt 파일 내용)
- 4 주차 주간보고 -
부서 : 
이름 : 
업무 요약 : 

 
A) 해설
인코딩과 디코딩: 00절 용어 참조
for문: 2.3절 제어문 참조
open문: 2.7절 파일 입출력 참조
\n과 같은 이스케이프 시퀀스는 2.7절 파일 입출력 참조


C) 코드: "quiz-07.py"
for i in range(1, 5):
    with open(str(i) + "주차.txt", "w", encoding="utf8") as report_file:
        report_file.write("- {0} 주차 주간보고 -".format(i))
        report_file.write("\n부서 : ")
        report_file.write("\n이름 : ")
        report_file.write("\n업무 요약 : ")

 


 

Q-report)
1940년 5월 18일 미국 캘리포니아주 엘센트로시에서 대형지진이 처음으로 계측되었다.
해당 지진데이터 파일을 open문으로 불러서 read문으로 읽고, plot을 사용하여 그래프를 출력하라.

.파일 이름: ELCENTRO_0.DAT
.계측 항목: 가속도(acc)
.계측 단위: 중력가속도(g = 9.81 m/sec2)
.계측 데이터
 Data for El Centro 1940 North South Component (Peknold Version)
 1559 points at equal spacing of 0.02 sec
 Points are listed in the format of 8F10.5, i.e., 8 points across in
 a row with 5 decimal places
 The units are (g)
 *** Begin data ***
    0.00630   0.00364   0.00099   0.00428   0.00758   0.01087   0.00682   0.00277
   -0.00128   0.00368   0.00864   0.01360   0.00727   0.00094   0.00420   0.00221
    0.00021   0.00444   0.00867   0.01290   0.01713  -0.00343  -0.02400  -0.00992
    0.00416   0.00528   0.01653   0.02779   0.03904   0.02449   0.00995   0.00961
    0.00926   0.00892  -0.00486  -0.01864  -0.03242  -0.03365  -0.05723  -0.04534

    ...

 
A) 해설
.open문으로 데이터를 읽는 것은 2.7절 파일 입출력을 참조할 것

def loadData(file,skiprow=0):

acc = loadData("ELCENTRO_0.DAT",6) # (g)

.plot문으로 그래프를 출력하는 것은 [matplotlib] 패키지를 참조할 것


import matplotlib.pyplot as plt

plt.plot(time,acc)
plt.axis([0,35,-0.4,0.4]) # axis의 범위
plt.xlabel('time [sec]') # x축 라벨
plt.ylabel('acc(g)') # y축 라벨
plt.grid() # 그리드 넣기