Задать вопрос
@NoobPython

Как сделать повторение цикла random в связке с while и выполнение одного из двух сценариев?

Здравствуйте! Я только начал обучение Python и у меня достаточно много ошибок, которые, к сожалению, не знаю как исправить, поэтому ищу помощи у более опытных людей. Спасибо за понимание!

Задача №1:
Напишите программу, которая бы «Подбрасывала» условную монету 100 раз и сообщала, сколько раз выпал орел, а сколько - решка.

Пример моего кода:
print("Программа подбросит монетку 100 раз и покажет, сколько раз выпадет Орел или Решка\n")
import random
result = random.randint (1, 2)
tries = 0
damage = 1
orel = 0
reshka = 0
while result and tries !=100:
    tries += damage
    print("Осталось бросков: ", tries)
if result == 1:
    reshka += 1
else:   
    orel += 1
print("Орлов выпало: ", orel, "Решек выпало: ", reshka)
input("\nНажмите Enter, чтобы выйти.")

Код считает до 100, но записывает только 1 результат из рандома.

Задача №2:
Измените программу «Отгадай число» таким образом, чтобы у игрока было ограниченное количество попыток.
Если игрок не укладывается в заданное чисnо (и проигрывает), то программа должна выводить сколь
возможно суровый текст.

Пример моего кода:
import random
number = random.randint (1, 100)
guess = int(input("Ваш вариант: "))
tries = 4
while guess != number and tries !=0:
    #Повторное выполнение завершится, когда пользователь угадает число или израсходует все попытки
    if guess > number:
        print("Меньше...", "Осталось попыток: ", tries)
    else:
        print("Больше...", "Осталось попыток: ", tries)
    guess = int(input("Ваш вариант: "))
    tries -= 1
print("\nТы не справился с поставленной задачей, проваливай!")
input("Нажмите Enter, чтобы выйти.")

По условию задача выполнена правильно, но мне хотелось бы узнать, как вывести для пользователя поздравление, если он все-таки отгадал число, т.е. второй сценарий развития события, перепробовал кучу вариантов, с заменами последнего print на elif и вводом сценария туда.

Задача №3:
А вот задача посложнее. Напишите на псевдокоде алгоритм игры, в которой случайное число от 1 до 100 загадывает
человек, а отгадывает компьютер. Прежде чем приступать к решению, задумайтесь над тем, какой
должна быть оптимальная стратегия опадывания. Если алгоритм на псевдокоде будет удачным, попробуйте
реализовать игру на Pythoп.

Пример моего кода:
#1. Человек загадывает число
#2. Рандомайзер
#3. Рандомайзер повторяет цикл до тех пор, пока не угадает введеное число
#4. Когда рандомайзер угадывает число, пользователю выскакивает унизительное сообщение.

import random
number = random.randint (1, 2)
guess = int(input("Введите число от 1 до 100: "))
tries = 1
while number != guess:
    if number > guess:
        print("Компьютер взял больше, чем нужно было: ", number)
    else:
        print("Компьютер взял меньше, чем нужно было: ", number)
    tries += 1

print("Компьютер отгадал загаданное число за ", tries, "попыток.")
input("Нажмите Enter, чтобы покинуть игру.")

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

Ещё раз благодарю Вас, что не прошли мимо!
  • Вопрос задан
  • 7014 просмотров
Подписаться 1 Оценить 3 комментария
Ответ пользователя nurakhov К ответам на вопрос (6)
@nurakhov
Задача 1. Действительно много лишних переменных.
import random
res = 0
tries = 0
while tries != 100:
    if random.randint (1, 2) == 1:
        res += 1
    tries += 1
    print("Осталось бросков: ", 100 - tries)
    
print("Орлов выпало: ", 100 - res, "Решек выпало: ", res)


Задача 2.
Загадываю число.
Сообщаю число попыток.
Пока попытки есть, угадывай.
    Если угадал, то сообщаю тебе, что ты молодец
    Если твой вариант больше моего числа, то это я тебе и говорю
    Иначе, говорю, что меньше
    Число попыток становится меньше на единицу
Если попытки закончились, то сообщаю, что ты лузер!


Задача 3.
import random
number = int(input("Введите число от 1 до 100: "))

x = 1
y = 100
guess = random.randint (x, y)
tries = 1

if number == guess:
    print('С первой попытки!')
else:
    while guess != number:
        if number > guess:
            print("Загаданное число больше: ", guess)
            x = guess
            guess = random.randint(x, y)
            tries += 1
        elif number < guess:
            print("Загаданное число меньше: ", guess)
            y = guess
            guess = random.randint(x, y)
            tries += 1
    print (number)
    print ('В яблочко, с', tries, 'попытки')
Ответ написан
Комментировать