Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2019, 15:49   #1
AZILKHAN
Новичок
Джуниор
 
Регистрация: 14.04.2019
Сообщений: 4
По умолчанию Игра Лев и Гиена можно и Cow and Bulls

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

Компьютер случайным образом генерирует 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.

My code is :
Код:
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")
Правильно ли ?
AZILKHAN вне форума Ответить с цитированием
Старый 22.11.2019, 16:10   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вполне неплохо.
но есть грубая ошибка.
см. правила
Цитата:
Каждый из игроков задумывает и записывает тайное 4-значное число с неповторяющимися цифрами.
В вашем коде цифры повторяются. Так быть не должно.

дальше.
при вводе попытки (quess) нужно тоже отметать ввод с повторяющимися цифрами.
Цитата:
Попытка — это 4-значное число с неповторяющимися цифрами, сообщаемое противнику.
ну и последнее. Ну это уже мелочь.
При выводе результата не указано за сколько попыток:

Цитата:
Сообщение от AZILKHAN Посмотреть сообщение
Congratulations! You guessed the number in 5 attempts.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скажите в С++ за сколько реально можно научится разбираться? Можно ли за полгода? Silikon Общие вопросы по программированию, компьютерный форум 2 07.11.2018 16:33
Можно ли установить пакет 'directx app' от Visual Studio, на win 7. Или это можно сделать только на win 8 win 10. vik7878 Софт 1 07.12.2016 10:47
Игра на паскале,что можно добавить????? MaMBaPascal Помощь студентам 0 20.04.2013 10:33
можно ли писать php код внутри javascript инструкции if? если можно, то как это сделать? Ubihinon JavaScript, Ajax 2 20.02.2012 08:40
можно ли писать php код внутри javascript инструкции if? если можно, то как это сделать? Ubihinon PHP 2 18.02.2012 17:45