25.4.8TIL

황효정·2025년 4월 8일

데이터 분석

목록 보기
35/88

파이선 코드카타:


def solution(angle):
if angle > 0 and angle < 90:
return 1
elif angle == 90:
return 2
elif angel > 90 and angle < 180:
return 3
else angle == 180:
return 4
print(solution) 이렇게 했는데

SyntaxError: invalid syntax 가 났음.

다 맞는 것 같아서 고민을 해봤는데 모르겠음.-> 자세히 보면 오타가 나있음. 

def solution(angle):
if angle > 0 and angle < 90:
return 1
elif angle == 90:
return 2
elif angel > 90 and angle < 180:
return 3
else angle == 180:
return 4
print(solution)

1. angle인데 angel이라고 순서를 바꿔서 써버림. --근데 나는 종종 영어타자 칠 때 이런 스펠링 순서
실수가 종종 나는듯하다. 스펠링 작성하는 것 주의해야겠다. 한글은 오탈자가 있으면 바로 알아차리는데
영어는 오탈자가 나도 바로 눈에 안들어온다는게 조금,, 더 주의해야 할 부분인것 같다.

2. else문 뒤에는 조건을 쓰지 않는다고 한다. 
sql에서의 case when 문을 생각해보면, 거기서도 else 뒤에는 조건말고 결과값을 적었던 것 같다.
(요즘 파이선만 했더니 sql,, 할 시간이 없다. 그것도 복습하고 공부해야하는데,, )

def solution(angle):
if angle > 0 and angle < 90:
return 1
elif angle == 90:
return 2
elif angle > 90 and angle < 180:
return 3
else:
return 4
print(solution)

  이렇게 적어주었다. 그랬더니 잘 작동됨. 나는 틀린게 저 마지막 줄의 출력값인가 싶었다.
  그래서 함수를 print안에 넣어주는게 잘못된건가.. 사실 처음에는 answer = 0 이란 변수가
  선언되어있어서 마지막에 return answer를 써줬었다. 나는 그 마지막줄에만 신경을 써서
  위의 조건문이 잘못되었다는 것은 몰랐다. 
  
  하지만 두둥- 저 마지막의 print(soultion)은 쓰지 않아도 잘 작동이 된다. 음.. 그,, 
  코드카타 문제풀이 환경이라서 그런듯. 
  
  ![](https://velog.velcdn.com/images/journey3/post/0481d473-9d97-4a7b-8dfa-3e189c5bc40b/image.png)

다음문제:

나의 첫 풀이: 에러 엔딩

모르겠어서 일단 pass,,이것만 붙잡고 시간 다 갈 것 같아서 일단은 파이선 세션을 복습하고 나중에 다시 풀어보겠다. - 그래도 오늘 파이선 코드카타 3문제 품!(이 문제 제외)


어제 수준별 세션 복습:
조건문과 반복문-

  • zip()함수: 이터러블(반복 가능한)한 객체가 두개 이상일 때, 인덱스 순서대로 묶어주는 함수이다.

  • 상위 집합, 부분집합:

  • .items(): 키, 벨류 값 다 가져오는 것. -그렇다면 아마도 딕셔너리에서 사용가능할 것 같다.

  • collection 라이브러리의 counter함수를 가져온다면 이렇게 작성해야 한다.
    ->from collection import counter

  • ❗⭐💡문제풀이에 시간 많이 쓰기


베이직 수준별 2.표준 입출력 문제 2번 풀이

문제:

sec = int(input('초를 입력하세요'))
sec_1 = sec // 60
min = sec // 60
hour = sec // 60

print(f"초를 입력하세요: {sec}")
print(f"{sec}초는 {hour}:{min}:{sec} (시:분:초) 입니다.")
일단 여기까지는 생각해냈다. 근데 저 hour,min,sec_1함수를 어케해야할지 모르겠다.. 여기서 막혀버림,,

  • 일단 포맷팅할 때 01:01:01처럼 출력할려면 저 변수에다가:02를 해주어야 한다. ex){hour:02}:{min:02} 이런식으로. {hours:02}에서 숫자 2는 최소한 2자리로 맞춰주라는 소리이다. 그리고 앞의 0은: 만약 자릿수가 2보다 작으면=1자리수이면-> 앞에 0을 붙이라는 소리임. 그리고 만약에 자릿수가 2 이상이면 ->그대로 출력한다. 만약 :03이 되면 최소한 세자리수로 맞춰주고 앞에는 0이 들어간다는 소리이다(만약 자릿수가 모자란다면)

  • 그리고 예시 실행 결과에 맞춰야 하니까 포맷팅프린트 맨밑에줄에 sec:,를 추가해준다.{sec:,}이렇게.

  • 1시간은 3600초이다.

  • divmode라는 함수로 몫과 나머지 한꺼번에 구할 수 있음.
    hour, minute = divmode(sec, 3600) 이렇게 구할 수 있음.

2.표준 입출력 문제3번 풀이

처음 작성한 코드. 분명 :2f를 설정해주었는데, 출력값을 보았을 때 내가 기대한 대로 나오지 않는다.

  • 일단 실행결과 예시와 맞게 하기 위해서 첫번째 프린트문과 두번째 프린트문에서 int로 함수를 감싸주었다.
  • bmi결과 밑에 키에서 뒤에 m를 안 써줘서 추가 해줌.
  • 알아보니 소숫점 뒤의 두 자리까지 출력하는 것은 :2f가 아니라 :.2f 였다. 그래서 그거 수정 해줬음. :2f는-> 전체 최소 2자리로 출력하라는 소리고, 소수점은 기본값이.6f라고 함. 그래서 소수점 아래 6자리까지 출력된것이었음.
    그리고 여기서의 f는 실수float로 출력하라는 의미이다.

의미를 정리해보자면,
:->지금부터 포맷하겠다는 것, .2->소수점 아래 2자리까지 출력, f->실수(float)로 출력. 만약 전체자리수 및 소수점 둘 다 맘대로 포맷팅 하고 싶다면 :02.2f 이렇게도 쓸 수 있다. 이것을 해석해보자면-> '전체자리의 최소값은 두자리수로 출력해주고, 만약 한자리수만 있다면 앞에 0을 붙여줘. 그리고 소숫점 밑 2자리까지 출력해주고 이것은 실수로 출력해줘.' 라는 뜻이다.

답과 동일하게 나옴.


베이직 라이브 세션

  • lambda 함수: 한 줄로 표현되는 간단한 표현식이다.
    작성 방법=> lambda 매개변수 : 표현식
    add = lambda x, y : x + y
    print(add(3,5))
    ->출력 8

    함수의 이름이 없어도 된다. 굳이 변수를 지정해서 거기다 값 담아주지 않아도 그냥 사용할 수 있음.

    진짜 너무 피곤해서,,, 오늘은 여기까지.. 내일 추가로 더 정리해놓겠다..

    확실히 방해요소들 제거하고 몰입할 수 있도록 계획한대로 하니까 공부를 더 실속있게 한 것 같다. 확실히. 아 진짜 고생했다.. 잠깐 저녁시간에 산책하고 왔는데 좀 추웠던 듯,, 감기걸리면 절대 안됨.. 비타민 c 먹고 빨리자야지.. 고생했다...나자신..!!

profile
청지기

2개의 댓글

comment-user-thumbnail
2025년 4월 9일

고생하셨서요 🤓🤩

1개의 답글