파이썬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
파이썬2021. 3. 8. 15:43
728x90

* 몫

9를 4로 나눴을 때의 몫은 2이다. ( 9 = 4*2 +1 )

9//4

 

 

* 나머지

9를 4로 나눴을 때의 나머지는 1이다. ( 9 = 4*2 + 1 )

9%4

 

* 합

1부터 5까지의 합은 다음과 같이 구한다.

sum([1,2,3,4,5])

 

 

* 원 넓이, PI 값

반지름이 5인 원의 넓이를 구하는 방법이다.

 

이때, math의 PI를 import하는 방법이 두 개가 있다.

 

(방법1)

math를 해주기 때문에 math.pi 를 해야 한다.

>>> import math
>>> area=math.pi*5*5

 

(방법 2)

pi를 import 해주기 때문에 바로 pi 를 이용할 수 있다.

>>> from math import pi
>>> area=pi*5*5

 

* 지수 승 (a ^ n)

2^3 을 구하기 위해서는 2**3을 해줘도 된다.

하지만 math를 이용하기 위해서는 다음과 같이 pow를 이용해주면 된다.

math.pow(2,3)

 

* 루트 (√2)

( 루트2 를 구하기 위해서 2**0.5 를 해줘도 상관은 없다. )

math.sqrt(2)

 

 

* 자연로그 ln(x)

math 라이브러리에서는 그냥 log가 ln이다. (밑이 e)

math.log(2)

 

* 상용로그 log(x)

밑이 10인 상용로그는 다음과 같이 구한다.

math.log10(10)

 

* 밑이 특정한 로그

밑이 2인 로그에 4를 넣은 값은 다음과 같이 구한다.

log2(4)

math.log(4,2)

 

* sin

역시 math.sin을 이용하면 정확하게 나온다.

math.sin(30)

 

* degreee(도) 에서 radian(라디안) 으로 변경

math.radians() : degree -> radian 으로 변경

 

math.radians(30)

 

 

* 반올림

round를 이용한다.

round(숫자,반올림할자리수)

 

다음은 √3을 반올림해서 소수 둘째자리 까지 표현하는 예시이다.

 

둘째 자리 까지 반올림 됨

 

 

 

 

[ 연습문제 ]

 

* 환율구하기

>>> currency = 1112.39
>>> dollar = 3
>>> won = dollar * currency
>>> won
3337.17

 

* 대출 첫 달 이자 구하기

8000만원 대출 시 첫 달 이자(금리 1.72%)

 

빌린금액(loan) = 8000,0000

금리(interest rate) = 0.0172

첫 달 이자(first_mon) = 빌린금액 * 금리 / 12  (1년은 12달)

>>> loan = 80000000
>>> int_rate = 1.72/100
>>> first_mon = loan * int_rate / 12
>>> first_mon
114666.66666666667

 

반올림을 통해서 1의자리까지 표시

따라서 첫 달 이자는 114,667(약 11만원)

>>> round(first_mon)
114667

 

* 연복리 예금 만기 금액 구하기

정기예금 이자 2.7%, 3년 연복리 상품, 2000만원 예금시 만기 금액

 

예금액(deposit) = 2000,0000

이자율 = 0.027

기간 = 3년

 

만기금액 = 예금액 * (이자율 + 1) ^3

            = 2000,0000 * (1+0.027) * (1+0.027) * (1+0.027)

(1년이 지날 때 마다 이자가 붙는 형식이므로 원금+이자율을 3번 곱해줍니다.)

>>> deposit = 20000000
>>> int_rate = 2.7 / 100
>>> year = 3
>>> deposit * (int_rate+1)**3
21664133.659999996

 

※ 제 글이 도움이 되었다면 공감 부탁드려요 ◡̈

반응형
Posted by mminky
파이썬2021. 3. 8. 15:15
728x90

[ 파이썬 버전 확인 ]

우선 파이썬이 설치되어있는지 확인합니다.

 

python --version

 

 

만약 설치한 버전과 다른 버전이 나타난다면 시스템환경변수-PATH에 이전 버전의 파이썬 경로가 있지는 않은지 확인합니다.

그렇다면 새로 다운받은 경로를 PATH에 적은 후 우선순위를 올리거나

기존의 파이썬 PATH를 수정합니다.

 

 

 

[ 윈도우에서 환경변수 확인하는 명령어 ]

 

set

 

 

 

 

[ 파이썬 실행 ]

 

python

 

실행이 되었다면 >>> 표시가 나타납니다.

 

간단하게 >>> print("Hello, World!") 를 입력하면 그 결과가 나타나는 것을 알 수 있습니다.

print("Hello, World!")

 

 

파이썬을 종료하기 위해서는 다음의 명령어를 입력합니다.

exit()

 

 

 

 

[ IDLE ]

이처럼 cmd(명령프롬프트) 창에서 해도 되지만 IDLE이라는 프로그램을 이용해도 됩니다!

아마 파이썬 설치시 같이 설치되는 것 같습니다.

 

윈도우 검색창에 IDLE를 검색하면 나타납니다.

 

IDLE을 이용하면 이렇게 더 색깔있는 창에서 작업하실 수 있습니다 :)

 

※ 제 글이 도움이 되었다면 공감 부탁드려요 ◡̈

 

반응형
Posted by mminky
기타2021. 2. 25. 00:36
728x90

워드 머리글/ 바닥글에 다음 사진처럼 가로 줄을 넣는 방법입니다.

 

 

 

 

[ 방법 ]

 

우선 원하는 위치에 특수문자 3개를 입력합니다.

(예를들어 ---)

 

 

그리고 엔터를 누르면 자동으로 완성됩니다 :)

반응형

'기타' 카테고리의 다른 글

3D 프린터 교육  (0) 2021.05.22
다이소 꿀템! 인테리어 멀티받침(휴대폰 거치대)  (0) 2021.04.14
[ENG] 헷갈리는 단어  (0) 2021.01.13
연꽃초 끄는법  (3) 2020.12.27
지도에서 위도 경도 구하는 법  (0) 2020.12.26
Posted by mminky
기사 자격증2021. 2. 20. 15:47
728x90


여러 선택지가 있었는데 아무래도 오픽 부산센터에서 치는게 좋지 않을까 해서 선택했습니다!
교대역 6번출구에서 횡단보도 건너니깐 한양타워 바로 나오더라구요!
입구가 터널처럼 생긴 건물입니다!

드디어 오늘 부산센터에 다녀 왔습니다!
토요일 오후 2:20에 쳤는데요!

계단 위 입구로 들어갔더니 막혀있었습니다ㅠㅠ
알고보니 주말에는 다른 입구를 사용한다고 합니다!

주차장 쪽에 있는 입구가 주말 입구 입니다!



입구로 들어가면 바로 저런 문이 보입니다!
들어가서 오른쪽에 엘레베이터가 있으니 이용하시면 될 것 같습니다 :)



오픽센터는 8층입니다!
엘레베이터에도 스티커가 붙어있으니 큰 걱정은 안하셔도 될 것 같아요!


오픽시험은 물/음료 반입 금지 입니다
문진표를 작성한 후에 신분증 검사를 하고 자리를 배정받습니다.

[시험후기]
시험 치기 전에는 이 문제에는 이런 구조로 답해야지 하고 생각을 했는데
막상 시작하니깐 아무 말 하고 나온 것 같습니다..
부디 좋은 결과가 있었길..🙏

* 물/ 화장실은 집에서!
-> 생각보다 들어가자마자 오티하고 그래서 화장실을 갈 시간이 없었어요ㅠ 갈거면 미리가기! 물도 안에서 못마십니다!

* 오리엔테이션 20분
-> 소독티슈로 소독하고
종이/참고자료/전자기기 없는지 확인
설문조사를 하는데 진짜 답할 수 있는걸로 12개 선택하는게 유리합니다
난이도 선택을 하는데 나중에 한 번 바꿀 수 있습니다
샘플 답변 듣고 선택하면 됨!
미리 샘플오픽에서 정하고 가도 될거같아요!

* 각 문제당 제한 시간이 없다
-> 저는 아날로그 시계를 들고가서 대충 초를 봐가면서 했습니다 (각 문제당 1:30정도)

* 하지만 총 시간은 40분
-> 시간 배분이 중요한거같습니다
38분쯤에 다 나간다고 했는데
제가 친 시험에서는 34분 경과부터 사람들이 나가길래 나중에는 제 목소리만 혼자 들려서 조금 민망했던거같아요 ㅠ

[ 오픽 대학생 할인 ]

https://univ.opic.or.kr/

 

OPIc

univ.opic.or.kr

여기서 12000 할인 받을 수 있습니다!
대신 시험 당일에 추가 서류가 필요합니다!
휴학증명서/ 재학증명서/ 재적증명서/ 수료증명서/ 졸업예정증명서/ 복합증명서


모두 오픽 파이팅👊🏻

반응형
Posted by mminky
아두이노2021. 2. 14. 00:51
728x90

[ 문제 ]

디지털 2번 핀에서 5번 핀까지 5개의 LED를 연결하고 디지털 14번 핀에 풀다운 저항을 통해 버튼을 연결한다.

LED에는 다음의 패턴이 0.5초 간격으로 반복되도록 한다.

단, 버튼이 눌러진 경우에 패턴의 진행방향이 바뀌도록 스케치를 작성해보자.

즉, 버튼이 한 번 눌러지면 패턴은 '1>2>3>4' 순서의 순방향으로 진행되고,

버튼이 다시 눌러지면 패턴은 '4>3>2>1' 순서의 역방향으로 진행되도록 한다.

시작 시에는 순방향으로 패턴이 바뀌는 것으로 한다.

 

 

 


[ 코드 ]

결과영상

int pins_LED[] = {2,3,4,5};

int pins_button = 14;

int LED_pattern[] = {0b0001,0b0010,0b0100,0b1000};

boolean state_previous = false;

int i=0;

int state = 0;



void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);

  

  pinMode(pins_button,INPUT);

  for(int i=0;i<4;i++){

    pinMode(pins_LED[i],OUTPUT);

  }

}



void loop() {

  // put your main code here, to run repeatedly:

    boolean state_current = digitalRead(pins_button);



  if(state ==0){// 2>3>4>5

       if((state_current==1) && (state_previous==0)){

          i-=2;

          state_previous = 1;

          state = 1;

      }

      else{

        if((state_current==0)&&(state_previous==1)){

        state_previous = 0;  

        }

        if(i==4) i=0;

        if(i<4){

          for(int j=0;j<4;j++){

            digitalWrite(pins_LED[j],bitRead(LED_pattern[i],j)); //BITREAD read right->left

            }

            i++;

            delay(500);

           }

         }

       }



    if(state == 1){ //2<3<4<5

      if((state_current==1) && (state_previous==0)){

          i+=2;

          state_previous = 1;

          state = 0;         

      }

      else{

        if((state_current==0)&&(state_previous==1)){

        state_previous = 0;  

        }

        

        if(i==-1) i=3;

        if(i>=0){

          for(int j=0;j<4;j++){

            digitalWrite(pins_LED[j],bitRead(LED_pattern[i],j));

          }         

          i--;

         delay(500);

         }

      }

  }

  

}



※ 제 글이 도움이 되었다면 공감 부탁드려요 :)

반응형
Posted by mminky
아두이노2021. 2. 14. 00:42
728x90

[ 문제 ]

Serial Monitor에서 5개의 단어를 입력받은 후 문자열로 정렬하라.

 

[ 코드 ]

void setup() {

  // put your setup code here, to run once:

Serial.begin(9600);

}



void loop() {

  // put your main code here, to run repeatedly:

  int state = 1, i=0;

  char buffer[128];

  String str[5];



  while(true){

    while(i<5){

      if(state==1){

      Serial.print("Enter the ");

      Serial.print(i+1);

      Serial.print("th Word -->");

      state = 2;

      }

      while(Serial.available()){

      int len = Serial.readBytesUntil('\n',buffer,127);

      if(len>0){

        buffer[len] = '\0';

        str[i] = String(buffer);

        Serial.println(str[i]);

        i++;

        state = 1;

        break;

        }

       }

      }

    if(i==5)    break;

  }

  

    if(i==5){

    for(int a=0; a<4; a++){

      for(int b=a+1; b<5; b++){

        int compare = str[a].compareTo(str[b]);

        if(compare>0){ //오름차순

          String temp = str[a];

          str[a] = str[b];

          str[b] = temp;

        }

      }

    }



    Serial.println("After Sorting");

    for(int k=0;k<5;k++){

      Serial.println(str[k]);

    }

  }

}

 

[ 결과 ]

 

 

※ 제 글이 도움이 되었다면 공감 부탁드려요 :)

반응형
Posted by mminky
아두이노2021. 2. 14. 00:36
728x90

* 따라하면서 배우는 아두이노 책을 참고했습니다.

 

[ 문제 ]

5.3 아래의 패턴이 반복해서 표시되도록 스케치를 작성해보자.

단, 패턴을 배열로 저장하여 사용하는 방식이 아니라 계산에 의해 패턴을 생성하도록 한다.

 

 

 

[ 코드 ]

결과영상

int pattern, shift;

int pins[] = {2,3,4,5};

void setup() {

  // put your setup code here, to run once:

Serial.begin(9600);

for(int i=0;i<4;i++){

  pinMode(pins[i],OUTPUT);

  digitalWrite(pins[i],LOW);

}

}



void loop() {

  // put your main code here, to run repeatedly:

for(int idx=0;idx<6;idx++){

  pattern = 1;

  if(idx<4) shift=idx;

  else shift=6-idx;



  for(int i=0;i<shift;i++)

   pattern = (pattern<<1)|0x01;



if(pattern==0b0001){

digitalWrite(pins[0],HIGH);

digitalWrite(pins[1],LOW);

digitalWrite(pins[2],LOW);

digitalWrite(pins[3],LOW);

}

if(pattern==0b0011){

digitalWrite(pins[0],HIGH);

digitalWrite(pins[1],HIGH);

digitalWrite(pins[2],LOW);

digitalWrite(pins[3],LOW);

}

if(pattern==0b0111){

digitalWrite(pins[0],HIGH);

digitalWrite(pins[1],HIGH);

digitalWrite(pins[2],HIGH);

digitalWrite(pins[3],LOW);

}

if(pattern==0b1111){

digitalWrite(pins[0],HIGH);

digitalWrite(pins[1],HIGH);

digitalWrite(pins[2],HIGH);

digitalWrite(pins[3],HIGH);

}

delay(1000);

}



}

 

※ 제 글이 도움이 되었다면 공감 부탁드려요 :)

반응형
Posted by mminky