# random 모듈 사용
import random
# 단어 사전 입력
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"
]
# 랜덤 단어 선택
random_word = random.choice(words)
# 단어의 자리수
word_lengh = (len(random_word))
# 단어의 자리수 공개
print(f'정답 단어의 자리 수는 {word_lengh}입니다.')
# 시도 횟수 9번
hp = 9
# 게임의 결과 = 빈칸이 정답의 자리 수 만큼 있는 리스트 생성
game_result = ['_']*word_lengh
# 반복문 조건, hp가 > 0 일 때:
while hp > 0:
# 원하는 알파벳 입력
alphabet = str(input('알파벳을 입력하세요: '))
# 알파벳이 정답에 포함될 경우
if alphabet in random_word:
for i in range(word_lengh):
# 만약 입력한 알파벳이 단어의 특정 자리 수에 일치할 경우
if alphabet == random_word[i]:
# 게임 결과 업데이트. 게임 결과의 자리수에 그 알파벳이 오도록
game_result[i] = alphabet
# 그리고 리스트를 문자열로 바꾸어 공개
print(''.join(game_result))
# 알파벳이 정답이 아닐경우
else:
# hp 1 감소
hp -= 1
print(f'남은 목숨 {hp}')
# 모든 알파벳을 다 찾았을 경우 break로 반복 종료
if ''.join(game_result) == random_word:
print('축하합니다!')
break
# while문이 조건을 성립하지 못해 끝났을 경우 (조건이 거짓일 때)
else:
# 게임오버
print('게임오버.')
# 최종 정답 공개
print(f'정답: {random_word}')
한 문제 푸는데 세시간 걸렸다.
단어의 자리 수 공개까지는 금방하고 아래 게임에서 막힘...
gpt없었으면 오늘안에 못 풀 것 같아서 도움받음.
스스로 생각한 부분 : hp = 9 만들고 while문 조건을 hp>0으로 해서 틀릴때마다 1씩 빼기.
ai 힌트 받은 부분 :
1) game_result 를 리스트로 만든다는 개념
리스트로 만들어서 입력한 알파벳이 있으면 자리 수 공개하는 함수까지 만들었는데, 결국 game_result가 그때그때 입력한 값에만 움직이고, 누적이 안됐음
def game(alphabet, word):
result = []
for i in word:
if i == alphabet:
result.append(alphabet)
else:
result.append('_')
return result
2) game_result를 빈칸글자수로 만들고 업데이트하기
실행할 때마다 글자수가 그때 그때 달라지기 때문에 반영하기 위해 빈칸글자수로 미리 결과를 만들어놓고, 그때그때 정답이면 채워서 업데이트하는 방식
추가 ai 피드백
# 대소문자 구분 없이 입력 받는 법
alphabet = input('알파벳을 입력하세요: ').lower()
# 입력된 알파벳이 하나가 아니면 다시 입력 받음
if len(alphabet) != 1 or not alphabet.isalpha():
print("알파벳 하나만 입력해주세요.")
continue
users 테이블에서 김씨 이름 가진 사람 찾기
# 내 풀이
SELECT
COUNT(*) name_cnt
FROM users
# like 활용 : 김씨성 찾기
WHERE name LIKE '김%';
# 답안
SELECT count(distinct(user_id)) as name_cnt
FROM
users
# substring 활용 : '김' 이란 글자 찾기
WHERE substr(name,1,1) = '김'
조건은 동일한데 user_id distinct 안 치면 같은 사람이 여러번 주문했을 경우 중복포함 가능. 다행히 중복이 없어서 답은 일치했지만 주의하자
날짜별로 획득한 포인트가 점점 늘어나는지 줄어드는지 확인
SELECT
DATE(created_at) created_at
# ROUND로 반올림!
, ROUND(AVG(point)) average_points
FROM point_users
GROUP BY 1

파이썬 응용문제 쉽지 않았지만 재밌었다.! 벌써 사전캠프가 1주일 남았다. 다음주엔 월, 화에 SQL 문제 다 풀고, 북 스터디를 통해서 본캠프를 잘 준비해야겠다.