You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 파이썬 숫자 야구 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.Experience-Porthcawl.com team, along with other related topics such as: 파이썬 숫자 야구 숫자야구 필승법, 숫자야구 맞추는 프로그램, 야구게임 코딩, 숫자야구 4자리 알고리즘, 숫자야구 계산기, 숫자야구 같은 게임
[파이썬 프로젝트 #2] – 숫자 야구 게임 만들기
- Article author: qa-testing.tistory.com
- Reviews from users: 13031 Ratings
- Top rated: 3.8
- Lowest rated: 1
- Summary of article content: Articles about [파이썬 프로젝트 #2] – 숫자 야구 게임 만들기 목차 파이썬 프로젝트 : 숫자 야구 게임 만들기 어렸을 때 많이 해 보았던 ‘숫자 야구’ 게임을 만들려고 합니다. 학교 다닐때 친구들과 많이 해 봤던 … …
- Most searched keywords: Whether you are looking for [파이썬 프로젝트 #2] – 숫자 야구 게임 만들기 목차 파이썬 프로젝트 : 숫자 야구 게임 만들기 어렸을 때 많이 해 보았던 ‘숫자 야구’ 게임을 만들려고 합니다. 학교 다닐때 친구들과 많이 해 봤던 … 목차 파이썬 프로젝트 : 숫자 야구 게임 만들기 어렸을 때 많이 해 보았던 ‘숫자 야구’ 게임을 만들려고 합니다. 학교 다닐때 친구들과 많이 해 봤던 기억이 있는데요. 규칙 컴퓨터는 0과 9 사이의 서로 다른..
- Table of Contents:
티스토리툴바
파이썬 숫자 야구게임 만드는 방법은?!
- Article author: aplab.tistory.com
- Reviews from users: 7568 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about 파이썬 숫자 야구게임 만드는 방법은?! 파이썬 기초를 배우면 몇 가지 재미있는 것을 해 볼 수 있습니다. 그 중에 하나는 숫자 야구게임입니다. 숫자 야구게임은 3개의 번호를 맞추는 게임 … …
- Most searched keywords: Whether you are looking for 파이썬 숫자 야구게임 만드는 방법은?! 파이썬 기초를 배우면 몇 가지 재미있는 것을 해 볼 수 있습니다. 그 중에 하나는 숫자 야구게임입니다. 숫자 야구게임은 3개의 번호를 맞추는 게임 … 파이썬 기초를 배우면 몇 가지 재미있는 것을 해 볼 수 있습니다. 그 중에 하나는 숫자 야구게임입니다. 숫자 야구게임은 3개의 번호를 맞추는 게임이다. 숫자 야구게임의 방식은 이렇습니다. 먼저 정답인 숫..
- Table of Contents:
1 정답을 랜덤하게 정합니다
티스토리툴바
간단한 파이썬(Python)언어 프로젝트 숫자 야구 게임 만들기 및 방법 : 네이버 블로그
- Article author: blog.naver.com
- Reviews from users: 20894 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about 간단한 파이썬(Python)언어 프로젝트 숫자 야구 게임 만들기 및 방법 : 네이버 블로그 from random import randint #랜덤 모듈에 randint만 사용 def generate_numbers(): # 함수 선언 numbers = [] #세 가지 정수를 담을 숫자열 선언 i = 0 … …
- Most searched keywords: Whether you are looking for 간단한 파이썬(Python)언어 프로젝트 숫자 야구 게임 만들기 및 방법 : 네이버 블로그 from random import randint #랜덤 모듈에 randint만 사용 def generate_numbers(): # 함수 선언 numbers = [] #세 가지 정수를 담을 숫자열 선언 i = 0 …
- Table of Contents:
악성코드가 포함되어 있는 파일입니다
작성자 이외의 방문자에게는 이용이 제한되었습니다
B.1. 숫자 야구게임 – Python 3.4 공부 좀 해볼까?
- Article author: wikidocs.net
- Reviews from users: 27271 Ratings
- Top rated: 4.2
- Lowest rated: 1
- Summary of article content: Articles about B.1. 숫자 야구게임 – Python 3.4 공부 좀 해볼까? 1. 숫자 야구게임. 소스 import random # 게임을 위한 랜덤 숫자 생성 rn = [“0″, ” … …
- Most searched keywords: Whether you are looking for B.1. 숫자 야구게임 – Python 3.4 공부 좀 해볼까? 1. 숫자 야구게임. 소스 import random # 게임을 위한 랜덤 숫자 생성 rn = [“0″, ” … 온라인 책을 제작 공유하는 플랫폼 서비스
- Table of Contents:
[파이썬] 숫자야구 [반복문, 조건문, 예외처리, txt파일 호출]
- Article author: yeachan.tistory.com
- Reviews from users: 8002 Ratings
- Top rated: 3.1
- Lowest rated: 1
- Summary of article content: Articles about [파이썬] 숫자야구 [반복문, 조건문, 예외처리, txt파일 호출] [파이썬] 숫자야구 [반복문, 조건문, 예외처리, txt파일 호출]. 예찬예찬 2021. 8. 16. 23:57. “숫자야구는 겹치지 않는 세 숫자를 무작위로 정해 상대방이 그 숫자를 … …
- Most searched keywords: Whether you are looking for [파이썬] 숫자야구 [반복문, 조건문, 예외처리, txt파일 호출] [파이썬] 숫자야구 [반복문, 조건문, 예외처리, txt파일 호출]. 예찬예찬 2021. 8. 16. 23:57. “숫자야구는 겹치지 않는 세 숫자를 무작위로 정해 상대방이 그 숫자를 … “숫자야구는 겹치지 않는 세 숫자를 무작위로 정해 상대방이 그 숫자를 맞추는 게임이다” 여기서 본인은 ‘겹치지 않는다’, ‘세 숫자를 무작위로 정한다’가 이번 코딩의 핵심이라고 생각함 먼저 무작위로 수를 정하..
- Table of Contents:
티스토리 뷰
티스토리툴바
[Python] 파이썬으로 구현한 숫자야구게임
- Article author: nevertrustbrutus.tistory.com
- Reviews from users: 39805 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about [Python] 파이썬으로 구현한 숫자야구게임 import random computer=[] while True: rd = random.randint(0, 9) if(not rd in computer): computer.append(rd) if len(computer) == 3: break … …
- Most searched keywords: Whether you are looking for [Python] 파이썬으로 구현한 숫자야구게임 import random computer=[] while True: rd = random.randint(0, 9) if(not rd in computer): computer.append(rd) if len(computer) == 3: break … import random computer=[] while True: rd = random.randint(0, 9) if(not rd in computer): computer.append(rd) if len(computer) == 3: break print(len(computer)) print(computer) cnt=0 print(“숫자 야구..
- Table of Contents:
FU11M00N
[Python] 파이썬으로 구현한 숫자야구게임 본문숫자야구 ver 0.2 in Python | 개발자, 민수
- Article author: mswoo.github.io
- Reviews from users: 49408 Ratings
- Top rated: 4.0
- Lowest rated: 1
- Summary of article content: Articles about 숫자야구 ver 0.2 in Python | 개발자, 민수 [Python] tkinter GUI 숫자 야구 게임 만들기 저번에 심심풀이로 만들었던 숫자 야구 게임을 tkinter 모듈을 이용해서 GUI환경으로 만들어 보겠습니다 … …
- Most searched keywords: Whether you are looking for 숫자야구 ver 0.2 in Python | 개발자, 민수 [Python] tkinter GUI 숫자 야구 게임 만들기 저번에 심심풀이로 만들었던 숫자 야구 게임을 tkinter 모듈을 이용해서 GUI환경으로 만들어 보겠습니다 … [Python] tkinter GUI 숫자 야구 게임 만들기 저번에 심심풀이로 만들었던 숫자 야구 게임을 tkinter 모듈을 이용해서 GUI환경으로 만들어 보겠습니다. 이전 숫자야구 게시글
- Table of Contents:
[파이썬] 숫자야구 게임 만들기 :: Dvlp_Jun의 개발블로그
- Article author: dvlp-jun.tistory.com
- Reviews from users: 2144 Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about [파이썬] 숫자야구 게임 만들기 :: Dvlp_Jun의 개발블로그 [파이썬] 숫자야구 게임 만들기. Dvlp_Jun 2020. 7. 19. 09:00. 안녕하세요? 오늘은 간단한 게임(?)을 만들어 보려고 한다. 숫자야구란.. 상대방이 숫자를 적으면. …
- Most searched keywords: Whether you are looking for [파이썬] 숫자야구 게임 만들기 :: Dvlp_Jun의 개발블로그 [파이썬] 숫자야구 게임 만들기. Dvlp_Jun 2020. 7. 19. 09:00. 안녕하세요? 오늘은 간단한 게임(?)을 만들어 보려고 한다. 숫자야구란.. 상대방이 숫자를 적으면. 안녕하세요? 오늘은 간단한 게임(?)을 만들어 보려고 한다. 숫자야구란.. 상대방이 숫자를 적으면 자신이 숫자를 불러가면서 그 숫자를 맞추는 게임이다. 만약 상대방이 적은 숫자가 2 5 3이라면 자신이 1 2 3을..프로그래밍 및 IT관련 블로그 입니다!
- Table of Contents:
티스토리툴바
See more articles in the same category here: toplist.Experience-Porthcawl.com/blog.
[파이썬 프로젝트 #2]
반응형
목차
파이썬 프로젝트 : 숫자 야구 게임 만들기
어렸을 때 많이 해 보았던 ‘숫자 야구’ 게임을 만들려고 합니다.
학교 다닐때 친구들과 많이 해 봤던 기억이 있는데요.
규칙
컴퓨터는 0과 9 사이의 서로 다른 숫자 3개를 무작위로 뽑습니다. 예를 들어서 컴퓨터가 5, 2, 3을 뽑을 수도 있고 6, 7, 4를 뽑을 수도 있는 거죠. 사용자는 컴퓨터가 뽑은 숫자의 값과 위치를 맞추어야 합니다. 컴퓨터는 사용자가 입력한 숫자 3개에 대해서, 아래의 규칙대로 스트라이크(S)와 볼(B)의 개수를 알려줍니다. 숫자의 값과 위치가 모두 일치하면 S입니다.
숫자의 값은 일치하지만 위치가 틀렸으면 B입니다.
예를 들어 컴퓨터가 1, 2, 3을 뽑았다고 가정합시다. 사용자가 1, 3, 5를 입력하면, 1S(1의 값과 위치가 일치) 1B(3의 값만 일치)입니다. 기회는 무제한입니다. 하지만 몇 번의 시도 끝에 맞췄는지 기록됩니다. 3S(숫자 3개의 값과 위치를 모두 맞춘 경우)가 나오면 게임이 끝납니다.
진행 방식
“0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다.”가 출력됩니다. “숫자 3개를 하나씩 차례대로 입력하세요.”가 출력됩니다. “1번째 숫자를 입력하세요: “가 출력되고, 사용자로부터 입력을 받습니다. 마찬가지로 “2번째 숫자를 입력하세요: “와 “3번째 숫자를 입력하세요: “가 출력되고, 사용자로부터 각각 입력을 받습니다. 만약 사용자가 중복되는 숫자를 입력하거나 범위에서 벗어나는 숫자를 입력하면, 사용자로부터 입력을 다시 받습니다. 사용자가 올바르게 숫자 3개를 입력하면, 규칙에 따라 “*S *B”가 출력됩니다. 3S가 아닌 경우, 2번부터 다시 진행합니다. 사용자가 3S를 달성하면, “축하합니다. *번 만에 숫자 3개의 값과 위치를 모두 맞추셨습니다.”가 출력됩니다. 그리고 게임은 종료됩니다.
게임 진행 예시
0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다. 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 2 2번째 숫자를 입력하세요: 2 중복되는 숫자 입니다. 다시 입력하세요. 2번째 숫자를 입력하세요: 11 범위를 벗어나는 숫자입니다. 다시 입력하세요. 2번째 숫자를 입력하세요: 3 3번째 숫자를 입력하세요: 8 1S 1B 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 8 2번째 숫자를 입력하세요: 2 3번째 숫자를 입력하세요: 0 1S 2B 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 2 2번째 숫자를 입력하세요: 8 3번째 숫자를 입력하세요: 0 3S 0B 축하합니다. 3번 만에 숫자 3개의 값과 위치를 모두 맞추셨습니다.
숫자 야구: 숫자 3개 뽑기
숫자 야구 게임을 한 단계씩 완성해 나갑시다.
먼저 정답 숫자 3개를 뽑아 주는 generate_numbers 함수를 작성할 것입니다.
generate_numbers
무작위로 0과 9 사이의 서로 다른 숫자 3개를 뽑고, 그 숫자들이 담긴 리스트를 리턴합니다.
예를 들어서 아래 코드를 실행하면,
print(generate_numbers())
하지만 다시 실행하면 다른 결과가 나오겠죠?
[힌트]1. 우리는 총 6개의 숫자를 추가하고 싶은 거니까, numbers 리스트에 값이 3개 미만인 동안 반복문을 돌겠습니다.
while len(numbers) < 3: 그리고 while문의 수행 부분에서 리스트에 숫자를 추가하면 되는데요. 숫자를 무작위로 뽑는 건 randint 함수를 사용해서 할 수 있겠죠? 2. 숫자를 무작위로 뽑는 것은 이렇게 할 수 있습니다. while len(numbers) < 3: new_number = randint(0, 9) 이제 new_number를 리스트 numbers에 추가하면 되는데요. 여 기서 조금 주의하셔야 할 게 있습니다. new_number를 무작정 추가하면, 리스트에 중복값이 들어갈 수도 있습니다. while len(numbers) < 3: new_number = randint(0, 9) if new_number not in numbers: numbers.append(new_number) new_number가 numbers 리스트에 없는 경우에만 추가를 해야겠죠? 리스트의 in 키워드를 잘 활용해 보세요! [모법 답안] from random import randint def generate_numbers(): numbers = [] while len(numbers) < 3: num = randint(0, 9) if num not in numbers: numbers.append(num) print("0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다. ") return numbers 숫자 야구: 숫자 예측하기 이번에는 유저에게 숫자 3개를 입력받는 take_guess 함수를 작성하겠습니다. take_guess 유저에게 숫자 3개를 반복적으로 입력받은 후, 유저가 입력한 숫자들을 리스트에 정리해서 리턴합니다. 예를 들어서 아래 코드를 실행하면, print(take_guess()) 이런 출력 결과가 나올 수 있습니다. 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 5 2번째 숫자를 입력하세요: 11 범위를 벗어나는 숫자입니다. 다시 입력하세요. 2번째 숫자를 입력하세요: 7 3번째 숫자를 입력하세요: 5 중복되는 숫자입니다. 다시 입력하세요. 3번째 숫자를 입력하세요: 3 [5, 7, 3] 보시다시피 유저가 범위에서 벗어나는 숫자를 입력하면, "범위를 벗어나는 숫자입니다. 다시 입력하세요."라는 메시지가 출력되고 다시 입력을 받습니다. 마찬가지로 유저가 이미 입력한 숫자를 다시 입력하면, "중복되는 숫자입니다. 다시 입력하세요."라는 메시지가 출력되고 다시 입력을 받습니다. take_guess 함수는 결과적으로 리스트를 리턴해야 합니다. 기억해 주세요! [힌트] 1. 우리는 이 리스트에 숫자 3개를 넣으려고 하는 거니까, 리스트에 숫자가 3개 미만인 경우 반복적으로 유저 입력을 받겠습니다. while len(new_guess) < 3: while문의 수행 부분에서는 무엇을 해야 할까요? 2. while문의 수행 부분에서 해야 하는 일입니다. 유저에게 숫자를 입력받는다. 숫자가 0보다 작거나 9보다 크면, 범위에서 벗어난다는 메시지를 출력한다. 숫자가 이미 리스트 new_guess에 있으면, 중복되는 숫자라는 메시지를 출력한다. 범위에서 벗어나지도 않고 중복되지도 않으면, 숫자를 리스트 new_guess에 추가한다. 이걸 코드로 옮겨 보세요! [모범 답안] from random import randint def generate_numbers(): numbers = [] while len(numbers) < 3: num = randint(0, 9) if num not in numbers: numbers.append(num) print("0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다. ") return numbers def take_guess(): print("숫자 3개를 하나씩 차례대로 입력하세요.") new_guess = [] while len(new_guess) < 3: new_num = int(input("{}번째 숫자를 입력하세요: ".format(len(new_guess) + 1))) if new_num < 0 or new_num > 9: print(“범위를 벗어나는 숫자입니다. 다시 입력하세요.”) elif new_num in new_guess: print(“중복되는 숫자입니다. 다시 입력하세요.”) else: new_guess.append(new_num) return new_guess
숫자 야구: 점수 계산
이제 스트라이크 수와 볼 수를 알려 주는 get_score 함수를 작성할 것입니다.
get_score
이 함수는 두 개의 파라미터를 받는데요.
guesses → 유저가 뽑은 번호 3개가 담긴 리스트 solution → 컴퓨터가 뽑은 정답 번호 3개가 담긴 리스트
두 리스트를 비교해서 스트라이크 수와 볼 수를 계산하고 리턴합니다.
여기서 새로운 개념을 알려 드리겠습니다. 파이썬에서 여러 값을 리턴하고 싶으면 이렇게 할 수 있습니다.
def square_and_cube(x): square = x ** 2 cube = x ** 3 return square, cube
또한 여러 리턴 값을 한 번에 여러 변수에 저장할 수 있습니다.
아래와 같이 코드를 작성하면 square_and_cube(2)의 첫 번째 리턴 값이 변수 s에 저장되고,
두 번째 리턴 값이 변수 c에 저장됩니다.
s, c = square_and_cube(2) print(s) print(c)
[실행 결과]4 8
이런 식으로 get_score 함수는 스트라이크 수와 볼 수 둘 다 리턴하도록 해야 합니다.
예를 들어서 아래 코드를 실행하면,
s, b = get_score([2, 7, 4], [2, 4, 7]) print(s) # 스트라이크 수 출력 print(b) # 볼 수 출력
2는 숫자의 값과 위치가 모두 일치하기 때문에 스트라이크입니다.
그리고 7과 4의 경우, 숫자의 값은 일치하지만 위치가 틀렸기 때문에 볼입니다.
스트라이크 1개와 볼 2개니까, 정수 1과 2를 모두 리턴해야 하는 거죠.
그러면 리턴된 값이 각각 변수 s와 b에 지정되어, 아래처럼 출력됩니다.
1 2
[힌트]1. 스트라이크를 어떻게 판단할 수 있을지 생각해 봅시다.
guess의 인덱스 i에 있는 숫자와 solution의 인덱스 i에 있는 숫자가 동일하면 스트라이크입니다.
그러면 이렇게 작성할 수 있겠죠?
for i in range(3): if guess[i] == solution[i]: strike_count += 1
2. 볼을 어떻게 판단할 수 있을지 생각해 봅시다.
guess의 인덱스 i에 있는 숫자가 ‘볼’이기 위해서는 이 두 가지 조건을 충족해야 합니다.
이 숫자가 solution 안에도 있어야 한다.
이 숫자가 solution의 인덱스 i에 있으면 안 된다.
그러면 코드를 이렇게 작성할 수 있습니다.
for i in range(3): if guess[i] in solution and guess[i] != solution[i]: ball_count += 1
이제 스트라이크를 판단하는 코드와 볼을 판단하는 코드를 합쳐야 하는데요. 간결하고 효율적인 방식으로 합쳐 보세요!
[모범 답안]def get_score(guess, solution): strike_count = 0 ball_count = 0 for i in range(3): if guess[i] == solution[i]: strike_count += 1 elif guess[i] in solution: ball_count += 1 return strike_count, ball_count # 테스트 s_1, b_1 = get_score([2, 7, 4], [2, 4, 7]) print(s_1, b_1) s_2, b_2 = get_score([7, 2, 4], [2, 4, 7]) print(s_2, b_2) s_3, b_3 = get_score([0, 4, 7], [2, 4, 7]) print(s_3, b_3) s_4, b_4 = get_score([2, 4, 7], [2, 4, 7]) print(s_4, b_4)
숫자 야구: 합치기
앞선 과제들에서 필요한 함수들을 모두 작성했습니다.
여태 우리가 작성한 함수는 아래와 같은데요.
generate_numbers → 무작위로 정답 번호 3개를 뽑는 함수 take_guess → 유저에게 번호 3개를 입력받는 함수 get_score → 유저 번호 3개와 정답 번호 3개를 비교해서, 스트라이크와 볼 수를 계산하는 함수
이제 이 함수들을 활용해서 숫자 야구 게임을 완성합시다.
[게임 진행 예시]0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다. 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 2 2번째 숫자를 입력하세요: 2 중복되는 숫자 입니다. 다시 입력하세요. 2번째 숫자를 입력하세요: 11 범위를 벗어나는 숫자입니다. 다시 입력하세요. 2번째 숫자를 입력하세요: 3 3번째 숫자를 입력하세요: 8 1S 1B 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 8 2번째 숫자를 입력하세요: 2 3번째 숫자를 입력하세요: 0 1S 2B 숫자 3개를 하나씩 차례대로 입력하세요. 1번째 숫자를 입력하세요: 2 2번째 숫자를 입력하세요: 8 3번째 숫자를 입력하세요: 0 3S 0B 축하합니다. 3번 만에 숫자 3개의 값과 위치를 모두 맞추셨습니다.
[힌트]우리가 반복적으로 해야 하는 것들을 정리해 봅시다.
유저에게 번호 3개를 입력받는다. 스트라이크 수와 볼 수를 센다. *S *B의 형태로 스트라이크 수와 볼 수를 출력한다. 시도 횟수를 1 늘린다. 만약 스트라이크 3개를 하면 반복문을 종료한다.
[해설]1. 변수, 상수 정의
먼저 필요한 변수와 상수가 무엇인지 생각해 봅시다.
정답 리스트
시도 횟수 (0부터 시작)
이게 다입니다.
ANSWER = generate_numbers() tries = 0
2. 유저 입력 받기
우리가 반복적으로 해야 하는 것들을 정리해 봅시다.
유저에게 번호 3개를 입력받는다. 스트라이크 수와 볼 수를 센다. *S *B의 형태로 스트라이크 수와 볼 수를 출력한다. 시도 횟수를 1 늘린다. 만약 스트라이크 3개를 하면 반복문을 종료한다.
코드로 작성하면 이렇습니다.
while True: user_guess = take_guess() s, b = get_score(user_guess, ANSWER) print(“{}S {}B
“.format(s, b)) tries += 1 if s == 3: break
보시다시피 조건 부분은 그냥 True라고 써서, 조건 부분을 통과 못할 일이 없습니다.
하지만 수행 부분에서 s가 3인 경우 break를 했기 때문에, 반복문을 빠져나올 수 있습니다.
조건 부분은 s != 3로 했을 수도 있는데, 왜 굳이 이렇게 했을까요?
조건 부분을 s != 3로 하기 위해서는 s를 미리 정의해야 합니다.
그게 번거롭고 조금 지저분하다고 느껴져서, 위와 같은 방식을 택한 것입니다.
3. 축하 메시지 출력
반복문을 나와서는 그냥 축하 메시지를 출력하면 됩니다.
tries 변수를 이용해서 몇 번 만에 맞췄는지 알려 주는 것도 잊지 마세요!
print(“축하합니다. {}번 만에 세 숫자의 값과 위치를 모두 맞추셨습니다.”.format(tries))
[모범 답안]from random import randint def generate_numbers(): numbers = [] while len(numbers) < 3: new_number = randint(0, 9) if new_number not in numbers: numbers.append(new_number) return numbers def take_guess(): new_guess = [] while len(new_guess) < 3: num = int(input("{}번째 수를 입력하세요: ".format(len(new_guess) + 1))) if num < 0 or num > 9: print(“0에서 9까지의 수를 입력해 주세요!”) elif num in new_guess: print(“중복되는 숫자입니다. 다시 입력하세요.”) else: new_guess.append(num) return new_guess def get_score(guess, answer_list): strike_count = 0 ball_count = 0 for i in range(3): if guess[i] == answer_list[i]: strike_count += 1 elif guess[i] in answer_list: ball_count += 1 return strike_count, ball_count # 여기서부터 게임 시작! ANSWER = generate_numbers() tries = 0 while True: user_guess = take_guess() s, b = get_score(user_guess, ANSWER) print(“{}S {}B
“.format(s, b)) tries += 1 if s == 3: break print(“축하합니다. {}번 만에 세 숫자의 값과 위치를 모두 맞추셨습니다.”.format(tries))
Related References
PYTHON 프로그래핑
728×90
반응형
SMALL
파이썬 숫자 야구게임 만드는 방법은?!
파이썬 기초를 배우면 몇 가지 재미있는 것을 해 볼 수 있습니다. 그 중에 하나는 숫자 야구게임입니다. 숫자 야구게임은 3개의 번호를 맞추는 게임이다. 숫자 야구게임의 방식은 이렇습니다. 먼저 정답인 숫자 3개를 정합니다. 그리고 다음 정답을 맞추기 위해 숫자 3개를 부릅니다. 같은 자리에 같은 숫자를 맞추면 스트라이크, 자리는 다르지만 숫자가 같으면 볼입니다. 그래서 3 스트라이크이면, 정답이 되는 게임이지요. 위의 게임을 파이썬으로 만들 수 있습니다. 오늘은 파이썬 숫자 야구게임 만드는 방법에 대해서 알아보겠습니다.
1. 정답을 랜덤하게 정합니다
필자는 1부터 20까지 중에 3개의 숫자를 정답으로 정했습니다. 3개의 숫자는 중복이 되면 안 되기 때문에, random 모듈의 sample함수를 이용했습니다.
import random y = random.sample(range(1, 21), 3)
2. 숫자를 입력받고, 값을 비교합니다
정답을 맞출 때까지 while문을 이용해서 계속 3자리 숫자를 입력하게 합니다. 숫자는 문자열로 입력하고 콤마(,)를 기준으로, 3개의 숫자값이 있는 리스트로 변환합니다.
ans = input(‘숫자를 입력하세요.(구분자:,) ‘) ans = ans.split(‘,’) ans = [int(a) for a in ans]
리스트가 동일하면 ‘3스트라이크’로 게임을 종료합니다.
if y == ans: print(‘3 스트파이크, 0 볼’) print(‘정답:’, y) is_right = 1
리스트가 같지 않으면, 값을 비교해서 스트라이크와 볼의 갯수를 구합니다. 입력한 숫자가 정답에 있는지 for문을 이용해서 확인합니다. 이 때 숫자가 있는지는 in을 이용해서 확인해야, 숫자가 없어도 에러가 나지 않습니다. 숫자가 있다면 자리수가 같은지 확인해서, 같으면 스트라이크 다르면 볼로 계산합니다.
for a in ans: if a in y: if y.index(a) == ans.index(a): s = s + 1 elif y.index(a) != ans.index(a): b = b + 1
전체 코드는 아래와 같습니다.
import random y = random.sample(range(1, 21), 3) is_right = 0 while is_right==0: ans = input(‘숫자를 입력하세요.(구분자:,) ‘) ans = ans.split(‘,’) ans = [int(a) for a in ans] print(‘입력한 숫자:’, ans) s = 0;b = 0 if y == ans: print(‘3 스트파이크, 0 볼’) print(‘정답:’, y) is_right = 1 else: for a in ans: if a in y: if y.index(a) == ans.index(a): s = s + 1 elif y.index(a) != ans.index(a): b = b + 1 print(f'{s} 스트라이크, {b} 볼’)
오늘은 이렇게 파이썬 숫자 야구게임 만드는 방법에 대해서 알아보았습니다. 파이썬 리스트, 조건문, 반복문을 복습해 볼 수 있는 좋은 기회였습니다.
간단한 파이썬(Python)언어 프로젝트 숫자 야구 게임 만들기 및 방법
코딩 간단한 파이썬(Python)언어 프로젝트 숫자 야구 게임 만들기 및 방법 AITON ・ URL 복사 본문 기타 기능 공유하기 신고하기 안녕하세요 오늘은 숫자야구 프로그램을 가지고 간단한 프로젝트 형식으로 코딩하는 방법을 소개하려 합니다. 숫자 야구를 아시나요? 예전에 무한도전 숫자야구 게임을 하면서 많은 분들에게 알려졌었죠. 무한도전 숫자 야구 숫자 야구 규칙(룰) 컴퓨터가 0 ~ 9 사이의 서로 다른 숫자 3개를 맞추는 게임이에요. 숫자의 값과 위치를 모두 맞추면 스트라이크(S) 숫자의 값은 맞지만 위치가 다르면 볼(B) 예를 들어, 컴퓨터가 뽑은 숫자가 1, 2, 3이라고 가정합시다. 사용자가 1, 5, 9를 입력하면, 1S(1의 값과 위치가 동일) 1B(3의 값만 일치)입니다. 3S가 나오면 끝나는 게임이죠. 숫자 야구 코딩 진행 순서 첫째, 컴퓨터가 0과 9사이의 서로 다른 숫자 3개를 랜덤으로 고릅니다. 둘째, 사용자가 생각하는 서로 다른 숫자 3개를 입력받습니다. 셋째, 사용자의 숫자와 컴퓨터의 숫자가 일치하는지 판별하고 알려줍니다. *S *B 로 출력 넷째, 3S가 된 경우 *번 만에 숫자 3개의 값과 위치를 맞추었는지 출력하고 게임을 종료합니다. 확인이 되셨다면 함수부터 차근차근 만들어볼게요. 첫째, 정답 숫자 뽑기 숫자야구 알고리즘 정답 숫자를 뽑으려면 random 모듈을 가져와서 사용해야 하고, 0 ~ 9 사이에 서로 다른 정수 세 가지를 뽑아서 숫자열에 저장해야 합니다. from random import randint #랜덤 모듈에 randint만 사용 def generate_numbers(): # 함수 선언 numbers = [] #세 가지 정수를 담을 숫자열 선언 i = 0 new_number = 0 while i < 3: new_number = randint(0, 9) # 0 ~ 9 사이의 랜덤한 수를 뽑는다. if new_number not in numbers: # 수가 문자열에 겹치지 않으면 numbers.append(new_number) # 숫자열 오른쪽에 추가한다. i += 1 print("0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다. ") return numbers # 만들어진 숫자열을 리턴합니다. 둘째, 숫자 예측 사용자가 예측하는 숫자를 입력받습니다. 이때 input 함수를 이용하여 0 ~ 9 사이에 서로 다른 정수 3개를 입력받으면 되겠죠? 주의할 점은 범위와 서로 다른 정수를 입력받지 못하면 입력할 때까지 돌아가서 진행을 해야 한다는 점입니다. def take_guess(): print("숫자 3개를 하나씩 차례대로 입력하세요.") i = 0 new_guess = [] # 입력받을 숫자열 선언 while i < 3: gue_number = int(input("{}번째 숫자를 입력하세요: ".format(i + 1))) #사용자에게 입력받음 if gue_number > 9 and gue_number < 0: # 범위안에 숫자를 입력 받기 위한 IF문 print("범위를 벗어나는 숫자입니다. 다시 입력하세요.") continue if gue_number in new_guess: # 중복된 정수인지 판별 print("중복되는 숫자입니다. 다시 입력하세요. ") else: new_guess.append(gue_number) # 조건에 맞는 정수를 저장한다. i += 1 return new_guess 셋째, 점수 판별 입력받은 수가 스트라이크인지 볼인지 판별해 주는 함수를 만들어야 합니다. 위치와 값이 같을 때 스트라이크 판별이 되어야 하고, 위치는 다르지만 값이 같을 때 볼이 되어야 합니다. def get_score(guess, solution): # 사용자가 입력한 숫자열, 정답 숫자열을 받아서 strike_count = 0 ball_count = 0 i = 0 while i < len(guess): if guess[i] == solution[i]: # 위치와 값이 같을 때 strike_count += 1 # 스트라이크 카운팅 i += 1 elif guess[i] in solution: # 값은 있지만 위치가 다를 때 ball_count += 1 # 볼 카운팅 i += 1 else: # 둘다 다를 때 i += 1 return strike_count, ball_count # 스트라이크 개수, 볼 개수 리턴 전체 코드(알고리즘) from random import randint def generate_numbers(): numbers = [] i = 0 new_number = 0 while i < 3: new_number = randint(0, 9) if new_number not in numbers: numbers.append(new_number) i += 1 print("0과 9 사이의 서로 다른 숫자 3개를 랜덤한 순서로 뽑았습니다. ") return numbers def take_guess(): print("숫자 3개를 하나씩 차례대로 입력하세요.") i = 0 new_guess = [] while i < 3: gue_number = int(input("{}번째 숫자를 입력하세요: ".format(i + 1))) if gue_number > 9: print(“범위를 벗어나는 숫자입니다. 다시 입력하세요.”) continue if gue_number in new_guess: print(“중복되는 숫자입니다. 다시 입력하세요. “) else: new_guess.append(gue_number) i += 1 return new_guess def get_score(guess, solution): strike_count = 0 ball_count = 0 i = 0 while i < len(guess): if guess[i] == solution[i]: strike_count += 1 i += 1 elif guess[i] in solution: ball_count += 1 i += 1 else: i += 1 return strike_count, ball_count # 여기서부터 게임 시작! ANSWER = generate_numbers() tries = 0 while 1: GUESS = take_guess() strike, ball = get_score(GUESS, ANSWER) print("{}S {}B ".format(strike, ball)) if strike == 3: tries += 1 break else: tries += 1 print("축하합니다. {}번 만에 숫자 3개의 값과 위치를 모두 맞추셨습니다.".format(tries)) 오늘은 여기까지입니다. 숫자 야구 게임 파이썬 제작 및 방법 파이썬 공부 중에 간단하고 재밌는 예제를 가지고 프로젝트처럼 진행을 해보았습니다. 다음에도 더 좋은 코드로 찾아뵙겠습니다. 인쇄
So you have finished reading the 파이썬 숫자 야구 topic article, if you find this article useful, please share it. Thank you very much. See more: 숫자야구 필승법, 숫자야구 맞추는 프로그램, 야구게임 코딩, 숫자야구 4자리 알고리즘, 숫자야구 계산기, 숫자야구 같은 게임