스프링링링
561
2021-08-31 14:59:08
5
101

파이썬 간단한 문제.. (for i range)



a = 100
i = 0
result = 0
for i range(1,3):
    result = a >> i
    result = result + 1
        print(result)

안녕하세요 정보처리기사 실기 문제인데요, 너무 헷갈려서요

a 가 100이니 >> 비트연산자 써주려면 0110 0100 으로 바꿔줘서

range 가 1~2 니깐 a >> 1 로 한 번, a >> 2 로 한번 해줘야 하는거 아닌가요 ? ㅠ

답이 26인데 영 이해가 안가네요 .. 


그리고 range(1,3) 으로 범위를 1,2 로 잡아줬는데 굳이 i = 0 이라고 해 준 이유는 뭘까요 ?

for 반복문 안에 result 를 같은 이름으로 두 개 넣어준 것도 이해가 안가요 ... 

모르는 게 너무 많네요 ㅠㅠ

0
  • 답변 5

  • 20170923
    2k
    2021-08-31 15:36:14

    1. 100(초기 값) > 51 > 26 > 13 순으로 변경되지 않나요?

    2. i=0은 그냥 i 값 선언 및 초기화 용도인 거 같습니다.

  • 신히
    830
    2021-08-31 15:43:53
    문제 내용을 적어주세요.
  • 스프링링링
    561
    2021-08-31 16:22:03

    문제 내용이 저거에요 .. result 값 구하는거요 

    for 문이라 51 , 26 이 답인줄알았는데 26이 답이길래 헷갈려서요.,.!

  • 신히
    830
    2021-08-31 17:35:52

    저거 자체가 문제라면 왜 저렇게 코딩했는지 알 필요 없습니다. (문제를 위한 코딩이기 때문)

    수험자가 코드를 제대로 해석하는지 시험하는 것이므로 약간 코드가 이상할 수 있습니다.

    예를 들어 C언어라면 아래와 같은 문제가 나올 수 있겠지만 실무에서는 이렇게 코딩 안합니다.

    int a = 0;

    printf("%d %d\n", ++a, a++);

    🚀 코드 테스트 해보기


    즉, 결론은 문제를 위한 코딩이어서 저렇게 낸겁니다. 그리고 실제 문제라면 마지막 print문은 들여쓰기가 되어 있지 않아야 합니다. for 문장안에 있을 경우 51, 26이 답이 맞습니다.

  • 스프링링링
    561
    2021-09-01 10:19:17

    아하 ㅠㅠ 그런거였군요 감사합니다 도대체 코드를 왜 저렇게 해놨는지 이해가 안가더라구요 ..

    그러면 print가 밖에 있다면 26이 답인가요 ? 제가 문제를 잘못봤나봐요 .. 답변 너무 감사드립니다 !!

  • 로그인을 하시면 답변을 등록할 수 있습니다.