Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 21, 2019 18:47:25

Vadimqa
Зарегистрирован: 2019-11-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра "Лев и гиена"

Всем привет !
Задача была такая у нас )
Создайте программу, которая будет играть в игру “Лев и гиена” с пользователем.

Игра работает следующим образом:

Компьютер случайным образом генерирует 4-значное число. Попросите пользователя угадать 4-значное число. Для каждой цифры, которую пользователь угадал правильно в правильном месте, у них есть “лев”. За каждую цифру, которую пользователь угадал правильно, в неправильном месте стоит “гиена”.“Каждый раз, когда пользователь делает предположение, скажите ему, сколько” коров” и “быков” у них есть. Как только пользователь угадает правильный номер, игра окончена.

Следите за количеством догадок, которые пользователь делает на протяжении всей игры, и сообщите пользователю в конце.

Допустим, число, сгенерированное компьютером, равно 1038. Пример взаимодействия может выглядеть так:


Примеер : Welcome to the Cows and Bulls Game!
Enter a number:
>>> 1234
2 cows, 0 bulls
>>> 1256
1 cow, 1 bull

>>> 1038
Congratulations! You guessed the number in 5 attempts.

 import random
  
def num_checker(guess_num,answer):
    guess_num=list(str(guess_num))
    ans=list(str(answer))
    cow=0
    bull=0
    for a in range(0,4):
        if guess_num[a]==ans[a]:
            bull+=1
            ans[a]=10
            guess_num[a]=20
  
    for a in range(0,4):
        for b in range (0,4):
            if guess_num[a]==ans[b]:
                cow+=1
                ans[b]=30
                break
  
    final=[bull,cow]
    return final
  
#..................................................
ans=random.randrange(1000,10000)
print("this is the program to gues a four digit number")
  
while True:
    print("just for reference answer is:",ans)
    num_typed=int(input("please guess a four digit the number?\n "))
    reply=num_checker(num_typed,ans)
    if reply==[4,0]:
        print("correct")
        print(reply[0],"bull",reply[1],"cows and the ans is",ans)
        break
    else:
        print(reply[0],"bulls",reply[1],"cows")
Мой первый вариант

 import random
   
def num_checker(guess, answer):
    bulls = sum(guess[i] == answer[i] for i in range(len(answer)))
    cows = sum(guess[i] in answer and guess[i] != answer[i] for i in range(len(answer)))
    return bulls, cows
 
def get_valid_random(size):
    digits = ""
    while len(digits) < size:
        digit = random.choice("0123456789")
        if not digit in digits:
            digits += digit
    return digits
         
answer = get_valid_random(4)
 
while True:
    guess = input("Enter number with four different digits: ")
    bulls, cows = num_checker(guess, answer)
    if bulls == 4:
        print("Correct")
        break
    else:
        print(f"You got {bulls} bulls and {cows} cows")
Второй вариант плиз пацаны который из них правильнее ? Если есть ошибки то можете исправить ))

Заранее спасибо

Отредактировано Vadimqa (Ноя. 21, 2019 18:52:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version