우스꽝스러운 이름 생성기

mnsng88·2023년 1월 13일
0
post-thumbnail

✨프로젝트 설명

사용자에게 우스꽝스러운 이름을 만들어주는 프로그램이다.
우스꽝스러운 이름은 '이름 리스트'와 '성 리스트'로 이루어진다. 리스트들은 비교적 짧기 때문에 메모리에 부하를 주지 않으며 동적으로 업데이트를 할 필요가 없고 런타임 오류를 뱉어내지 않을 것이다. 리스트에서 이름만 읽어들이기만 하면 되기에 튜플을 컨테이너로 사용하기로 한다.
그리고 인터프리터 윈도우 내의 이름을 하이라이트 처리하여 보여줄 것인데, 이는 sys모듈을 이용해서 구현한다.
마지막으로, 파이썬 프로그래밍을 위한 추천 스타일 중 어떤 것을 사용할지 결정한다.

🙋질문

왜 리스트는 메모리에 부하를 주지 않고 동적으로 업데이트를 할 필요가 없을까?

( )튜플이란

우선 질문에 대해서 답을 내리기 전에 튜플에 대해서 정리해보도록 하자.

튜플의 정의(위키피디아)
튜플은 셀 수 있는 수량의 순서의 열거라고 정리할 수 있다. '수량의 순서'라는 말은 튜플의 모양에서 이해할 수 있는데 (1, 4, 5)와 같은 식으로 콤마(,)를 이용해 구분한다는 점에서 순서가 생긴다.

( )튜플의 특징

  1. 중복된 값을 넣을 수 있다.(set자료형과는 다른점)
  2. 값이 변하지 않는다. 리스트에서는 값을 변경할 수 있지만, 튜플은 내부의 값을 변경하거나 삭제 할 수 없다.

(자료구조에 대한 공부를 해야겠다...)


🧑‍💻의사코드

Load a ist of first names
Load a list of usrnames
Choose a first name at random
Assign the name to a variable
choose a surname at random
Assign the name to a variable
Print the names to the screen in order and in red font
Ask the user to quit or play again
If user plays agan:
	repeat
If user quits:
	end and exit

사실, 의사코드의 내용이 중요한 것이 아니라 의사코드의 의미 자체가 중요하다고 생각한다.
의사코드는 왜 필요할까?

의사코드의 필요성

망망대해를 거닐 수 있는 별자리이자 지도이다.

자신이 작성하려는 코드의 목저이 무엇인지 잊게해주지 않기 때문에 의사코드를 작성하는 것은 매우 중요하다.
의사코드를 작성할 때는 간략화된 프로그래밍 언어를 닮아야 하며 키워드와 적절한 들여씌가 포함된다.


💻코드

import sys, random #1번



print("Welcome th the Psych 'Sidekick Name Picker.'\n") #2번
print("A name just like Sean would pick for Gus: \n\n")

first = ('Baby Oil', 'Bad News', 'Big Burps', "Bill 'Beenie-Weenie'", "Bob 'Stinkbut'", 'Bowel Noises', 
        'Boxelder', "Bud 'Lite'")

last = ('Appleyard', 'Bigmeat', 'Bloominshine', 'Boogerbottom', 
        'Breedslovetrout', 'Butterbaugh')

while True:
        firstName = random.choice(first) #3번

        lastName = random.choice(last)

        print("\n\n")
        print("{} {}".format(firstName, lastName), file=sys.stderr) #4번
        print("\n\n")

        try_again = input("\n\nTry again? (Press Enter else n to quit)\n")
        if try_again.lower() == "n":
                break
                
input("\nPress Enter to exit.")

🕵🏼분석

책에서는 코드를 한줄 한줄 분석하고 있지만 내가 알고있는 것은 제외하고 새로 배우게 된 것이나, 놓쳤던 것들 위주로 분석할 것이다.

1번

import sys, random 

IDLE 윈도우에 발간색 결과를 출력하기 위해서 sys를 이용해서 시스템 특정 에러 메시지 기능에 접근할 것이다. 그리고 random은 이름 리스트에서 무작위로 아이템을 선택할 수 있도록 한다.
sys모듈에 대한 더 많은 정보

2번

print("Welcome th the Psych 'Sidekick Name Picker.'\n") #2번

여기에서는 작은 따옴표의 역할에 집중할 것이다. ''는 출력시 코드 가독성을 해치는 백슬래시없이 따옴표를 사용할 수 있도록 해준다.
이해를 돕기 위한 자료

3번

firstName = random.choice(first)

.random 모듈의 choice매서드를 이용해서 비어있지 않은 시퀀스로 부터 무작위 엘리먼트를 반환한다. 간단히 말하면 연속적인 자료형에서 무작위 요소를 반환한다고 생각할 수 있다. 위에서 튜플은 셀 수 있는 수량의 열거라고 언급한 바 있다. 이는 연속적으로 이어진 값을 나타내는데 이러한 자료형을 시퀀스 자료형이라고 한다. 시퀀스 자료형에는 리스트, range, 문자열이 있다. 우리는 여러개의 이름과 성을 튜플이라는 시퀀스 자료형에 담아놨고, choice매서드를 이용해 이 중 하나의 요소를 무작위로 반환하는 것이라 이해할 수 있는 것이다.

4번

print("{} {}".format(firstName, lastName), file=sys.stderr)

file=sys.stderr 옵션 인자를 이용해서 IDLE에 빨간색 "에러" 폰트로 출력한다.
위와 관련된 새로운 매서드에 관한 파이썬 공식 문서

profile
능동적으로 행동함으로써 세상을 더 좋게 가꾸어가는 사람

0개의 댓글