파이썬으로 Numer0n (누메론) 만들기 part3
<소개>
파이썬으로 Numer0n (누메론) 만들기 part2 의 계속입니다.
이번에 만든 것
이번에는 ➀1도 예상한 숫자는 이후 예상하지 않는다. ➁eat와 bite를 더하여 3일 때, 이후 그 숫자만 사용한다. 두 가지 기능을 추가했습니다.
코드 전체
import random
available_number = [0,1,2,3,4,5,6,7,8,9]
while True:
my_number = input("0~9の数字を使って3桁の数字を作ってください(重複なし)")
if my_number.isdigit() and len(set(my_number)) == 3:
break
used_number = []
times = 0
enemy_number = None
while enemy_number != my_number:
times+=1
while True:
selected_number = random.sample(available_number,3)
enemy_number = "".join(map(str,selected_number))
if used_number.count(enemy_number) != 0:
continue
break
eat = sum(my_number == enemy_number for my_number, enemy_number in zip(my_number, enemy_number))
bite = sum(enemy_number in my_number for enemy_number in enemy_number) - eat
if eat == 0 and bite == 0:
available_number.remove(selected_number[0])
available_number.remove(selected_number[1])
available_number.remove(selected_number[2])
if eat + bite == 3:
available_number = selected_number
used_number.append(enemy_number)
print("コンピューターが予想した番号:", enemy_number)
print(f"{times}回目: {eat}EAT {bite}BITE")
print("----------------------------------------")
print("数字を当てました!!!褒めてください!!!")
print(f"{times}回目で当てられました。")
보충
그 1 1도 사용한 숫자의 격납
・used_number(8행째)에 1번 예상한 숫자를 격납합니다.
enemy_number가 used_number와 겹치지 않는지 count를 사용하여 조사하고 있습니다. (16행)
그 2 eat + bite = 3 일 때의 대응
・이 조건을 만족하는 것은 3eat 0bite, 1eat 2bite, 0eat 3bite일 때입니다. (1eat 2bite, 2eat 1bite 등은 이번 게임에서는 성립되지 않습니다) 또, 3eat 0bite는 정답의 때이므로, 1eat 2bite, 0eat 3bite가 나왔을 때 이후 그 3개의 숫자를 사용하도록 합니다. 그 1에서 말했듯이 이번에는 같은 숫자를 예상하지 않기 때문에 이 조건이 성립되면 적어도 5회의 예상으로 숫자를 맞출 수 있다는 것입니다. 조건을 만족할 때 available_number = selected_number(26행)로 available_number를 업데이트합니다.
고찰
전회와 같이 200회 시도했습니다~
결론
상당히 강해진 것 같습니다. 기뻐요"(-""-)"
솔직히 여기에서 더욱 강하게 만드는 것은 단번에 난이도가 오를 것 같습니다. 구누누누누
코멘트 기다리고 있습니다.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(파이썬으로 Numer0n (누메론) 만들기 part3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kneecat/items/892397e02009a7b2d18a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 ➀1도 예상한 숫자는 이후 예상하지 않는다. ➁eat와 bite를 더하여 3일 때, 이후 그 숫자만 사용한다. 두 가지 기능을 추가했습니다.
코드 전체
import random
available_number = [0,1,2,3,4,5,6,7,8,9]
while True:
my_number = input("0~9の数字を使って3桁の数字を作ってください(重複なし)")
if my_number.isdigit() and len(set(my_number)) == 3:
break
used_number = []
times = 0
enemy_number = None
while enemy_number != my_number:
times+=1
while True:
selected_number = random.sample(available_number,3)
enemy_number = "".join(map(str,selected_number))
if used_number.count(enemy_number) != 0:
continue
break
eat = sum(my_number == enemy_number for my_number, enemy_number in zip(my_number, enemy_number))
bite = sum(enemy_number in my_number for enemy_number in enemy_number) - eat
if eat == 0 and bite == 0:
available_number.remove(selected_number[0])
available_number.remove(selected_number[1])
available_number.remove(selected_number[2])
if eat + bite == 3:
available_number = selected_number
used_number.append(enemy_number)
print("コンピューターが予想した番号:", enemy_number)
print(f"{times}回目: {eat}EAT {bite}BITE")
print("----------------------------------------")
print("数字を当てました!!!褒めてください!!!")
print(f"{times}回目で当てられました。")
보충
그 1 1도 사용한 숫자의 격납
・used_number(8행째)에 1번 예상한 숫자를 격납합니다.
enemy_number가 used_number와 겹치지 않는지 count를 사용하여 조사하고 있습니다. (16행)
그 2 eat + bite = 3 일 때의 대응
・이 조건을 만족하는 것은 3eat 0bite, 1eat 2bite, 0eat 3bite일 때입니다. (1eat 2bite, 2eat 1bite 등은 이번 게임에서는 성립되지 않습니다) 또, 3eat 0bite는 정답의 때이므로, 1eat 2bite, 0eat 3bite가 나왔을 때 이후 그 3개의 숫자를 사용하도록 합니다. 그 1에서 말했듯이 이번에는 같은 숫자를 예상하지 않기 때문에 이 조건이 성립되면 적어도 5회의 예상으로 숫자를 맞출 수 있다는 것입니다. 조건을 만족할 때 available_number = selected_number(26행)로 available_number를 업데이트합니다.
고찰
전회와 같이 200회 시도했습니다~
결론
상당히 강해진 것 같습니다. 기뻐요"(-""-)"
솔직히 여기에서 더욱 강하게 만드는 것은 단번에 난이도가 오를 것 같습니다. 구누누누누
코멘트 기다리고 있습니다.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(파이썬으로 Numer0n (누메론) 만들기 part3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kneecat/items/892397e02009a7b2d18a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import random
available_number = [0,1,2,3,4,5,6,7,8,9]
while True:
my_number = input("0~9の数字を使って3桁の数字を作ってください(重複なし)")
if my_number.isdigit() and len(set(my_number)) == 3:
break
used_number = []
times = 0
enemy_number = None
while enemy_number != my_number:
times+=1
while True:
selected_number = random.sample(available_number,3)
enemy_number = "".join(map(str,selected_number))
if used_number.count(enemy_number) != 0:
continue
break
eat = sum(my_number == enemy_number for my_number, enemy_number in zip(my_number, enemy_number))
bite = sum(enemy_number in my_number for enemy_number in enemy_number) - eat
if eat == 0 and bite == 0:
available_number.remove(selected_number[0])
available_number.remove(selected_number[1])
available_number.remove(selected_number[2])
if eat + bite == 3:
available_number = selected_number
used_number.append(enemy_number)
print("コンピューターが予想した番号:", enemy_number)
print(f"{times}回目: {eat}EAT {bite}BITE")
print("----------------------------------------")
print("数字を当てました!!!褒めてください!!!")
print(f"{times}回目で当てられました。")
그 1 1도 사용한 숫자의 격납
・used_number(8행째)에 1번 예상한 숫자를 격납합니다.
enemy_number가 used_number와 겹치지 않는지 count를 사용하여 조사하고 있습니다. (16행)
그 2 eat + bite = 3 일 때의 대응
・이 조건을 만족하는 것은 3eat 0bite, 1eat 2bite, 0eat 3bite일 때입니다. (1eat 2bite, 2eat 1bite 등은 이번 게임에서는 성립되지 않습니다) 또, 3eat 0bite는 정답의 때이므로, 1eat 2bite, 0eat 3bite가 나왔을 때 이후 그 3개의 숫자를 사용하도록 합니다. 그 1에서 말했듯이 이번에는 같은 숫자를 예상하지 않기 때문에 이 조건이 성립되면 적어도 5회의 예상으로 숫자를 맞출 수 있다는 것입니다. 조건을 만족할 때 available_number = selected_number(26행)로 available_number를 업데이트합니다.
고찰
전회와 같이 200회 시도했습니다~
결론
상당히 강해진 것 같습니다. 기뻐요"(-""-)"
솔직히 여기에서 더욱 강하게 만드는 것은 단번에 난이도가 오를 것 같습니다. 구누누누누
코멘트 기다리고 있습니다.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(파이썬으로 Numer0n (누메론) 만들기 part3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kneecat/items/892397e02009a7b2d18a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
상당히 강해진 것 같습니다. 기뻐요"(-""-)"
솔직히 여기에서 더욱 강하게 만드는 것은 단번에 난이도가 오를 것 같습니다. 구누누누누
코멘트 기다리고 있습니다.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(파이썬으로 Numer0n (누메론) 만들기 part3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kneecat/items/892397e02009a7b2d18a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)