2023-04-25 TIL

0v0baek·2023년 4월 25일
0

TIL

목록 보기
37/92

[js] 화살표 문법

window.onload = ()=>{
    console.log('로딩 완료!')
}

[programmers] 커피 심부름

문제 링크

첫 번째 풀이

def solution(order):
    # 아메리카노 4500 카페라떼 5000
    # 메뉴만 적으면 차가운거, 아무거나는 차가운 아메
    sum = 0
    for menu in order:
        # 아메리카노
        if menu.find('americano') >= 0:
            sum += 4500
        # 카페라떼
        elif menu.find('cafelatte') >= 0:
            sum += 5000
        # 아무거나
        else:
            sum += 4500
    # 최종 가격 return
    return sum

find 메소드를 사용해서 찾는 값이 없으면 -1이 return 되는 걸 이용했다.
for 문을 돌면서 경우에 따라 맞는 숫자를 더해줬다.

두 번째 풀이

def solution(order):
    sum = 0
    for menu in order:
        sum += 5000 if menu.find('cafelatte') >= 0 else 4500
    return sum

애초에 카페라떼를 제외하면 나머지는 가격이 똑같기 때문에,
카페라떼를 예외로 두고 나머지는 전부 else 문으로 통과시켜줬다.

세 번째 풀이

팀원들과 다 같이 for문을 쓰지 않고 어떻게 해결하면 좋을지 탐구해봤다.

def solution(order):
    latte = (''.join(order)).count('latte')
    return latte*5000 + (len(order) - latte)*4500

먼저, 주문 리스트를 .join을 이용해 문자열로 만들어준다.

그러고, count 메소드를 사용해서
해당 문자열에 latte라는 글자가 몇 개 있는지 찾아준다!

마지막으로, 라떼의 개수와 라떼가 아닌 것의 개수를 세어 더해준다.

라떼가 아닌 것의 개수는 리스트의 전체 길이 len() 에서 라떼의 개수를 빼주면 된다.

[Python][a::b]

리스트 메소드를 공부하다가 조금 독특하게 생긴 녀석을 발견했다

[a::b]

아니... 대체 [a:b][a:b]일것이지 왜 콜론이 두개나 들어가는거임?!??!?

이라고 생각했다....

잘 이해가 안돼서 이것저것 도움을 받았는데, for range문과 비슷하다고 생각하면 된다.

탐구

my_list = [1, 2, 3, 4, 5]

이런 리스트가 있다고 생각해보자.

만약, 내가 2랑 4만 뽑아서 리스트로 만들고 싶다!!
그럼 이때까지의 나라면 for range문을 사용했을 것이다.

new_list = []
for i in range(2, 5, 2):
    new_list.append(i)

print(new_list) # [2, 4]

이런식으로!!
근데 이제 이런식으로 안해도 된다는 거다. [a::b]를 사용하면!

print(my_list[1::2]) # [2, 4]

혁명....

그러니까, ::앞쪽에 붙는 건 시작점, 뒤쪽에 붙는 건 증가시킬 숫자라고 생각하면 된다!

for range문의 첫 번째 인수랑 세 번째 인수라고 생각하면 이해가 쉽다.

[js] Failed to load resource: net::ERR_CONNECTION_REFUSED

문제 발생

window.onload = ()=>{
    console.log('로딩 완료!')
}

async function handleSignin() {
    const email = document.getElementById('email').value
    const password = document.getElementById('password').value
    
    const response = await fetch('http://127.0.0.1:8000/users/signup/', {
        headers:{
            'Content-Type': 'application/json',
        },
        method:'POST',
        body: JSON.stringify({
            'email':email,
            'password':password
        })
    })

    console.log(response)
}

js에서 이렇게 코드를 작성했는데 ERR_CONNECTION_REFUSED 오류가 뜨면서 작동이 안된다.

백엔드에서 확인해보니 signup 함수의 문제는 아닌 것 같다. 에러가 400 BAD REQUEST인것도 그렇고, 뭔가 클라이언트 쪽에서 리퀘스트가 안된 것 같은데...

시도 한 방법

1. 따옴표 형식 변경

설마 예전에 그랬던 것 처럼 윈도우는 ' '말고 " "를 써야하나? 하고 바꿔봤다.

응. 여전히 안된다.

하.....

2. , 확인하기

혹시 ,를 안찍어줘서 그런 건 아닐까?

async function handleSignin() {
    const email = document.getElementById("email").value
    const password = document.getElementById("password").value
    
    const response = await fetch("http://127.0.0.1:8000/users/signup/", {
        headers:{
            "Content-Type": "application/json",
        },
        method:"POST",
        body: JSON.stringify({
            "email":email,
            "password":password,
        }),
    })

    console.log(response)
}

찍어줬는데... 여전히 안됨.

해결법

아!!!!!!!!!!!!!!!
liveserver 문제였다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
껐다켜니까 해결됨!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
야!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
하......................

내가 잘못한 게 아니었음.
컴퓨터 잘못이었음.

뭔가 문제가 생기면 일단 껐다 켜는 습관을 들여보자...

profile
개발 공부 하는 비전공자 새내기. 꾸준히 합시다!

0개의 댓글