파이썬으로 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회 시도했습니다~

결론



상당히 강해진 것 같습니다. 기뻐요"(-""-)"
솔직히 여기에서 더욱 강하게 만드는 것은 단번에 난이도가 오를 것 같습니다. 구누누누누
코멘트 기다리고 있습니다.
끝까지 읽어 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기