디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[📚정보] 파이썬 계산기(2): 토큰 리스트를 위한 준비

신촌우왕87갤로그로 이동합니다. 2022.05.17 14:43:50
조회 162 추천 1 댓글 3
														


신촌우왕 소개


수학자, 작곡가, 요가수행자







파이썬 계산기 프로젝트(2):

토큰 리스트를 위한 준비



사용자가 수식문자열을 입력하면

숫자, 연산자, 함수명 등으로 각각을 분리할 필요가 있다.


이를테면 수식문자열 s = "2+39*5"에서

토큰으로 분리하면 다음과 같다.

2, +, 39, *, 5






하지만 사용자는 우리가 생각하는 대로 간단히 입력해주지 않는다.


키보드를 이용하여 입력하지만,

수학을 배우면서 습관화된 수식을 작성한다.


예를들면 괄호를 ()만 사용하는 것이 아니라

{}, [] 등을 사용할 수도 있다.


공백을 불규칙하게 사용할 수도 있다.

s = "2+3*5"처럼 입력할 수도 있고

s = "2 + 3 * 5"처럼 입력할 수도 있고

s = "{2 + (3 * 5)}"처럼 입력할 수도 있다.


사용자가 어떻게 입력하든

간단한 입력 형식으로 전환할 필요가 있으며,

간단한 입력 형식으로 전환한 후

토큰으로 분리하는 것이 좋다.





불필요한 요소 제거하기



[모든 공백 제거]

실제 계산 시, 공백은 불필요하므로 모두 제거한다.

s = s.replace(" ", "")


[괄호를 중괄호로 통일하기]

중괄호, 대괄호를 모두 중괄호로 바꾼다.

s = s.replace("{", "(")

s = s.replace("}", ")")

s = s.replace("[", "(")

s = s.replace("]", ")")


[단항연산자 -를 이항연산자로 전환하기]

2-3에서 -는 이항연산자이지만

-3+2에서 -는 단항연산자이다.

그러나 -3+2 = 0-3+2로 바꾸면 -는 이항연산자가 되면서 계산 결과값은 변하지 않는다.

보통 여는 괄호 다음에 이러한 경우가 빈번하게 발생할 수 있다.

(수식 맨 앞에 괄호가 없으면서 -가 있는 경우는 나중에 앞에 0을 붙일 예정이다.)

s = s.replace("(-", "(0-")


[단항연산자 +를 제거하기]

2+3에서 +는 이항연산자이지만

+2-3에서 +는 단항연산자이다.

그러나 +2-3 = 2-3으로 바꾸어도 계산 결과값은 변하지 않는다.

보통 여는 괄호 다음에 이러한 경우가 빈번하게 발생할 수 있다.

(수식 맨 앞에 괄호가 없으면서 +가 있는 경우는 나중에 제거할 것이다.)

s = s.replace("(+", "(")


[power: 멱승]

키보드를 이용하여 2의 3승을 입력할 때

2**3 혹은 2^3으로 입력한다.


^로 통일시킨다.

(비트 연산은 제공하지 않기로 한다.)

s = s.replace("**", "^")


[나머지 연산자: %]

7을 3으로 나누었을 때 나머지만 취하면 1이다.

7 % 3 = 1

그러나 %는 사실 함수 수준의 우선순위를 가진다.

따라서 %를 대응하는 명시적인 함수명으로 바꿔준다.

s = s.replace("%", "mod")


수학에서는 7 ≡ 1 (mod 3)으로 표기하지만

mod(7, 3) = 1처럼 함수화해서 나타낼 수도 있을 것이다.


그러나 mod가 함수이면서 이항연산자처럼 보이도록 하기 위해

mod(7, 3) 대신에 (7)mod(3)처럼 입력받도록 교육시켰다고 가정하자.


물론 직접 입력받은 % 연산자는 mod로 변환한다.

즉 7 % 3이 7 mod 3으로 바뀌는 셈이다.


[몫 연산자: //]

7을 3으로 나누었을 때 몫만 취하면 2이다.

7 // 3 = 2


나머지 연산자의 경우와 마찬가지로

몫 연산자 또한 함수 수준의 우선순위를 가져야 한다.


// 대신 moq라는 함수명으로 대체하여 계산에 이용하기로 한다.

s = s.replace("//", "moq")





viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb81fa1bd8233c4c604f2f148310b599b41b33653cc20a795c59ca78d2ed5386bb156a5590066f5b7d17d52c0550d3b359464e4bee2fafc725aa52






얼추 준비가 된 것 같다.


이제 수식문자열에서 토큰을 분리하여

토큰 리스트에 담아 리턴하게 될 예정이다.





추천 비추천

1

고정닉 1

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
- AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
635 공지 가독성 좋은 f-string 을 쓰자 [9] 주넹갤로그로 이동합니다. 21.10.02 3612 10
1056 공지 (공지 요청)[질문지 양식] 복붙해 쓰시오. [4] 203.121.116.11갤로그로 이동합니다. 21.12.14 2523 5
634 공지 질문 올릴때 [2] 주넹갤로그로 이동합니다. 21.10.02 2678 5
178 공지 파이썬 공부할 때 참고할만한 것들 [7] 주넹갤로그로 이동합니다. 21.04.21 8327 7
1 공지 파이썬 미니 갤러리입니다. [9] 주넹갤로그로 이동합니다. 20.12.14 3425 7
2627 일반 진짜 코딩 과제 감을 못잡겠음 [4] ㅇㅇ(118.235) 10.31 36 0
2626 일반 ㄴㄷㅋㄷ 이거 5년전거 아님? 5년 전거로 공부해도되는거야? ㅇㅇ(118.37) 10.25 22 0
2625 일반 맥OS로 공부하는거 별로일까요? [1] ㅇㅇ(118.37) 10.25 33 0
2624 일반 입문 파이썬 공부하려는데요 인강좀 추천해주세요! ㅇㅇ(118.37) 10.25 44 0
2623 일반 코딩 1도 모르는데 [5] ㅇㅇ(119.199) 10.13 85 0
2622 🔎질문 셀레니움 값이 입력이 안되는 현상이 있습니다 ㅇㅇ(39.124) 10.09 49 0
2621 일반 혼자공부하는파이썬 점프투파이썬 [1] ㅇㅇ(211.246) 09.18 157 0
2620 일반 님들이 싫어하는거 사용자 이름 없음(182.228) 08.05 88 0
2619 🔎질문 고등학생인데 질문 있어요. [3] ㅇㅇ(118.221) 07.30 164 0
2618 🔎질문 셀레니움으로 이미지 직접 다운로드 하는 방법 [1] ㅇㅇ(39.7) 07.14 97 0
2617 일반 ㄴㄷㅋㄷ 6시간짜리 5년전꺼라 버전이 달라서 어려움 [1] 빨간망토갤로그로 이동합니다. 05.30 182 0
2616 일반 파이썬 아다 떼려면 책 필요없고 ㄴㄷㅋㄷ 보면됨? [2] 빨간망토갤로그로 이동합니다. 05.23 331 0
2615 일반 7월부터 C언어 파이썬 동시에 해야하는데 [3] ㅇㅇ(118.235) 05.19 172 0
2614 🔎질문 라즈베리파이 프로그램 관련 질문 [2] ㅇㅇ(59.25) 05.04 130 0
2613 일반 에라토스테네스-신촌우왕 체식 신촌우왕갤로그로 이동합니다. 04.22 371 0
2612 일반 카메라 영상을 파이썬 flet으로 실시간 출력 작성 해보신분 [2] ㅇㅇ(218.150) 04.03 199 0
2611 🔎질문 혼자 공부하기 파이썬 책 추천좀 해주세요 [2] 토리짜갤로그로 이동합니다. 03.31 328 0
2610 일반 루트 k의 근사값 [1] 신촌우왕갤로그로 이동합니다. 03.28 186 0
2609 일반 루트 2의 근사값 [1] 신촌우왕갤로그로 이동합니다. 03.28 645 0
2608 일반 짝수 완전수 신촌우왕갤로그로 이동합니다. 03.28 113 0
2606 일반 유클리드 호제법 신촌우왕갤로그로 이동합니다. 03.22 149 0
2605 일반 비전공자 생초보 입문자 점프 투 파이썬으로 하면 되나여? [1] ㅇㅇ(223.39) 03.18 494 0
2604 일반 Int로 변환했는데 이구 왜이럴까요 [3] ㅇㅇ(210.126) 03.15 227 0
2603 일반 이거 어떻게 쳐요,,? [2] ㅇㅇ(221.154) 03.13 231 1
2602 🔎질문 고수님들 대학 파이썬 수업듣는데 질문 있어서 왔습니다 ㅠㅠ [2] ㅇㅇ(39.124) 03.11 259 0
2601 일반 파이썬으로 데이터 변형 하고 있는데 [3] ㅇㅇ(221.152) 03.08 198 1
2600 일반 게임에서 마우스 좌표는 다 잘 찍히는데 키보드가 안됨 ㅇㅇ(59.20) 03.04 155 0
2598 🔎질문 누가 좀 도와줘... [2] ㅇㅇ(115.138) 02.07 262 0
2596 🔎질문 점프투파이썬 굳이 책 사야 하나요? [2] 애개뤼를쮀에에엑갤로그로 이동합니다. 24.12.23 699 0
2595 일반 파이썬 윈도우앱에 광고달아보신분..? ㅇㅇ(222.236) 24.12.18 219 0
2594 일반 파이썬 모바일 추천 좀 ㅇㅇ(110.11) 24.12.08 245 0
2593 일반 r스튜디오 도와주십쇼 형님들.. [2] ㅇㅇ(121.154) 24.12.05 297 0
2591 일반 조졌다 [1] delegen(121.181) 24.11.18 276 0
2590 🔎질문 대학 입학전에 파이썬 공부해볼라고 하는데 [2] ㅇㅇ(110.10) 24.11.17 509 0
2589 일반 파이썬 이래 배우면 되나요?? [1] ㅇㅇ(119.195) 24.11.12 466 0
2588 🔎질문 가상환경 라이브러리 글로벌 문제 ㅇㅇ(123.214) 24.11.05 225 0
2587 일반 도와주세요 고수님들 [2] ㅇㅇ(118.217) 24.11.03 351 0
2586 일반 챗GPT 개같네 [2] 초보 파갤러(119.203) 24.10.27 495 0
2585 일반 파이썬 뭐 부터 건드려야함? 정처기 보유 [1] ㅇㅇ(118.216) 24.10.24 357 0
2582 일반 점프투파이썬이랑 나도코딩 입문강의중에 뭐 봐야함? [2] ㅇㅇ(118.235) 24.10.09 554 0
2581 일반 아이패드로 파이썬 [1] 쪼물갤로그로 이동합니다. 24.10.05 295 0
2580 일반 욜로yolo 객체학습 이후에 질문이 있습니다. [1] ㅇㅇ(117.52) 24.10.05 302 0
2579 일반 파이썬 초보 책추천 [20] 쪼물갤로그로 이동합니다. 24.10.05 5553 0
2577 일반 파린이 도와주세요 ㅠㅠ [2] ㅇㅇ(106.102) 24.10.03 288 0
2576 일반 ai로 댓글 다는거 [2] ㅇㅇ(220.95) 24.09.30 300 0
2575 일반 형님들 파이선 입문을 어떻게해야 좋을까요? [4] ㅇㅇ(106.101) 24.09.26 385 0
2574 일반 질문)본인:쌩초보, 나도코딩 따라 중, 목표는 객체인식, 적용은 시골축사 [12] ㅇㅇ(211.117) 24.09.25 483 0
2572 일반 fastapi 만든사람 콜롬비아 출신 고졸임 [1] ㅇㅇ갤로그로 이동합니다. 24.09.15 335 1
2570 🔎질문 도와주세요 파이참 실행이 아예 안되요 ㅠㅠ... [2] ㅇㅇ(211.252) 24.09.02 303 0
2569 일반 pygbag 아시는 분 ㅇㅇ(183.109) 24.08.20 226 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2