try 에러가 발생 할 가능성이 있는 코드 실행 except 에러명1: 에러가 발생하면 여기서 처리(여러 개 가능) except 에러명2: except 에러명3: else: try 블록의 에러가 없을 경우 실행 finally: 항상 실행
이를 활용한 예시
1 2 3 4 5 6 7 8
try: z = 'Kim'# 'Cho' 예외 발생 x = name.index(z) print('{} Found it! {} in name'.format(z, x + 1)) except: # 모든 에러를 처리(Exception) print('Not found it! - Occurred ValueError!') else: print('ok! else!')
loginbtn.addEventListener('click', ()=>{ let id = document.getElementById('id').value; let pw = document.getElementById('pw').value; console.log(id, pw)
//1. 선언 import java.util.Scanner; // import라는 예약어는 // 단축키는 ctrl + shift + O 누르면 자동으로 import 생성됨
Scanner sc = new Scanner(System.in); // 의미는 나는 이제부터 스캐너라이브러리를 변수명(ex: sc)이라는 이름으로 불러서 사용하겠다는 의미 // System.in 자바의 표준입력으로 키보드를 의미한다. 즉 키보드로부터 데이터를 받아오겠다라는 의미
System.out.println("단어를 입력하세요");
//2. 변수 s에 저장 String s = sc.next(); // 콘솔창에 입력한 것들이 변수 s에 저장된다.
//3. 출력 System.out.println(s);
//4. 예시 System.out.println("이름을 입력해주세요"); String s = sc.next(); System.out.println("연락처를 -없이 입력해주세요"); int i = sc.nextInt(); System.out.println("입력하신 "+ s +"님의 휴대폰번호 0"+ i +" 가 맞습니까?");
다른 명령어들은 아래와 같다
1 2 3 4 5 6 7 8
sc.nextInt() //키보드로부터 정수데이터를 가지고 옴
sc.next() //키보드로부터 string(한단어)를 가지고 옴
sc.nextLine() //키보드로부터 string(공백을 포함한 한줄전체)를 가지고 옴
2. Scanner 라이브러리를 이용한 사칙연산계산기 만들기
처음 떠오른 코드는 아래와 같다.
1 2 3 4 5 6 7 8
Scanner sc = new Scanner(System.in); System.out.println("원하는 사칙연산 수식을 입력하세요"); int data1 = sc.nextInt(); String operator = sc.next(); int convertOper = int(operator); int data2= sc.nextInt();
정수식안에는 변수, 숫자, 문자, 조건들이 들어갈 수 있다. case안의 값에는 and연산자, Boolean, 실수는 아예 들어갈 수 없다. break;문이 없을 경우 다음 break;를 찾을때까지 모든 문장을 실행한다. default문은 가장 마지막 작업으로 위의 case 이외의 값인 경우 default문은이 출력되고 Switch문은 끝난다
1 2 3 4 5 6 7 8 9
switch( 정수식 ){ //숫자,문자 case 값 : 출력값1; break; case 값 : 출력값2; break; case 값 : 출력값3; break; default : 출력값4; }
예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
switch(season){ case"spring" : System.out.println("봄 사랑 벚꽃 말고 by 아이유"); break; case"summner" : System.out.println("party by 소녀시대"); break; case"autumn" : case"fall" : System.out.println("11:11 by 태연"); break; case"winter" : System.out.println("Santa tell me by Ariana grande"); break;
파일을 열때는 open()을 사용하고 읽어올 것이기때문에 r을 쓰면 된다 open()했으면 반드시 close 리소스 반환해줘야한다. 즉 close()로 꼭 문 닫아줘야한다. 한 번 사용한 리소스를 꼭 닫아줘야한다.
1 2 3 4 5
f = open('./resource/중요데이터.txt', 'r') contents = f.read() print(contents)
f.close()
2. with open()방법
파이썬에서는 open()해놓고 close()는 하지않아도 되는 방법이 있다 바로 with문!
1 2 3 4 5
with open('./resource/중요한데이터.txt', 'r') as f: c = f.read() print(iter(c)) #iterator함수로 변환하여 for문에서 사용가능 print(list(c)) #리스트형변환가능 print(c)
read는 전체 내용 읽어준다 ex) read(10) : 10글자 읽기
3. with문과 for문 활용
1 2 3
with open('./resource/중요한데이터.txt', 'r') as f: for c in f: print(c)
출력값을 보면 한 줄씩(line단위) 출력해준다 한줄씩 뛰어쓰기되어 나오는 것은 끝에 |n이 들어가있기때문이다 제거해주려면 어떻게 하면 될까?
1 2 3
with open('./resource/중요한데이터.txt', 'r') as f: for c in f: print(c.strip())
|n을 strip()으로 제거해주면 가독성 좋게 출력된다 위의 출력이미지와 아래의 출력이미지를 보면 가독성이 좋아진 것을 알 수 있다
4. read VS readline VS readline(문자수) VS readlines
read : 처음글자부터 끝까지 전체를 다 읽기. read()가 끝나고 나면 커서가 맨 마지막 글자에 있기때문에 한번 출력 후 read()를 또 출력하면 빈 내용이 출력된다
readline : 한 줄씩 읽기
readline(문자수) : 문자수 읽기
readlines : 전체 읽은 후 라인 단위 리스트 저장
응용한 예시를 함께보자 아래 이미지파일과 같은 score.txt파일이 있고 안의 내용의 평균을 for line in으로 구해보자
1 2 3 4 5 6 7 8 9 10 11
with open('./resource/score.txt', 'r') as f: score = [] for line in f: score.append(int(line)) print(score) print('Average : {:6.3f}'.format(sum(score) / len(score))) #{6자리고 소수셋째자리까지라는 의미}
# 출력값 [95, 78, 92, 89, 100, 66] Average : 86.7
5. 파일 쓰기
빌트인패키지인 random을 이용해서 파일을 써보자 로또번호와 비슷하게 6개 랜덤번호를 출력하는 예제이다.
1 2 3 4 5 6 7
from random import randint #랜덤파일로부터 randint함수를 가져와라는 뜻
with open('test2.txt', 'w') as f: for cnt in range(6): # range(6)은 0~5까지임. f.write(str(randint(1, 50))) # 1부터50까지 f.write('\n')
writelines : 리스트 -> 파일로 저장
1 2 3
with open('test3.txt', 'w') as f: list = ['Kim\n', 'Park\n', 'Lee\n'] f.writelines(list)
print로 바로 저장하는 예제이다
1 2 3
with open('./resource/test3.txt', 'w') as f: print('Test Contents!', file=f) print('Test Contents!!', file=f)
from + import + as 조합 권장하는 방법으로 모듈의 많은 함수들 중에서 필요한 함수만 가져와서 쓸수있다 어떠한 언어를 다루던 리소스를 낭비하지 않도록 명확히 코딩하는 것이 좋다
1 2 3 4 5 6
from pkg.calculations import div as d
print("ex5 : ", int(d(100,10)))
# 출력값은 ex5 : 10
3. builtins(빌트인)
1 2 3
import builtins
print(dir(builtins))
출력값이 너무 길어서 이미지파일로 준비했다
우리가 빌트인인지 모르고 사용했던 list함수, type함수등이 들어가 있는 것을 확인할 수 있다
4. __init__.py의 필요성
용도 : 해당 디렉토리가 패키지임을 선언할 때 사용한다. Python 2.x대를 사용하고 있다면 __init__.py가 필수이다 Python3.x : 파일이 없어도 패키지 인식하지만 3.x보다 하위 버전 호환 위해서 생성하는 것이 안전
5. 단위테스트
독립적으로 만든 파일이 독립적으로 잘 실행되는지는 확인하기 위해서 아래 if name문을 써준다 아래 형태로 쓰도록 딱 정해놓았다. 만든함수()부분에 만들었던 함수들을 넣어 독립적으로 실행되는지 체크할 수 있다 if문이기때문에 import으로 가져온 파일에서는 출력이 안된다 GOOD!
1 2 3 4 5
# 단위 실행(독립적으로 파일 실행) if __name__ == "__main__": print("This is", dir()) 만든함수() 만든함수()