본문 바로가기

PROGRAMMING

[혼공학습단] 혼자 공부하는 파이썬 학습단 1주차 미션

미리캔버스에서 만들었습니다~

 

작년 어느날도 한량같이 인터넷을 떠돌다가 한빛미디어에서 실시하는 개발자 설문조사에 참여했었다. 그리고 혼공학습단이라는 것을 모집하기에 평소 해야했으나 귀찮다고 미뤄두었던 파이썬 공부를 시작하고자 "강제성 부여"를 목적으로 하여 응모하였는데

 

앗, 선발되어버렸다능...(쑻)

 

그리하야 1월 10일까지 책을 준비하라길래 교ㅇ문고에서 책을 주문하고 기다렸는데,

 

안 온다.

 

허미

안 와요.

같이 주문한 프리미어 책도 안 와요.

살려줏엥쇼.

 

그리고 목요일에 책을 받았다.

 

우체국 집배원님께 집 앞에 놔둬주시라 부탁했는데, 도난위험 있는데 괜찮겠냐고 하셔서,

두꺼운 책이라 아무도 안 가져 갈 걸요, 라고 했다.

 


 

그리고 책에 있는 대로 파이썬을 설치하고 E드라이브에 파이썬 코드를 저장할 폴더를 만들었다.

할 줄 아는 외국어도 3개, 할 줄 아는 언어(... 파이썬을 벌써?)도 3개니까 총 6개국... 헿...힣...

그리고 예제도 몇 개 따라해봤다.

 

IDLE Shell에서 소스코드를 입력하고 엔터를 치면 바로 실행되고, .py 파일에서는 여러 줄 입력하고 F5를 눌러야 실행이 되는 구조다. 옛날꼰날의 그 에디터 플러스도 생각나고 참 좋네예. 그리고 폰트를 mono계열로 바꾸라기에 10년지기 친구 consolas로 바꿨다. 위 사진은 consolas 적용 전의 코드.

 


저번에 유튜브에서 Python 1 hour를 잠깐 본 적이 있는지라 print()가 나오는 내용은 어렵지 않게 따라갈 수 있었다.

그리고 기본 미션을 해 봤다.

에러를 피하기 위한 주석처리.

# 3. 다음 프로그램의 실행 결과를 예측해 보세요.
print("#연습 문제")
print("\\\\\\\\")
print("-" * 8)

첫 번째 줄은 #라는 주석 기호가 있어서 주석 처리 되겠지? 라고 생각할 수 있겠으나, 문자열 안에 포함 되어있으므로 주석이 되는것이 아니라 그냥 #연습 문제라는 문자열이 출력된다.

두 번째 줄은 이스케이프 문자 \에 대한 이야기이다. 이스케이프 문자는 "저를 만나면 제 뒤의 문자는 다르게 생각해 주세용"이라는 의미를 가지고 있기 때문에, \뒤에 또 \가 왔다면 그냥 "\"를 의미하는 문자열이 된다. 따라서 같은 내용이 4번 있으므로 출력되는 문자열은 "\\\\"이다.

세 번째 줄은 문자열 반복 연산자 *에 대한 내용이므로 대상 문자열인 "-"가 8번 출력된다.

 

# 4. 다음 프로그램의 실행결과를 예측해 보세요.
# 그런데, 이 예제를 실행하면 오류가 발생합니다.
# 몇 행에서 어떤 오류가 발생할까요? 그리고 그 이유는 무엇인지 말해보세요.
print("안녕하세요"[1])
print("안녕하세요"[2])
print("안녕하세요"[3])
print("안녕하세요"[4])
print("안녕하세요"[5])

Python은 Java나 여타 프로그래밍 언어와 동일하게 배열이나 문자열의 인덱스를 0부터 시작하는 제로베이스 방식을 채택하고 있다. 따라서 "안녕하세요"라는 문자열의 길이(len())은 5이나 인덱스 범위는 0~4이기 때문에, IndexError가 발생한다.

 

# 5. 다음 프로그램의 실행 결과를 예측해 보세요.
print("안녕하세요"[1:3])
print("안녕하세요"[2:4])
print("안녕하세요"[1:])
print("안녕하세요"[:3])

슬라이스 연산자 :는 다른 언어의 substring 함수의 역할을 하는 것 같다. 따라서 [시작인덱스 : 끝인덱스]라고 쓰여 있다면 코드가 참조하는 곳은 시작인덱스부터 끝인덱스 - 1(끝 인덱스의 하나 전 문자)까지의 문자열을 반환한다. 그리고 [시작인덱스:]의 경우에는 시작인덱스부터 문자열의 끝까지, [:끝인덱스]라면 문자열의 시작부터 끝인덱스 - 1까지의 문자열을 반환한다.

따라서 출력 결과는

1. 녕하

2. 하세

3. 녕하세요

4. 안녕하

이다.

 

 


추가미션.

이번 주 추가미션은 "모르는 용어(3~5개) 찾아 혼공 용어 노트에 정리하고 인증샷"인데, 명색이 개발...자... 출신...인... 인간인데 챕터 1, 2에 있는 내용은 모르면 내 과거에 대한 기망이기 때문에 지금까지 사용하던 언어들과의 공통점이나 차이점들을 대신 찾아봤다.

 

첫번째, 세미콜론이 사라졌다.

세 번째 캡쳐의 첫번째 print()를 보면, 무의식이 이끄는 대로 세미콜론을 찍어놨다. 그런데 책을 보면 볼수록 문장 끝에 세미콜론이 없는 것이 아닌가. Java를 배우면서 세미콜론 없으면 죽는 줄 알았는데(최소한 자바는 없으면 죽는... 죽을... 걸?), 파이썬은 아무리 봐도 땀을 흘리지 않았다.

 

그래서 찾아봤다.

 

"Why python doesn't need semicolon"

 

하잘것 없는 영작이나 내 니ㅋ즈ㅋ를 충족하는 질문이기에 이유는 곧 찾을 수 있었다.

 

"읽기 복잡하니까"

"가독성 짱짱맨"

 

(같은 말이긴 하지만)

 

그리고 이런 말도 있었다.

 

"이건 파이썬스럽지 않다. (It is NOT PYTHONIC.)"

 

마치... "나 다운게 뭔데?"하는 청춘 드라마 같잖니...

 

파이썬스러운게 뭐냐고!!!

뭐 파이썬은 readable and clean code를 지향한다고 한다. 그리고 세미콜론은 아예 안 쓰는게 아니지만 문장 끝에 주문처럼 써놨던 다른 언어들과는 다르다고 한다.

 

 

두번째, 파이썬의 이름짓기 규칙(naming convention)

파이썬의 네이밍룰에는 snake_case랑 camelCase 이렇게 두 가지 있는데, 책에서는 camelCase로 변수 이름을 잘 짓지 않는다고 했는데, W3School에서는 예제에 myVar이라는 항목이 있는 걸 보니까 아예 안 되지는 않는 것 같다. 그래도 시키는대로 변수 이름은 snake_case로, 메소드는 camelCase로, 클래스는 CamelCase로 지어야지...

이거는_자바_상수_이름_짓는_거_잖아요

 

세번째, 문자열 이모저모

print("""multi-line String
We are the champions my friend
And we'll keep on fighting til the end
""")

이렇게 """ 안에 엔터가 들어간 문자열을 넣으면 적은 그대로 + 빈 줄 하나를 추가해서 출력해준다. 

System.out.println("이렇게하는거랑");

System.out.println("비슷하다");

 

오 그럼 System.out.print()와 대응되는건 뭘까?

 

print("이", "렇", "게", "하", "는", "빵", "븝")

음... 내가 원한건 이런게 아닌데, 일단 이런 방법도 있는 걸로.

 

그럼...

오라클 하러 가야지

엏엏

 


https://towardsdatascience.com/stop-using-semicolons-in-python-fd3ce4ff1086

 

Stop Using Semicolons in Python

They are seldom useful and don’t look pretty

towardsdatascience.com

https://www.w3schools.com/python/gloss_python_variable_names.asp

 

Python Variable Names

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

https://www.geeksforgeeks.org/print-without-newline-python/

 

How to print without newline in Python? - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org