게시판

검색 결과: 32

, 강 태일님이 작성
 

korean, english, mathematics, science = map(int, input().split())

90 81 86 80

print(korean>=90 and english>80 and mathematics>85 and science>=80)


위와 같이 적으면 두번째 줄 "90 81 86 80" 에서 에러가 나요. 왜 그런건가요??


, 유 현진님이 작성
 

문제에서 합격이면 True, 불합격이면 False가 출력되게 만들라고 하는데 질문 주신 코드상에는 출력하는 부분이 누락된 것으로 보입니다.

, 김 병관님이 작성
 

파이썬 prompt에서는 정상 동작해서 결과와 같은 답을 보여주는 코드가 계속 틀렸다고 나와서 문의드립니다.

korean, english, mathematics, science = map(int, input().split())

korean>=90 and english>80 and mathematics>85 and science>=80


 
책에 제시된 코드가 더 바람직한 코드입니다.
문제에서는 0과 73 사이의 숫자에 대해 처리하라고 되어 있습니다. 즉, 입력 범위가 지정되어 있습니다.

문의하신 것처럼 if i > 73은 예외 처리를 위한 코드입니다.

코드를 작성할 때는 의도가 더 중요합니다. 대부분의 코드는 정상적인 동작을 가정하고, 정상적인 범위에서 동작하는 것이 정상적인 의도일 것입니다. 문제에 제시된 기능을 하는 코드가 함수로 되어 있다면 이 함수는 대부분 0~73 사이의 값에 대해 처리할 것을 전제로 하게 됩니다. 다시 말해 정상적인 코드 동작은 0~73 사이의 값에 대해 처리하고, 73을 초과했을 때만 종료하게 하는 것이 좋습니다.

83과 같은 비정상적인 값, 즉 프로그램에서 가정한 값의 범위를 벗어나는 값에 대해서는 비효율적으로 동작하는 것이 맞지만, 대부분은 정상적인 값의 범위가 입력되고, 그 범위에 대해 동작하는 코드가 더 효율적입니다.

정상적인 범위의 값이 100번 전달되고, 범위를 벗어난 값이 1번 전달되는 것이 보통의 전제일 것입니다. 이런 경우에는 책에 제시된 코드가 더 효율적입니다.

그러나 코드에는 정답이 없으니 원하는 대로 코딩해도 됩니다. 올바르게 동작하기만 하면 됩니다. 이 문제에서는 알고리즘의 효율에 차이가 없기 때문이기도 합니다. 알고리즘 효율에 대해서는 <누구나 자료 구조와 알고리즘>(길벗, 2018)을 추천합니다. 초보자도 읽기 쉽게 되어있으면서도 컴퓨터 공학에서 놓치면 안 되는 알고리즘 효율에 대한 분석을 제시하기 때문입니다. 쉽게 설명하는 알고리즘 책들이 대부분은 빅 오 표기법이나 알고리즘 효율 분석에 대해 부족한 경우가 많은데 반해, 이 책은 이 부분을 중점적으로 설명합니다.


, 모터 아그니님이 작성
 

관리자님 안녕하세요. 군대에서 열심히 파이썬을 공부하는 한 청년입니다^^

글을 쓴 이유는 다름이 아니라 문제 18.5에서 코드 순서가 살짝 의문이여서 입니다.

먼져

i = 0

while True:

  •     i %10 != 3:
  •         i += 1
  •         continue
  •     if i >73 :
  •         break
요것보다는

  •     if i > 73:
  •         break
  •     i %10 != 3:
  •         i += 1
  •         continue
요게 더 낫지 않을 까요?
왜냐면, 73까지 실행 시킬려면 전자의 코드도 물론 아무 문제없이 실행 되지만, 83까지 총 10번이 더 실행되고, 프로그램이 종료 됩니다. 어찌보면, 쓸데없는 계산을 더 하는것이겠죠.
하지만, 후자의 코드를 실행시키면, 73에서 종료 됩니다.
즉, 후자의 코드가 계산량이 적다고 생각됩니다.
이런 엄청 사소한걸로 글을 써서 관리자님의 시간을 뺏어 죄송합니다.
하지만 학습자 입장에서는 이런 작은 코드 변화에도 효율성 측면에서 의문점을 가질수도 있어 보잘껏없는 제가 감히 관리자님에게 말을 드려봅니다

//이런 멋진 책을 만들어주시고 저희들에게 피드백도 해주듯히, 항상 저희같은 학습자들을 위해 모든 최선을 다해주시고 고생해 주셔서 정말 감사합니다. 관리자님 





, Min 영준님이 작성
 

죄송합니다 

제가 잘못 생각 했네요

지금 잘못된 부분을 이해했습니다.

, Min 영준님이 작성
 

 ①

   if i % 10 != 3:
      i += 1
      continue 


   if i > 73:   # 73이 아니라 74를 넣어야 73을 출력할 수 있지 않나?
       break          


②번 코드에서 73을 74로 바꿔 줘야 하지 않을까요??

이유: 

i > 73 은 73과 같다면 break 해야 하기 때문에 73을 출력할 수 없다.


, 도장_ 관리자님이 작성
 

macOS에서 print만으로 SyntaxError가 발생한다면 내부적으로 파이썬3가 아니라 파이썬2가 실행되는 경우일 수도 있다고 합니다.

다음 두 명령(볼드 표시)으로 파이썬 버전을 확인해보는 것도 방법이라고 합니다.

>>> import sys
>>> print(sys.version)
3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)]
>>>


macOS는 파이썬 2.7이 기본으로 설치되어 있습니다. 만약 파이썬을 맥에서 처음 실습해본 것이라면

print 'hello'

가 실행되는지 확인해보세요. 이게 실행된다면 파이썬 2입니다.

파이썬 3는

print('hello')

로 씁니다.

macOS에서 파이썬2와 파이썬3의 충돌은 흔한 문제라고 합니다.

다음은 2018.10.9일자로 작성된 파이썬 개발 환경 구축 방법입니다.

Mac OS에서 Python 개발환경 구축

https://anywayjhwa.tistory.com/10


, 도장_ 관리자님이 작성
 

버전과는 상관이 없습니다. 기본 문법이니까요.

아래 스크린샷을 보면 문의한 분과 같은 Python 3.7.2입니다.

문의한 코드와 같은 코드를 실습했을 때 결과가 잘 나오는 것을 볼 수 있습니다.

윈도우 환경에서 파이썬을 설치해서 실습해보면 잘 될 겁니다.

macOS 환경은 없어서 테스트가 가능하지 않습니다. 그러나 아마 다시 실습해보면 잘 될 겁니다.

문의한 스크린샷이 조금 이상해보입니다. 만일 Syntax Error: invalid syntax가 발생하면 파이썬은 보통 문법 오류가 발생한 위치를 표시해줍니다. 그러한 위치가 표시되지 않으면서 Syntax Error: invalid syntax가 표시되는 경우는 해당 코드 앞에 있는 코드에서 오류가 발생한 경우이거나 해당 코드의 뒤에 어떤 문자가 더 붙어서 위치를 확인하지 못하는 경우입니다.


스크린샷으로 정확한 오류는 알 수 없으나 심사문제를 통과했다면 문제 없는 코드입니다.

print 함수의 ) 끝에 뭔가가 붙어 있었을 수도 있습니다.

온라인 파이썬 실행기인 https://glot.io/python에서 실습해도 잘 됩니다.

map, input, split을 사용한 다른 예제는 잘 된다면 일단 무시해도 될 것 같습니다.