TIL/Python

TIL #11 <Date_format , join(python), abs(python, 연산자 우선순위)>

jojoon2786 2024. 7. 9. 17:50

1. 조건에 맞는 도서와 저자 리스트 출력

처음 풀이

select a.book_id, b.author_name, a.published_date
from book a join author b on a.author_id = b.author_id
where a.category = "경제"
order by published_date

출력 값으로 00:00:00 시간까지 출력됨.

 

Date_format(컬럼, '%Y-%m-%d)

%y > 20

%Y > 2020

%M > 영어

%m > 숫자

 

고친 답

select a.book_id, b.author_name, date_format(a.published_date,'%Y-%m-%d') as published_date
from book a join author b on a.author_id = b.author_id
where a.category = "경제"
order by published_date

 

2. 문자열 내림차순으로 정렬하기

def solution(s):
    s=sorted(s, reverse=True)
    s=''.join(s)
    return s

s는 문자열이기 때문에 sort() 사용 불가능. sort 사용하려면 리스트로 만들어줘야함. list(s)

sorted는 정렬된 리스트를 반환하기 때문에 s라는 변수 안에다가 넣어줘야함.

리스트인 s를 다시 문자열로 만들어주기 위해 join함수 사용

 

'구분자'.join(리스트)

 

>참고

# print(s) # join: 리스트 -> 문자열, split: 문자열 -> 리스트
# '구분자'.join(리스트): 리스트에 있는 요소들을 구분자로 연결한 하나의 문자열 반환
# 문자열.split('구분자'): 문자열을 구분자 기준으로 분리해서 리스트로 반환
# 예시:
# s = ['g', 'f', 'e', 'd', 'c', 'b', 'Z']
# ''.join(s): 리스트 s의 요소를 빈 문자열로 연결한 하나의 문자열 반환 -> "gfedcbZ"
# ','.join(s): 리스트 s의 요소를 콤마로 구분하여 연결한 하나의 문자열 반환 -> "g,f,e,d,c,b,Z"
answer = ''.join(s) # 예시: s = ['g', 'f', 'e', 'd', 'c', 'b', 'Z']라면 "gfedcbZ"

 

3. 부족한 금액 계산하기

abs(answer)

return answer 했으나, 오류발생

> 매개변수로 넣은 숫자가 변하는 것이 아니라. 넣은 숫자는 가만히 있고 넣은 숫자의 절대값이 반환되는 것.

 

def solution(price, money, count):
    sum_total = 0
    for i in range(1,count+1):
        pr = price * i
        sum_total += pr
    answer = money - sum_total
    if answer > 0:
        return 0
    return abs(answer)

 

4. 문자열 다루기 기본

def solution(s):
    length = len(s)
    if length == 4 or 6:
        for i in list(s):
            if i not in ['0','1','2','3','4','5','6','7','8','9']:
                return False
            return True
    else: return False

> if length == 4 or 6에서 오류 발생.

if 문이 제대로 동작하지 않음. ==이 먼저 동작해서 6만 남았기 때문에 True로 인식.

 

ㄴ> if length == 4 or length == 6: 로 수정하여 해결

#참고

파이썬 코딩 도장: 47.2 연산자 우선순위 (dojang.io)

 

파이썬 코딩 도장: 47.2 연산자 우선순위

in, not in, is, is not, <, <=, >, >=, !=, ==

dojang.io