개발일지/Today I Learned

230322 환경설정 오류, 파이썬 문법 심화 완강, 알고리즘 문제 [TIL]

마이구미+ 2023. 3. 22. 20:33

오늘 누적 100시간 넘었다!

<오늘 배운 것 & 문제>

1. vscode 가상환경에서 requests 모듈이 import 되지 않는 문제...

  • 노트북을 바꿔서 모두 다 새로 설치해야 했다
  • 처음엔 venv 가상환경 폴더도 생성이 안 됐었다
  • 환경변수를 설정해야 하는 문제라는데..이전 노트북에서 vscode를 설치하고 가상환경을 만들 때는 일어나지 않았던 문제였다...왜 이런 일이 일어난 걸까
  • 가상환경 생성 명령어를 작성해도 python 만 나와서 열심히 구글링 했는데도 해결을 못했다
  • 결국 매니저님께 도움을 요청해서 어떻게 어떻게 했더니 가상환경 폴더는 잘 만들어졌다
  • 근데 내가 원래 아는 명령어인 python -m venv venv 가 아니고 python -m venv venv --without-pip 를 입력해야 한다..........휴.........
  • 여튼 이렇게라도 해결이 돼서 다행인데 requests 는 왜 import가 되지 않는걸까........
  • 드디어 찾았다
  • https://www.inflearn.com/questions/388018 여기서 힌트를 얻었다
  • 가상환경 폴더 생성 오류를 겪기 전에 microsoft store에서 파이썬을 설치했었다
  • 근데 Python 설치와 환경설정 (VScode에서 파이썬 사용하기) (velog.io) 여기서 알려주는대로 하다보니 파이썬을 https://www.python.org/downloads/ 여기서도 다운받게 된 것이었다
  • 그래서 파이썬이 2개가 돼서 import가 안 되는 거였다
  • 마이크로소프트 스토어에서 받은 파이썬을 삭제했더니 import가 잘 된다!
  • 아니다...안 된다 ..그대로 requests에 밑줄이 쳐있다
  • 뭐가 문제였는지 아직도 모르겠지만...그냥 프로젝트 폴더를 다 삭제하고 처음부터 다시 .py 파일 만들고 가상환경 생성하고 활성화하고 모듈 설치했더니 됐다....ㅇ-<-<.....
  • 다 삭제하고 새로 하는데 python -m venv venv 했을 때 activate 파일이 생성되지 않았었는데 왜 그러는 건지 검색하다가 다시 vscode 로 돌아오니 뒤늦게 생성이 됐다 그래서 python -m venv venv --without-pip은 입력할 필요는 없었다
  • 환경설정 하다가 하루가 다 가다니.........다른 동기분들은 게임도 만들고 하던데...난 아직 아무것도 못했다...ㅠ

2. 파이썬 문법 심화 강의 완강

  • 영상을 다 보기는 했는데....사실 머리에 남는 건 거의 없는 것 같다...당최 무슨 소리인지.....해봐야 알 것 같다
  • 내배캠에서 제공한 핸드북을 차근차근 읽어봐야겠다

3. 알고리즘 문제 1

  • 무척 간단해 보이는 문제!!

  • 7번만에 풀었다 맨 앞에 언어 실수한 거 빼면 6번...중간에 수정하다가 .을 ,로 찍은 거 빼면 5번,,, )를 안 닫은 거 빼면 4번...!!!
a, b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a%b)
  • 부끄러운 나의 1번째 답안
a, b = map(int, input().split())

if 1 <= a,b <= 10000:
    print(a+b)
    print(a-b)
    print(a*b)
    print(a/b)
    print(a%b)
  • 여전히 부끄러운 나의 2번째 답안 ㅎㅎ;;;
a, b = map(int, input().split())

if 1 <= a <= 10000 and 1 <= b <= 10000:
    print(a+b)
    print(a-b)
    print(a*b)
    print(a/b)
    print(a%b)
  • 오 뭔가 정답에 가까워져 가는 것 같아 보이는 3번째 답안!
a, b = map(int, input().split())

if 1 <= a <= 10000 and 1 <= b <= 10000:
    print("%d" % (a+b))
    print("%d" % (a-b))
    print("%d" % (a*b))
    print("%d" % (a/b))
    print("%d" % (a%b))
  • 드디어 정답!! %d 를 사용해서 정수로 표현하는 방법을 구글링을 해서 알아냈다!
  • 알고리즘 문제 참 어렵구나....다음 문제에서 또 막힘
  • 아무래도 개념 공부를 더 해야 할 거 같기도 하다 핸드북 정독해야겠다

4. 알고리즘 문제 2

  • 이건 islower() 함수가 필요한 문제다
  • 무려 2번의 시도만에 정답을 맞췄다!
  • 첫 번째 시도는 미만과 이하를 생각 하지 않아서 틀렸다
name = input()

name_len = len(name)

if name.islower():
    if name_len < 50:
        print(name+'??!')
    else:
        print("50자 이내로 작성해주십시오.")
else:
    print("소문자로만 작성해주십시오.")
  • 두 번째 시도는 
if name_len <= 50:
  • 이렇게 수정했다! 그랬더니 정답이란다!
name = input()

name_len = len(name)

if name.islower():
    if name_len <= 50:
        print(name+'??!')
  • 문제에서 요구한 사항만 넣어서 코드를 조금 줄여보았다
name = input()

name_len = len(name)

if name.islower() and name_len <= 50:
    print(name+'??!')
  • if문을 and로 이어서 하나로 만들었다! 뭔가 의미있는 단축을 한 것 같다!

<느낀점>

  • 4시까지 기초 설정 문제로 시간을 낭비한 것 같아서 불안했는데 그래도 나름 강의도 다 듣고 알고리즘 문제도 몇 개 풀 수 있어서 다행이다
  • 다른 동기분들은 게임도 만들고 응용을 엄청 잘 하시는데 나는 아직 이런 문제밖에 못 푼다니 흑흑 ㅠㅠ