cherryshine   1년 전

남들은 쉽게쉽게 하는데 저만 혼자 어렵게 생각한 느낌이 들어요

이렇게 꾸준히 해도 되는걸까요.. 개선이 필요할까요 허헣

코드 자체에 대한 지적도 좋고, 고쳐야할 점이 보인다면 해당 지적도 좋습니다.

괜히 너무 복잡하게 짠건 아닌가 잘못된 습관이 있는건가 싶어서요,,

C언어 어느정도 배우고 java물온도만 체크하고 파이썬 공부하는 중입니다..!

dong5995   1년 전

1. 위 코드에선 globals()를 쓸 이유가 없습니다.

함수 안에서 x와 y의 값을 바꾸거나 하는 것이 전혀 없기 때문에 아래처럼 입력 받으시면 편합니다.

x = input().split()
y = float(x[0])


2. 연산자의 개수에 따라 경우를 나눌 필요가 없습니다.

for j in x[1:]:
    (대충 그다음 코드)

이런 식으로 작성하시면 개수에 관계 없이 연산자만 순서대로 뽑아올 수 있습니다.

3. 그럼에도 만약 글쓴이 님이 작성한 코드처럼 리스트의 길이에 따라 for문을 돌리는 횟수를 정하고 싶다면,

for j in range(len(x)-1):
    (대충 그다음 코드)

처럼 코드를 작성해도 위 코드보단 훨씬 간단해집니다.

4. 불필요하게 함수를 너무 많이 사용하셨습니다.

다른 사람들의 코드를 보면 알 수 있겠지만, 함수를 하나도 사용하지 않고 단순히 if elif else만 이용해서 세 가지 경우를 나눠 처리할 수 있습니다.

함수를 사용하더라도 calc 함수 하나로 처리하셔야 깔끔합니다.


5. #이건 개인 취향입니다.#

(1) T를 사용하지 않고 이렇게 테스트 케이스의 개수를 입력받을 수 있습니다.

for i in range(int(input()):

(2) format 대신에 f-string을 이용할 수 있습니다.

print(f'{y.2f}')

(3) 마지막 elif는 else를 사용하셔도 됩니다.

dong5995   1년 전

아 그리고 input().split() 으로 입력받은 결과값은 리스트이기 때문에 list를 한번 더 쓸 필요는 없습니다.

그리고 5.(2)에 코드가 틀려서 덧붙입니다.

print(f'{y:.2f}')

이렇게 쓰시면 됩니다.

댓글을 작성하려면 로그인해야 합니다.