[파이썬] 리스트와 인덱싱 연습문제

2020. 12. 17. 22:29IT/PYTHON

Q1. greetings 리스트의 원소를 모두 출력하는 프로그램을 작성해 보세요. while문과 리스트의 개념을 활용하시면 됩니다.

greetings = ["안녕", "니하오", "곤니찌와", "올라", "싸와디캅", "헬로", "봉주르"]

출력하면 아래와 같은 결과물이 나와야 합니다. 

안녕
니하오
곤니찌와
올라
싸와디캅
헬로
봉주르

# 내 답안
greetings = ["안녕", "니하오", "곤니찌와", "올라", "싸와디캅", "헬로", "봉주르"]

# 코드를 작성하세요.
i = 0

while i < len(greetings):
    print(greetings[i])
    i += 1
    

# 모범 답안
i = 0
while i < len(greetings):
    print(greetings[i])
    i += 1

 

Q2. 화씨 온도(°F)를 섭씨 온도(°C)로 바꾸어주는 프로그램을 만들려고 합니다. 섭씨와 화씨의 관계식은 다음과 같습니다:

화씨 온도를 섭씨 온도로 변환해 주는 함수 fahrenheit_to_celsius를 써 보세요. 이 함수를 파라미터로 화씨 온도 fahrenheit를 받고, 변환된 섭씨 온도를 리턴합니다. 위 프로그램을 실행하면 아래처럼 출력되어야 합니다.

# 내 답안
# 화씨 온도에서 섭씨 온도로 바꿔 주는 함수
def fahrenheit_to_celsius(fahrenheit):
    # 코드를 입력하세요.
    return (fahrenheit - 32) *5 / 9


temperature_list = [40, 15, 32, 64, -4, 11]

print("화씨 온도 리스트: " + str(temperature_list))  # 화씨 온도 출력

# 리스트의 값들을 화씨에서 섭씨로 변환하는 코드를 입력하세요.
i = 0
while i < len(temperature_list):
    temperature_list[i] = fahrenheit_to_celsius(temperature_list[i])
    i += 1
    
print("섭씨 온도 리스트: " + str(temperature_list))  # 섭씨 온도 출력


# 모범 답안
# 화씨 온도에서 섭씨 온도로 바꿔 주는 함수
def fahrenheit_to_celsius(fahrenheit):
    return (fahrenheit - 32) * 5 / 9


temperature_list = [40, 15, 32, 64, -4, 11]
print("화씨 온도 리스트: " + str(temperature_list))  # 화씨 온도 출력

# 리스트의 값들을 화씨에서 섭씨로 변환하는 코드
i = 0
while i < len(temperature_list):
    temperature_list[i] = round(fahrenheit_to_celsius(temperature_list[i]), 1)
    i += 1
print("섭씨 온도 리스트: {}".format(temperature_list))  # 섭씨 온도 출력

 

Q3. 제가 구매하고 싶은 물건들의 가격을 리스트에 정리해 놨습니다.

가격의 단위는 모두 원화(₩)인데요. 이 물건들의 가격을 미국 달러($)로 하면 얼마일지, 그리고 일본 엔화(¥)로 하면 얼마일지 확인해 보려고 합니다.

해야 할 일 

우리가 해야 할 일은 크게 두 가지입니다. 

1. 함수 작성
2. 반복문을 통해 리스트 요소들 변환 

1. 함수 작성 먼저 한국 원화를 미국 달러로 변환해 주는 krw_to_usd 함수, 그리고 미국 달러를 일본 엔화로 변환해 주는 usd_to_jpy 함수를 써야 하는데요. krw_to_usd 함수는 파라미터로 원화 krw을 받아서 변환된 미국 달러 액수를 리턴해 줍니다. 마찬가지로 usd_to_jpy 함수는 파라미터로 달러 usd를 받아서 변환된 일본 엔화 액수를 리턴해 주는 거죠. 참고로 환율은 1달러에 1,000원, 그리고 1,000엔에 8달러라고 가정합니다. 

2. 반복문을 통해 리스트 요소들 변환 반복문을 사용해서 리스트의 요소들을 각각 다른 화폐로 변환해야 하는데요. 그 과정에서 krw_to_usd 함수와 usd_to_jpy 함수를 활용하면 되겠죠? 위 코드를 완성하고 실행하면 아래와 같이 출력됩니다.

# 내 답안
KRW_TO_USD_EXCHANGE = 1000  #원달러 환율 : 1달러에 1000원
JPY_TO_USD_EXCHANGE = 8  # 엔달러 환율 : 1000엔에 8달러


# 원화(₩)에서 달러($)로 변환하는 함수
def krw_to_usd(krw):
    # 코드를 입력하세요.
    return krw / KRW_TO_USD_EXCHANGE

# 달러($)에서 엔화(¥)로 변환하는 함수
def usd_to_jpy(usd):
    # 코드를 입력하세요.
    return usd / JPY_TO_USD_EXCHANGE * 1000


# 원화(₩)으로 각각 얼마인가요?
amounts = [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000]
print("한국 화폐: " + str(amounts))
 
# amounts를 원화(₩)에서 달러($)로 변환하기
# 코드를 입력하세요.

# 달러($)로 각각 얼마인가요?
i = 0
while i < len(amounts):
    amounts[i] = krw_to_usd(amounts[i])
    i += 1

print("미국 화폐: " + str(amounts))

# amounts를 달러($)에서 엔화(¥)으로 변환하기
# 코드를 입력하세요.

# 엔화(¥)으로 각각 얼마인가요?
i = 0
while i < len(amounts):
    amounts[i] = usd_to_jpy(amounts[i])
    i += 1
    
print("일본 화폐: " + str(amounts))


# 모범 답안
# 원화(₩)에서 달러($)로 변환하는 함수
def krw_to_usd(krw):
    return krw / 1000  # 1,000원 당 1달러


# 달러($)에서 엔화(¥)로 변환하는 함수
def usd_to_jpy(usd):
    return usd / 8 * 1000


# 원화(₩)로 각각 얼마인가요?
prices = [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000]
print("한국 화폐: " + str(prices))
 
# prices를 원화(₩)에서 달러($)로 변환하기
i = 0
while i < len(prices):
    prices[i] = krw_to_usd(prices[i])
    i += 1

# 달러($)로 각각 얼마인가요?
print("미국 화폐: " + str(prices))

# prices를 달러($)에서 엔화(¥)로 변환하기
i = 0
while i < len(prices):
    prices[i] = usd_to_jpy(prices[i])
    i += 1

# 엔화(¥)로 각각 얼마인가요?
print("일본 화폐: " + str(prices))

 

Q4. 리스트 함수를 활용하여 아래의 지시 사항을 따르세요. 

1. numbers라는 빈 리스트를 만들고 리스트를 출력한다. 
2. append를 이용해서 numbers에 1, 7, 3, 6, 5, 2, 13, 14를 순서대로 추가한다. 그 후 리스트를 출력한다. 
3. numbers 리스트의 원소들 중 홀수는 모두 제거한다. 그 후 다시 리스트를 출력한다. 
4. numbers 리스트의 인덱스 0 자리에 20이라는 수를 삽입한 후 출력한다. 
5. numbers 리스트를 정렬한 후 출력한다.

# 내 답안
# 빈 리스트 만들기
numbers = []
print(numbers)

# numbers에 값들 추가
# 코드를 입력하세요
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)


print(numbers)

# numbers에서 홀수 제거
# 코드를 입력하세요
i = 0

while i < len(numbers):
    if numbers[i] % 2 != 0:
        del numbers[i]
    else:
        i += 1

print(numbers)

# numbers의 인덱스 0 자리에 20이라는 값 삽입
# 코드를 입력하세요
numbers.insert(0,20)
print(numbers)

# numbers를 정렬해서 출력
# 코드를 입력하세요
numbers.sort()
print(numbers)


# 모범답안
# 빈 리스트 만들기
numbers = []
print(numbers)

# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)

# numbers에서 홀수 제거
i = 0
while i < len(numbers):
    if numbers[i] % 2 == 1:
        del numbers[i]
    else:
        i += 1
print(numbers)

# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)

# numbers를 정렬해서 출력
numbers.sort()
print(numbers)

 

리스트 꿀팁!

TIP 1.

 

TIP2. 리스트 안의 리스트 (Nested List) 리스트 안에는 또 다른 리스트가 있을 수 있습니다. 이를 영어로 nested list라고 부릅니다.

# 세 번의 시험을 보는 수업
grades = [[62, 75, 77], [78, 81, 86], [85, 91, 89]]

# 첫 번째 학생의 성적
print(grades[0])

# 세 번째 학생의 성적
print(grades[2])

# 첫 번째 학생의 첫 번째 시험 성적
print(grades[0][0])

# 세 번째 학생의 두 번째 시험 성적
print(grades[2][1])

# 첫 번째 시험의 평균
print((grades[0][0] + grades[1][0] + grades[2][0]) / 3)

 

TIP3. 

 

TIP4. 

TIP5.

TIP6.