멋쟁이사자처럼 스타트업 스쿨2기 이틀차이다.
오늘은 Python 강의를 듣는 날이다.
Velog를 존댓말로 쓰다보니 뭔가 TIL이랑 안맞는 것 같기도 하고,, 내가 보기 편하도록 편한 어투로 쓰기로 했다.

러시아 인형

코딩을 러시아 인형에 비교를 많이 하셨다. 마트로시카? 라는 인형인데 인형속에 인형이 있고, 인형이 또 있고 감싸주는 인형같은 것이다.

가장 기본이 되는 코드를 안에 넣어줘서 하나의 작은 인형을 만들어 주고, "()"과 같은 인형으로 그 인형을 감싸주는 인형을 만든다. 또 그 위에 함수와 같은 인형으로 감싸주고, 이런식으로 코드를 이해하기 쉽게 설명 해 주셨다.

반복문

예를들어 음식들 중 랜덤으로 하나 뽑아주는 프로그램을 작동시켜,
30번 음식을 뽑고싶다. 이때 가능한 방법은 여러가지가 있는데

printf(random.choice(["된장찌개","김치찌개","김치찜","냉면"])
printf(random.choice(["된장찌개","김치찌개","김치찜","냉면"])
printf(random.choice(["된장찌개","김치찌개","김치찜","냉면"])
printf(random.choice(["된장찌개","김치찌개","김치찜","냉면"])
printf(random.choice(["된장찌개","김치찌개","김치찜","냉면"])
printf(random.choice(["된장찌개","김치찌개","김치찜","냉면"])

가장 원초적인 방법을 이용하여 이런 코드를 이용하여 30번 반복해 줄 수 있는데, 이 방법은 굉장히 나쁜 방법이다. 요즘은 이런 약어가 있다고 한다.

DRY
Don't Repeat Yourself

혼자서 반복하지 말아라. 즉 무언가를 시켜서 반복시켜라 라는 뜻인데, 이를 어떻게 간단하게 반복시킬지 알아보도록 하자.

대표 문법으로

for i in range(30):
	print(random.choice(["된장찌개",--]))

이런식으로 반복문을 돌리게 된다면 0부터 29까지 반복을 하며 총 30번 반복을 해서 출력을 해주는 것을 볼 수 있다.

무한반복 시키기

무한반복은 쉽다.

while True:

이런식으로 while에 트루값을 주면 무한대로 반복하게 된다.
이때 조건문을 대입해 break;를 이용하여 반복을 멈출 수 있다.

List와 Dictionary

**

List와 차이점**

Dictionary는 -는 : -다.
List는 그냥 진짜 나열!

Dictionary는 {} 중괄호
List는 []대괄호!

코드로 알아봅시다.

information = {"고향":"수원", "취미":"영화관람","좋아하는 음식":"국수"}
foods = ["된장찌개", "피자", "제육볶음"]

이와같이 dictionary는 위에서 설명한 것과 같이 key값과 value가 쌍으로 존재!
List는 음식들과 같이 쭉 나열해 주는 용도임을 알 수 있었다.

List와 SET

리스트와 집합의 차이를 알아보자.

리스트는 기본적으로 순서가 있다.
List1 = ['지니','램프,'요정']
이라고 한다면, 0번째가 지니 1번째가 램프, 요정은 2번째이다.
즉 순서가 명확하다.

그러나 SET은 순서가 있지 않다. 집합이기 때문에 그저 집합 안에 원소로 존재하며 순서는 의미가 없다.
집합의 특징은 중복이 없다는 것이다.

그렇다면 리스트를 집합으로 바꾸는 방법에 대해 알아보자.

foods = ["된장찌개","김치찌개","고등어조림"]

과 같은 foods라는 리스트가 있다.

그렇다면 간단하게

set_foods = set(foods)

이런식으로 foods를 set이라는 러시아인형으로 감싸주어 집합으로 변환시켜주고,
set_foods에 저장을 해주는 것이다.

이후 위에 배운 기초 문법들과 append 와 del을 이용하여 음식들을 추가하고, 삭제하면서 마지막에 랜덤으로 음식을 골라주는 프로그램을 작성해 보았다.

lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]

while True:
    print(lunch)
    item = input("음식을 추가 해주세요 : ")
    if(item == "q"):
        break
    else:
        lunch.append(item)
print(lunch)

이런식으로 무한반복 시켜놓고 음식을 추가하고, q를 입력하면 break를 건다.
일부를 발췌했다.

이상형이 어떻게 되나요? 코딩

이런식으로 내가 원하는 만큼 질문을 입력해 주고, 답변을 입력하면
질문과 답변이 입력한 순서대로 쫘라락 출력이 되는 프로그램이다.

Dictionary를 이용한 코드풀이

total_dictionary = {}

while True:
    question = input("질문을 입력해주세요 : ")
    if question == "q":
        break
    else:
        total_dictionary[question] = ""

for i in total_dictionary:
    print(i)
    answer = input("답변을 입력해주세요 : ")
    total_dictionary[i] = answer
print(total_dictionary)

List를 이용한 코드풀이

total_list = []
while True:
    question = input("질문을 입력해주세요 : ")
    if question == "q":
        break
    else:
        total_list.append({"질문" : question, "답변" : ""})


for i in total_list:
    print(i["질문"])
    answer = input("답변을 입력해주세요 : ")
    i["답변"] = answer
print(total_list)

단일 방법이 아니라, dictionary를 이용해서도 비슷하게 먼저 풀어보고,
List를 이용해서 제대로 풀어내는 과정이 참신하면서도 머리에 쏙쏙 박혀서 좋았던 것 같다. 다만 코드리뷰 전 전체코드를 작성할 때 문제를 보여준다거나 하면 내가 처음부터 다시 작성하기 편할 것 같다. html/css편도 마찬가지.

profile
TIL 기록

0개의 댓글