Измените программу отгадай число таким образом чтобы у игрока было ограниченное количество попыток

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

Напишите программу, которая бы «Подбрасывала» условную монету 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 результат из рандома.

Измените программу «Отгадай число» таким образом, чтобы у игрока было ограниченное количество попыток.

Задача 3 Отгадай число за N попыток


Если игрок не укладывается в заданное чис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 и вводом сценария туда.

А вот задача посложнее. Напишите на псевдокоде алгоритм игры, в которой случайное число от 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 раз пишет одно и то же рандомное число, сгенерированное вначале.

Ещё раз благодарю Вас, что не прошли мимо!

  • Вопрос задан более трёх лет назад
  • 5694 просмотра

3 комментария

Оценить 3 комментария

import random tries = 0 orel = 0 reshka = 0 while tries < 100: tries += 1 r = random.randint(0,1) if r == 0: orel += 1 else: reshka +=1 print(«Orel: «, orel) print(«Reshka «, reshka)

Dmitry Tallmange: Благодарю, из Вашего решения понял, в чем заключалась моя ошибка.
Pavel Denisov: Я только учусь и ещё не дошел до применения квадратных скобок, for и in. Спасибо!

Pavel Denisov:
Например так, читать, конечно, сложно, но «зато» одна строчка.

import random from collections import Counter print(«Орел: . Решка: «.format(**Counter([random.choice((‘орел’, ‘решка’)) for x in range(1,101)])))
Решения вопроса 0
Ответы на вопрос 6
Первая задача:
import random print(«Программа подбросит монетку 100 раз и покажет, сколько раз выпадет Орел или Решкаn») tries = 0 damage = 1 orel = 0 reshka = 0 while tries !=100: tries += damage result = random.randint (1, 2) print(«Осталось бросков: «, (100-tries)) if result == 1: reshka += 1 else: orel += 1 print(«Орлов выпало: «, orel, «Решек выпало: «, reshka) input(«nНажмите Enter, чтобы выйти.»)
Ответ написан более трёх лет назад
Нравится 2 1 комментарий

Читайте также:
Как пользоваться программой фэмили линк на телефоне

BBmike

здесь вопрос не в решении данной конкретной задачи, а в методике обучения

воспользуйся простым способом визуального пошагового исполнения кода. В принципе, это тот же дебаггер, только простой и понятный.
Там-то ты сразу просечешь, какая инструкция никогда не выполняется.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

Во второй задаче вроде бы нашел решение, как вывести 2 сценария, но в ошибочном все равно выводит «Вы отгадали загаданное число!», что я сделал не так и как будет правильно?

import random number = random.randrange (100) + 1 guess = int(input(«Ваш вариант: «)) tries = 5 while guess != number and tries != 0: tries -= 1 if guess > number: print(«Меньше. «, «Осталось попыток: «, tries) if guess < number: print(«Больше. «, «Осталось попыток: «, tries) elif tries == 0: print(«Вы не справились, покиньте пожалуйста игру!») break guess = int(input(«Ваш вариант: «)) print(«Вы отгадали загаданное число!») input(«Нажмите Enter, чтобы выйти.»)

Нашел решение задачи №3:

import random guess = int(input(«Введите число от 1 до 100: «)) tries = 0 while guess < 100: tries += 1 number = random.randint (1, 100) if number >guess: print(«Компьютер взял больше, чем нужно было: «, number) elif number < guess: print(«Компьютер взял меньше, чем нужно было: «, number) elif number == guess: print(«Компьютер отгадал число «, number, «за «, tries, «попытку(-ок).») break input(«Нажмите Enter, чтобы покинуть игру.»)
Ответ написан более трёх лет назад
Нравится 1 3 комментария
Почитай про конструкцию while else в питоне или подожди три часика.

Чтобы компьютер отгадал быстрее, я бы его вариант запоминал и вставлял бы в random.randint (1, 100) вместо 1 и 100.

Изи, по второй задачке

print ( «Добро пожаловать в игру»)

choice=input(«Ты должен выбрать (Орел или Решка): «)

if num==1:
result=»Выпадает Орел»
elif num==2:
result=»Выпадает Решка»

if choice==result:
print(«Как тебе удалось? Ты выиграл, хороший бросок: «, result)
else:
print(«Ты проиграл, сегодня удача на моей стороне: «, result)

print(«Надеюсь ты хорошо подумаешь в следующий раз, прежде чем играть с машиной)»)

Задача 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)
Загадываю число. Сообщаю число попыток. Пока попытки есть, угадывай.

Если угадал, то сообщаю тебе, что ты молодец Если твой вариант больше моего числа, то это я тебе и говорю Иначе, говорю, что меньше Число попыток становится меньше на единицу Если попытки закончились, то сообщаю, что ты лузер!
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, ‘попытки’)
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Vaindante

Решение 1 задачи в 2 строчки:

from random import randint tmp = sum([randint(0, 1) for _ in range(100)]) print(‘Число решек %s, число орлов %s’ % (tmp, 100 — tmp))
Ответ написан более трёх лет назад
В комментах есть в одну.

Товарищи, огромное вам спасибо за примеры кода первой задачи. Занимаюсь по учебнику Доусона, и честно, он мне слегка уже не нравится (а ведь я только начал) в частности из за таковых подстав с задачами (я конечно могу предположить, что г-н Доусон хочет, чтобы мы обменивались опытом, и знаниями, но вот, что делать когда не у кого спросить совета?) примеры/ приемы которых не рассматривались в главе. У меня весь затык уперся в функцию randint, когда я захотел, чтобы монета имела не только две стороны — 0 и 1 (True False), а три или больше (1, 2, 3. ) по сути кубик. И вот тут я завис. Скидываю свой пример, он в шутливой форме, но так веселее, хобби, что поделать.
Честно я отбитый гуманитарий, так что прошу серьезно выкладку не воспринимать, просто как есть. Еще вопрос там по тексту кода изначально ставил:
flip = 0
while flip != 100:
и далее писал
flip += 1
но получался бесконечный цикл, пробовал прерывать цикл, но когда реверсировал, в коде ниже правильно, код заработал. Честно, не понял почему получился бесконечный цикл, без вычислений. Если у кого будет желание просветите, я могу предположить, что это в области True False, но лучше когда понимающий человек скажет.

Читайте также:
Компьютер выключается сам по себе при установке программ

#импорт модулей import random #завязка/ сюжет print(«ttГопники и начинающий программист») print(«nНаш молодой программист гулял вечером по ночной Москве и наткнулся на ребят из низкосоциальных слоев населения.») print(«Ребята ему предложили сыграть и интереснейшую игру, подбросить монетку сто раз и в зависимости от того какая из сторон монетки выпадет большее число раз будет определена судьба нашего начинающего программиста») #инициатор запуска функции print(«Скажи ‘Бросаю’, чтобы бросить монетку 100 раз и узнать результат.») response = «» while response != «Бросаю»: response = input(«Решайся: «) print(«Как два пальца») #исходные значения avers = 0 revers = 0 flip = 100 while flip != 0: #бросок монеты one_flip = random.randint(1, 2) print(«Если 1- аверс, если 2- реверс») print(«tМонета выпала: «) #трактовка значений броска if one_flip == 1: print(«tttОрел») if one_flip == 2: print(«tttРешка») # -1 от иходного значения flip, мониторинг количества бросков flip -= 1 print(«Осталось бросков: «, (0 + flip)) #интерпритация/ отождествление (хз как правильно) значений броска монеты и их суммирование с исходными (в первом броске и последующими в дальнейших) if one_flip == 1: avers += 1 print(«Орел: «,avers) if one_flip == 2: revers += 1 print(«Решка: «,revers) #вывод значений итого print(«Монета выпала орлом: «, avers) print(«Монета выпала решкой: «, revers) #отсебятина if avers == 50: print(«Гопник: -Забухаем ботаник? Да конечно, прости, что спросил, конечно забухаем.») elif avers = 51: print(«Гопник: -Ой, это вы господин Профессор? Ей богу не признали. А мы тут как раз с пацанами решили вам денежку занести») #хз зачем эта фраза (честно знаю, но смысла в ней пока не вижу, на начальных этапах) input(«nnНажмите Enter, чтобы выйти»)

Вариант решения задачи №3.
У меня получилось вот так (см. ниже), вроде вопрос и ответ бьются. Больше, меньше не стал добавлять, а то это уже ИскИн будет, немного юмора про восставшие машин 😉 . Мне понравился вариант решения от пользователя nurakhov

import random print(«tttКомпьютерная номеромолотилка») num_x = int(input(«Введите число от 1 до 100 которое компьютер должен отгадать: «)) tries = 4 guess = «» while guess != num_x and tries != 0: guess = random.randint(1, 100) tries -= 1 print(«Число, высказанное компьютером: «, guess) if guess == num_x: print(«Компьютер Win») if tries == 0: print(«Игрок Win») print(«Осталось попыток: «, tries) input(«nnНажмите Enter, чтобы выйти»)

Источник: qna.habr.com

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Помогите найти ошибку(Игра отгадай число)

#1 Дек. 4, 2012 17:13:42

Помогите найти ошибку(Игра отгадай число)

Помогите найти ошибку
Не могу сделать чтобы у игрока было ограниченное кол-во попыток.

import random print(«Игра отгадай число») print(«У вас три попытки») number = int(input(«Введите число: «)) x = random.randint(1, 10) time = 1 while number != x: if number x: print(«Больше») elif number > x: print(«Меньше») elif time == 3: print(«Конец») break number = int(input(«Введите число: «)) time += 1 print(«Да вы отгдали это было число», x) input(«Enter»)

Источник: python.su

Python: Задачи и решения (Глава 3. Ветвление, циклы с оператором while и псевдокод. Игра «Отгадай число»).

Продолжаем изучать программирование. После третьей главы в книге: Майкл Доусон «Программируем на Python», 2014 (Michael Dawson «Python Programming for the Absolute Beginner», 3rd Edition), где я изучила особенности работы с текстом в языке программирования Python, предложены задания. Давайте выполнять их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.

Программа «Угадай число» от Игроглаза, не подсматривая решение:

import random guess = «» guess_num = 0 number = int(random.randint(1,100)) print («I made a guess: number 1-100. Can you guess it?n») while guess != number: guess = int(input(«Enter your proposal: n»)) if guess > number: print(«No, it’s smaller..n») elif guess < number: print(«No, it’s bigger..n») else: print(«Finally, you got it!n») guess_num += 1 print («Number was «, number, «. You guessed it with», guess_num, «times. Good job!») input()

Читайте также:
Структура компьютерной обучающей программы

Кстати, в книге в этой программе ошибка. Вне цикла там стоит tries = 1; тогда как оно должно начинаться с нуля.

1) Напишите программу — симулятор пирожка с «сюрпризом», — которая бы при запуске отображала один из пяти различных «Сюрпризов», выбранный случайным образом.

import random surpriz_1=’Unicorn’ surpriz_2=’Medal’ surpriz_3=’Funny cat’ surpriz_4=’Palm tree’ surpriz_5=’Dino’ rezult=random.randint(1,5) if rezult==1: print(surpriz_1) elif rezult==2: print(surpriz_2) elif rezult==3: print(surpriz_3) elif rezult==4: print(surpriz_4) else: print(surpriz_5)

import random num = random.randint(1,5) if num == 1: pie = «селедкой» if num == 2: pie = «мясом» if num == 3: pie = «курицей» if num == 4: pie = «сеном» if num == 5: pie = «опилками» print («Держи пирожок с», pie) input()

2) Напишите программу, которая бы «Подбрасывала» условную монету 100 раз и сообщала, сколько раз выпал орел, а сколько — решка.

import random orel_1=’orel’ reshka_2=’reshka’ orel_sum=0 reshka_sum=0 count=0 while count!=100: count+=1 result=random.randint(1,2) if result==1: orel_sum+=1 else: reshka_sum+=1 print(‘Орел:’,orel_sum,’Решка:’,reshka_sum)

import random n = 0 counter = 0 while n < 100: flip = random.randrange(2) if flip == 0: coin = «Орёл» counter += 1 else: coin = «Решка» print («Бросаем монетку..», coin) n += 1 print («Орёл выпал», counter, «раз; решка», 100-counter, «раз») input()

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

import random print(‘Я загадала целое число от 0 до 100. Угадай с 5 попыток!’) chislo=random.randrange(101) popitka_count=0 while popitka_countchislo: print(‘Меньше!’) else: print(‘Ничего себе! Ты отгадал! Это правда’,chislo) print(‘Количество попыток:’,popitka_count) break if popitka_count==5 and popitka!=chislo: print(‘О, ужас! Ты совершенно не умеешь читать мои мысли!n Так и не смог угадать число за 5 попыток :(‘)

import random guess = «» guess_num = 0 number = int(random.randint(1,100)) print («Try to guess a number 1-100 with 6 tries..n») while guess != number: if guess_num > 6: print(«Sorry, you’ve lost! It was», number) break guess = int(input(«Enter your proposal: n»)) if guess > number: print(«No, it’s smaller..n») elif guess < number: print(«No, it’s bigger..n») else: print(«Finally, you got it!n») guess_num += 1 if guess == number: print («Number was «, number, «. You guessed it with», guess_num, «times. Good job!») input()

4) А вот задача посложнее.

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

print(‘Загадай любое целое число от 1 до 100. А я его отгадаю. Говори мне . Когда я угадаю, напиши «yes»n’) input(‘Нажми Entr, когда загадал’) import random low_num=0 high_num=100 gues=random.randint(low_num,high_num) print(‘Это число’,gues,’?’) otvet=input(‘Угадал?n’) while otvet!=’y’: if otvet==»: low_num=gues+1 gues=random.randint(low_num,high_num) print(gues) otvet=input(‘Угадал?n’) input(‘Ура! Я отгадал! Нажми Enter, чтобы выйти.’)

Вариант Игроглаза. Чтобы решать такие задачки эффективно, нужно рисовать графики или схемы. Нарисуйте прямую и отметьте там 0 в начале и 100 в конце… метод бисекции состоит в том, чтобы брать среднее значение и назначать его либо началом или концом графика в новой итерации):

# Bisection method begin = 0 end = 100 guess = «» print («I’ll guess a number 1-100.. answer ‘yes’ if I correct and ‘less’ or ‘more’ if number is bigger or smallern») while True: guess = (begin + end) // 2 print («Is it», int(guess), «?») answer = input() if answer == «yes» or (end — begin == 2): break if answer == «more»: begin = guess elif answer == «less»: end = guess print («Number was «, guess, «. Good job!») input()

Источник: skobki.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru