강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của rbdnjs63001976
rbdnjs63001976

câu hỏi đã được viết

Giới thiệu về giải bài toán bằng thuật toán Python (chuẩn bị cho bài kiểm tra viết mã)

5. Khối đa diện đều

for문 질문있습니다.

Viết

·

315

1

#제가 작성한코드
for i in range(n):
    for x in range(m):
        cnt[i+x] += 1 
    else:
        continue
#강사님이 작성한코드
for i in range(1,n+1):
    for x in range(1,m+1):
        cnt[i+x] += 1 
    else:
        continue
같은 건가요??
저는 0~n까지 접근하고,
강사님은 1~n+1까지 접근하고 같은건가요?
코테 준비 같이 해요! python

Câu trả lời 2

1

다릅니다. 

#같습니다.
for i in range(5):
  print("Hello World")
#결과: "Hello World"
"Hello World"
"Hello World"
"Hello World"
"Hello World"

for i in range(1, 5+1):
  print("Hello World")
#결과: "Hello World"
"Hello World"
"Hello World"
"Hello World"
"Hello World"

위와 같이 "~번반복"하고싶을때는 range(n), range(1, n+1)둘다 괜찮지만 아래와같이 i자체(값)를 사용하고싶을때는 에러가 날 수도있습니다.

arr = [1, 2, 3, 4, 5]
for i in range(5):
    print(arr[i])
#결과:1
#2
#3
#4
#5
for i in range(1, 5 + 1):
    print(arr[i])
#결과:#2
#3
#4
#5
#Traceback (most recent call last):
#  File "/Users/user/Desktop/test/test.py", line 5, in <module>
#    print(arr[i])
#IndexError: list index out of range

그리고 아래같은경우도 있습니다.

n = 12
for i in range(n):
    if n % i == 0:
        print(i, end=' ')
#결과:Traceback (most recent call last):
#  File "/Users/user/Desktop/test/test.py", line 3, in <module>
#    if n % i == 0:
#ZeroDivisionError: integer division or modulo by zero

for i in range(1, n+1):
    if n % i == 0:
        print(i, end=' ')
#결과:1 2 3 4 6 12

따라서 필요에 따라 (n), (1, n+1)를 구분하며 사용해야합니다.

0

codingcamp님의 프로필 이미지
codingcamp
Người chia sẻ kiến thức

안녕하세요^^

이 문제에서 i와 j는 주사위에 눈을 의미합니다. 즉 i값이 정사면체 눈을 의미한다면  i의 값은 1부터 4까지로 표현되어야 가독성도 좋고 의미도 제대로 되어 코드구현이 쉽습니다.

Hình ảnh hồ sơ của rbdnjs63001976
rbdnjs63001976

câu hỏi đã được viết

Đặt câu hỏi