Nonamed Develog
[TIL] AI 웹 개발 7기 사전 캠프 2-3 본문
일일 알고리즘 코드카타 풀어보기
Q. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ numbers의 원소 ≤ 1,000
1 ≤ numbers의 길이 ≤ 100
정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
def solution(numbers):
sum = 0
count = 0
for number in numbers:
count += 1
sum += number
answer = sum/count
return answer
평균값을 구하는 함수가 있을거라 찾아서 쉽게 풀어보려 했지만 오늘은 그동안 배운 것들을 이용해서 풀어보기로 했다. 반복문을 이용하여 각 요소들의 합과 개수를 구할 수가 있었다. 아직 반복문을 사용하는게 익숙하지가 않는 것 같다.
def solution(numbers):
answer= sum(numbers) / len(numbers)
return answer
처음엔 이렇게 풀어보고 싶었다. 이 함수들을 기억해두자.
sum() - 합
len() - 수
[python 과제] Lv3. 단어 맞추기 게임
단어를 주어진 기회 안에 맞추는 게임을 만들어보세요.
1. 컴퓨터가 랜덤으로 영어단어를 선택합니다.
- 영어단어의 자리수를 알려줍니다.
- ex ) PICTURE = 7자리 ⇒ _ _ _ _ _ _ _
import random
word = random.choice(words)
지난 닉네임 생성기에서 배운 방법으로 랜덤으로 단어 선택할 수 있게 해봤다.
여기까지 하고 진짜 1도 모르겠어서 구글링을 해본 결과 비슷한 문제에 대한 예제가 있어서 따라해 보기로 했다.
4주차에 한번 더 할 수 있는 기회가 있으므로 이번 예제로 코드 공부하면서 알고리즘 적 사고를 기른다 생각해보자.
1. 알파벳 4개 입력 받기
print('영어 단어 알파벳 찾기 게임')
print('영어 단어의 알파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
print('_')
print('_')
print('_')
print('_')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
deep 이라는 한 단어만 두고 알파벳 4개를 입력할 수 있게 input으로 진행했다.
answer=input으로 answers 리스트에 알파벳을 추가할 수 있게 만들었다.(answers.append(answer)
#
영어 단어 알파벳 찾기 게임
영어 단어의 알파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
2. 모든 알파벳을 찾았는지 체크
print('영어 단어 알파벳 찾기 게임')
print('영어 단어의 알파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
print('_')
print('_')
print('_')
print('_')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
반복문을 이용하여 word 리스트의 알파벳 letter를 나열하고
조건문을 통해 알파벳 letter가 answers에 있지 않으면 False가 나오게 했다.(answers는 answer=input의 나열)
#
영어 단어 알파벳 찾기 게임
영어 단어의 알파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
3. 사이 사이에 체크
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
print('_')
print('_')
print('_')
print('_')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다')
이전에 했던 T/F 코드를 input 사이에 넣으면 input마다 T/F를 알 수 있을 것이다.
(2번이랑 결과가 같아서 뭐가 다른지 모르겠다.)
#
영어 단어 알파벳 찾기 게임
영어 단어의 알파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
4. 반복문
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
이 것을 4번 반복해야하기 때문에 반복문으로 수정해보자.
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
print('_')
print('_')
print('_')
print('_')
for _ in range(4):
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
앞서 4번 반복을 했으니 range(4) 함수를 사용해서 나열할 수 있다.
for _ in range()
파이썬에서는 반복을 수행하되, 변수 값이 필요 없을 때 언더바(_)를 사용할 수 있다.
예를 들어, print 문을 반복시킬 때, 아래와 같이 변수 부분에 언더바를 적어주면, 변수 없이 반복문이 실행된다.
for _ in range(5):
print("Hello World")
#
Hello World
Hello World
Hello World
Hello World
Hello World
5. 알파벳 9개 입력받기
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
print('_')
print('_')
print('_')
print('_')
for _ in range(9):
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
break
range(9)로 수정하면서 input 값을 9번 넣을 수 있게 수정했다.
9회 내로 모든 알파벳을 찾았을 경우 멈출 수 있게 break도 추가했다.
#
영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: a
알파벳을 입력하세요: b
알파벳을 입력하세요: c
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
6. 영어 단어 보여주기
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
print('_')
print('_')
print('_')
print('_')
for _ in range(9):
for letter in word:
if letter in answers:
print(letter)
else:
print('_')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
break
조건문을 활용하여 word에 있는 알파벳과 input(=answer)에 입력한 알파벳이면 알파벳을 출력하고 아니면 _을 출력했다.
#
영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_
_
_
_
_
_
_
_
알파벳을 입력하세요: a
_
_
_
_
알파벳을 입력하세요: b
_
_
_
_
알파벳을 입력하세요: c
_
_
_
_
알파벳을 입력하세요: d
d
_
_
_
알파벳을 입력하세요: e
d
e
e
_
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
(중간에 _는 4개였다가 왜 8개로 된거지?)
7. 중복 제거
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
for _ in range(9):
for letter in word:
if letter in answers:
print(letter)
else:
print('_')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
break
위의 print('_') 4개는 임의로 지정해 놓은 것 같다.
이 전에 영어 단어 보여주기에 입력한 알파벳이 아닌 경우에 _가 출력되게 했다.
(아무것도 입력 안했을 시 알파벳 하나하나는 _이 될 것이다.)
#
영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: a
_
_
_
_
알파벳을 입력하세요: b
_
_
_
_
알파벳을 입력하세요: c
_
_
_
_
알파벳을 입력하세요: e
_
e
e
_
알파벳을 입력하세요: d
d
e
e
_
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
8. 영어 단어 옆으로 보여주기
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
for _ in range(9):
for letter in word:
if letter in answers:
print(letter, end=' ')
else:
print('_', end=' ')
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
break
위의 조건문에서 end=' ' 을 이용했다.
end 사용하기
파이썬의 print는 기본적으로 출력하는 값 끝에 \n을 붙이기 때문에 print를 여러 번 사용하면 값이 여러 줄에 출력된다.
만약 print를 여러 번 사용하더라도 print(1, 2, 3)처럼 한 줄에 여러 개의 값을 출력하고 싶을 경우 end를 사용하면 된다.
예) print(값, end='문자 또는 문자열')
#
영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_ _ _ _ 알파벳을 입력하세요: a
_ _ _ _ 알파벳을 입력하세요: b
_ _ _ _ 알파벳을 입력하세요: c
_ _ _ _ 알파벳을 입력하세요: d
d _ _ _ 알파벳을 입력하세요: e
d e e _ 알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
9. 줄 바꾸기
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
word = 'deep'
answers = []
for _ in range(9):
for letter in word:
if letter in answers:
print(letter, end=' ')
else:
print('_', end=' ')
print()
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
break
중간에 print()를 추가해주면서 _칸과 '알파벳을 입력하세요: ' 의 줄을 바꿔준다.
#
영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_ _ _ _
알파벳을 입력하세요: a
_ _ _ _
알파벳을 입력하세요: b
_ _ _ _
알파벳을 입력하세요: c
_ _ _ _
알파벳을 입력하세요: d
d _ _ _
알파벳을 입력하세요: e
d e e _
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!
10. 랜덤 단어 문제
최종코드
import random
print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')
words = [
"airplane",
"apple",
"arm",
"bakery",
"banana",
"bank",
"bean",
"belt",
"bicycle",
"biography",
"blackboard",
"boat",
"bowl",
"broccoli",
"bus",
"car",
"carrot",
"chair",
"cherry",
"cinema",
"class",
"classroom",
"cloud",
"coat",
"cucumber",
"desk",
"dictionary",
"dress",
"ear",
"eye",
"fog",
"foot",
"fork",
"fruits",
"hail",
"hand",
"head",
"helicopter",
"hospital",
"ice",
"jacket",
"kettle",
"knife",
"leg",
"lettuce",
"library",
"magazine",
"mango",
"melon",
"motorcycle",
"mouth",
"newspaper",
"nose",
"notebook",
"novel",
"onion",
"orange",
"peach",
"pharmacy",
"pineapple",
"plate",
"pot",
"potato",
"rain",
"shirt",
"shoe",
"shop",
"sink",
"skateboard",
"ski",
"skirt",
"sky",
"snow",
"sock",
"spinach",
"spoon",
"stationary",
"stomach",
"strawberry",
"student",
"sun",
"supermarket",
"sweater",
"teacher",
"thunderstorm",
"tomato",
"trousers",
"truck",
"vegetables",
"vehicles",
"watermelon",
"wind"
]
word = random.choice(words)
answers = []
for _ in range(9):
for letter in word:
if letter in answers:
print(letter, end=' ')
else:
print('_', end=' ')
print()
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
found_all = True
for letter in word:
if letter not in answers:
found_all = False
if found_all:
print('모든 알파벳을 찾았습니다!')
break
import random을 사용하여 random.choice(words)를 뽑아와 단어 맞추기 문제를 진행할 수 있다.
원래 받은 문제는 랜덤으로 영어단어를 뽑고 자리수부터 실행하는데 완전 반대되는 예제 풀이었다.
과제에서는 isalpha도 활용하도록 유도했지만 할 수가 없었다.
4주차에 다시 한번 진행할 때는 이 풀이를 바탕으로 스스로 풀어보자.
'WHAT I LEARN > TIL' 카테고리의 다른 글
[TIL] AI 웹 개발 7기 사전 캠프 2-5 (0) | 2024.05.31 |
---|---|
[TIL] AI 웹 개발 7기 사전 캠프 2-4 (0) | 2024.05.30 |
[TIL] AI 웹 개발 7기 사전 캠프 2-2 (1) | 2024.05.28 |
[TIL] AI 웹 개발 7기 사전 캠프 2-1 (0) | 2024.05.27 |
[TIL] AI 웹 개발 7기 사전 캠프 1-5 (0) | 2024.05.24 |