[파이썬] for와 range 과제

2020. 12. 18. 07:46IT/PYTHON

Q1. numbers라는 리스트가 주어졌습니다.

for문과 range 함수를 사용하여, numbers의 인덱스와 원소를 출력해 보세요.

numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

# 인덱스와 원소 출력
# 코드를 입력하세요.

for문과 range 함수를 사용하여, numbers의 인덱스와 원소를 출력해 보세요.

 

# 내 답안
numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

# 인덱스와 원소 출력
# 코드를 입력하세요.

for num in range(len(numbers)):
    print(f"{num} {numbers[num]}")
    
    

# 모범 답안
numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

# 인덱스와 원소 출력
for i in range(len(numbers)):
    print(i, numbers[i])

 

Q2. v"2의 n제곱"을 출력하는 프로그램을 만들려고 합니다. 코드를 실행하면 아래와 같이 2^0 = 1부터 2^10 = 1024까지 출력되어야 합니다.

# 내 답안
for i in range(11):
    print(f"2^{i} = {2**i}")
    
# 모범 답안
for i in range(11):
    print("{}^{} = {}".format(2, i, 2 ** i))

 

Q3. 구구단 프로그램을 while문이 아닌 for문을 사용해서 만들어 보세요. 코드를 실행하면, 아래와 같이 출력되어야 합니다.

 

# 내 답안
for i in range(1, 10, 1):
    for j in range(1, 10, 1):
        print(f"{i} * {j} = {i * j}")
        
# 모범 답안
for i in range(1, 10):
    for j in range(1, 10):
        print("{} * {} = {}".format(i, j, i * j))

 

Q4. '피타고라스 정리'라고 들어 보셨나요? 직각삼각형에서, 빗변의 제곱이 두 직각변의 제곱의 합과 같다는 정리입니다. 거기서 나온 '피타고라스 삼조'라는 개념이 있는데요. 피타고라스 삼조란, 피타고라스 정리( a 2 + b 2 = c 2 a  2  +b  2  =c  2   )를 만족하는 세 자연수 쌍  ( a , b , c ) (a,b,c)입니다. 예를 들어,  3 2 + 4 2 = 5 2 3  2  +4  2  =5  2  이기 때문에  ( 3 , 4 , 5 ) (3,4,5)는 피타고라스 삼조입니다.  a < b < c a<b<c라고 가정할 때,  a + b + c = 1000 a+b+c=1000을 만족하는 피타고라스 삼조  ( a , b , c ) (a,b,c)는 단 하나인데요. 이 경우,  a ∗ b ∗ c a∗b∗c는 얼마인가요?

# 내 답안
for a in range(1, 1000, 1):
    for b in range(1, 1000, 1):
        c = 1000 - a - b
        if (a + b + c) == 1000 and a < b < c and a * a + b * b == c * c:
            print(f"{a * b * c}")
            
# 모범 답안
for a in range(1, 1000):
    for b in range(1, 1000):
        c = 1000 - a - b
        if a * a + b * b == c * c and a < b < c:
            print(a * b * c)

 

Q5. 리스트 원소들의 순서를 거꾸로 뒤집으려고 합니다. numbers라는 리스트가 주어졌을 때, for문을 사용하여 리스트를 거꾸로 뒤집어 보세요!

# 내 답안(리스트의 sort함수 이용하는 방법)
numbers = [2, 3, 5, 7, 11, 13, 17, 19]

# 리스트 뒤집기
# 코드를 입력하세요.
numbers.sort(reverse=True)

print("뒤집어진 리스트: " + str(numbers))



# 모범 답안
numbers = [2, 3, 5, 7, 11, 13, 17, 19]

# 리스트 뒤집기
for left in range(len(numbers) // 2):
    # 인덱스 left와 대칭인 인덱스 right 계산
    right = len(numbers) - left - 1  
    
    # 위치 바꾸기
    numbers[right], numbers[left] = numbers[left], numbers[right]

print("뒤집어진 리스트: " + str(numbers))