본문 바로가기

coding study

코드잇 코딩캠프 7기 (6/23 ~ ) - 4일 차 (+ 문제 )

DAY 3. 아파서 하루 쉬었다 어휴

 

 

 

DAY 4. 프로그래밍과 데이터 in Python과 파이썬 응용하기 두 코스를 진행하였다.

 

 

▽ 다시 봐야할 문제들


문제 1. greetings 리스트의 원소들을 출력하는 프로그램 작성하기

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

 

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

i = 0

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

출력 결과

 

 

 

 

문제 2. 화씨 온도(ºF)를 섭씨 온도(ºC)로 바꿔주는 프로그램 만들기

 

#화씨온도 -> 섭씨온도
def fahrenheit_to_calsius(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_calsius(temperature_list[i])
    i += 1

print("섭씨 온도 리스트: " + str(temperature_list))

출력 결과

 

 

 

 

문제 3. 환전 서비스 프로그램 만들기 (달러 , 엔화)

* 환율은 1달러에 1,000원, 그리고 1,000엔에 8달러라고 가정

#원화에서 달러로
def krw_to_usd(krw) :
    return krw / 1000

#달러에서 엔화로
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))

출력 결과

 

 

 

 

문제 4.

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

 

numbers = []
print(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)

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

    else:
        i += 1
print(numbers)

numbers.insert(0, 20)
print(numbers)

numbers.sort()
print(numbers)

 

출력 결과

 

 

 

 

 

문제 5. numbers의 인덱스와 원소 출력하기(for문 range함수 사용)

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

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

for i in range (len(numbers)):
    print(i, numbers[i])

출력 결과

 

 

 

 

문제 6. "2의 n제곱"을 출력하는 프로그램을 만들기

for i in range(0, 11) :
    print("2^{} = {}".format(i, 2**i))

출력 결과

 

 

 

 

문제 7. 구구단 프로그램을 while문이 아닌 for문을 사용해서 만들기

for i in range (1, 10) :
    for j in range (1, 10) :
        print("{} * {} = {}".format(i, j, i*j))

출력 결과

9 * 9 = 81 까지 있음

 

 

 

 

문제 8. 라고 가정할 때, a + b + c = 1000을 만족하는 피타고라스 삼조는 단 하나이다. 이 경우, 는 얼마인지 구하기

for a in range (0, 1000) :
    for b in range (0, 1000) :
        c = 1000 - a- b
        if a*a + b*b == c*c and a<b<c  :
            print(a*b*c)

출력 결과

 

 

 

 

문제 9. numbers라는 리스트가 주어졌을 때, for문을 사용하여 리스트를 거꾸로 뒤집어 보기

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

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

for left in range (len(numbers) // 2) :
    right =  len(numbers) - left - 1

    numbers[right], numbers[left] = numbers[left],  numbers[right]

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

출력 결과

 

 

 

 

문제 10. 영어 단어장 만들기 + 단어 추가

  • sanitizer: 살균제
  • ambition: 야망
  • conscience: 양심
  • civilization: 문명

추가->

  • privilege: 특권
  • principle: 원칙

 

vocab = { 'sanitizer': '살균제',
'ambition': '야망',
'conscience': '양심',
'civilization': '문명'}

print(vocab)

vocab['privilege'] = '특권'
vocab['principle'] = '원칙'

print(vocab)

출력 결과

 

 

 

 

문제 11. 사전 뒤집기

def reverse_dict(dict) :
    new_dict = {}

    for key, value in dict.items():
        new_dict[value] = key

    return new_dict

vocab = {
    'sanitizer': '살균제',
    'ambition': '야망',
    'conscience': '양심',
    'civilization': '문명',
    'privilege': '특권',
    'principles': '원칙'
}

# 기존 단어장 출력
print("영-한 단어장\n{}\n".format(vocab))

# 변환된 단어장 출력
reversed_vocab = reverse_dict(vocab)
print("한-영 단어장\n{}".format(reversed_vocab))

출력 결과

 

 

 

 

문제 12. votes의 정보를 토대로, 사전 vote_counter에 후보별 득표수를 정리하기

votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \ '최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \ '강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

votes_counter = {}

for name in votes :
    if name in votes_counter :
        votes_counter[name] += 1
    else :
        votes_counter[name] = 1

print(votes_counter)

출력 결과

 

 

 

 

문제 13. 1에서 1000까지의 자릿수 합을 구하기

def digit_sum(num) :
    total = 0
    str_num = str(num)

    for digit in str_num :
        total += int(digit)

    return total

digit_total = 0

for i in range (1, 1001) :
    digit_total += digit_sum(i)

print(digit_total)

출력 결과

 

 

 

 

문제 14. "토마토"나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 '팰린드롬(palindrome)'이라고 부른다

팰린드롬 여부를 확인하는 함수 is_palindrome을 작성하기

def is_palindrome(word) :
    for left in range (len(word) // 2) :
        right = len(word) - left - 1
        if word[left] != word[right] :
            return False

    return True

print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))

출력 결과

 

 

 

 

문제 15. random 모듈과 input 함수를 활용하여 1과 20 사이의 숫자를 맞히는 게임 프로그램 만들기

import random

answer = random.randint(1, 20)
num_tries = 4

guess = -1
tries = 0

while guess != answer and tries < num_tries :
    guess = int(input("기회가 {}번 남았습니다. 1~20 사이의 숫자를 맞혀보세요.: ".format(num_tries - tries)))
    tries += 1

    if answer > guess :
        print("up")
    elif answer < guess :
        print("dowm")

if guess == answer :
    print("축하합니다. {}번 만에 숫자를 맟히셨습니다.".format(tries))
else :
    print("아쉽습니다. 정답은 {}입니다.".format(answer))

출력 결과

 

 

 

 

문제 16. data 폴더의 chicken.txt 파일을 읽어 들이고, strip과 split을 써서 12월 코빠닭의 하루 평균 매출을 출력하기

with open('data/chicken.txt', 'r') as f :
    total_revenue = 0
    total_day = 0

    for line in f:
        data = line.strip().split(": ")
        revenue = int(data[1])

        total_revenue += revenue
        total_day += 1

    print(total_revenue / total_day)