В программе генерируется случайное целое число от 0 до 100 пользователь должен его отгадать питон

Используйте метод бисекций. При произвольном поиске он дает обычно меньше число итераций. Хотя на малом интервале быстрее простой перебор.

19 июн 2021 в 18:47
19 июн 2021 в 18:51

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Алгоритм бинарного поиска как по мне здесь кстати:

import numpy as np count = 0 number = np.random.randint(1, 101) print(«Загадано число от 1 до 100») min = 0 max = 100 while True: predict = int(input()) count += 1 if number == predict: break elif number > predict: min = predict print(f»Угадываемое число больше «) print(f’Алгоритм бинарного поиска рекомендует вам число:’) elif number < predict: max = predict print(f»Угадываемое число меньше «) print(f’Алгоритм бинарного поиска рекомендует вам число:’) print(f»Вы угадали число за попыток.»)

Или автоматизированная версия:

import numpy as np count = 0 number = np.random.randint(1, 101) print(«Загадано число от 1 до 100») min = 0 max = 100 while True: predict = round((min+max)/2) #predict = int(input()) count += 1 if number == predict: break elif number > predict: min = predict print(f»Угадываемое число больше «) print(f’Алгоритм бинарного поиска рекомендует вам число:’) elif number < predict: max = predict print(f»Угадываемое число меньше «) print(f’Алгоритм бинарного поиска рекомендует вам число:’) print(f»Вы угадали число за попыток.»)

В среднем выходит 6-7 попыток

Уроки Python #9 | Случайные числа | RANDOM

Источник: ru.stackoverflow.com

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

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Пользователь загадывает число от 1 до 100, а программа должна его отгадать
Читайте также:
В какой программе можно соединить 2 фотографии в одну

#1 Дек. 17, 2017 00:57:48

Пользователь загадывает число от 1 до 100, а программа должна его отгадать

Не могу понять почему не работает этот код:

print(«Даров человечек, загадывай число от 1 до 100 а я его угадывать буду «) chel = 0 gg = 0 maxim = 100 minim = 0 log = 20 mog = 0 while chel != 1: gg +=1 print(«Я думаю, это число», log) chel = int(input(«Я угадал? Введи 1 если да, и 2 если нет «)) if chel == 1: break else: mog == int(input(«Число, которое ты загадал, выше или ниже написанного? Если выше введи 1, если ниже введи 2 «)) if mog == 1: minim = log sred = maxim — minim log = sred//2 + minim else: maxim = log sred = maxim — minim log = sred//2 + minim print(«Я угадал твое число за», gg, «попыток. Я НЕВЕРОЯТНО МОГУЩ») input()

Отредактировано expanxara (Дек. 17, 2017 00:58:21)

38 Задача: Угадай случайное число ( Python )

#2 Дек. 17, 2017 07:23:00

Пользователь загадывает число от 1 до 100, а программа должна его отгадать

Какую ошибку выводит? где пользователь должен число вводить?
Почему

log = 20

_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don’t let PEP 8 make you insanely intolerant of other people’s code.

#3 Дек. 17, 2017 09:57:54

Пользователь загадывает число от 1 до 100, а программа должна его отгадать

Недавно подобную задачу выполнял, может пригодится.

zag = int(input(‘загадай число: ‘)) print(‘nЗАГАДАЛ ‘+str(zag)+’n’) shot=50 i=0 sum1=0 de=50 while i==0: if shotzag: print(‘проверяю ‘+str(shot)+’nменьше загаданного’) shot=round(shot+de) de/=2 sum1+=1 if shot>zag: print(‘проверяю ‘+str(shot)+’nбольше загаданного’) shot=round(shot-de) de/=2 sum1+=1 if shot==zag: print(‘проверяю ‘+str(shot)+’nравно загаданному’+’nnБЫЛО ЗАГАДАНО ‘+str(shot)+’nnнайдено с ‘+str(sum1)+’ попытки’) i+=1

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

Угадать случайное число

В программе генерируется случайное целое число от 0 до 100. Пользователь должен его отгадать не более чем за 10 попыток. После каждой неудачной попытки должно сообщаться больше или меньше введенное пользователем число, чем то, что загадано. Если за 10 попыток число не отгадано, то вывести загаданное число.

  1. Сгенерировать случайное число.
  2. Ввести счетчик попыток. Присвоить ему значение 1.
  3. Пока счетчик попыток меньше, либо равен 10
  1. запрашивать у пользователя очередное число,
  2. если оно больше загаданного, то выводить «много»,
  3. если оно меньше загаданного, то выводить «мало»,
  4. иначе сообщать, что число угадано и прерывать выполнение цикла,
  5. увеличивать счетчик попыток на единицу.
Читайте также:
Как скачивать на Айпад программы с интернета

Самый верный способ отгадать число менее чем за 10 попыток — это делить диапазон на 2. Например, если число лежит в пределах от 0 до 100, то введя 50 мы сразу сокращаем диапазон поиска в два раза. Если было сказано, что загаданное число меньше 50-ти, то вводим 25 и таким образом снова сокращаем диапазон в 2 раза.

Если следовать этому правилу то потребуется 6-7 попыток, т.к. число 100 (изначальная длина диапазона) лежит в пределах между 2 6 и 2 7 .

Pascal


угадать число от 1 до 100 паскаль

var n,u,i: byte;
begin
randomize;
n := random(100);
i := 1;
writeln(‘Отгадайте число за 10 попыток’);
while i write(i,’-я попытка: ‘);
readln(u);
if u > n then
writeln(‘Много’)
else
if u < n then
writeln(‘Мало’)
else begin
writeln(‘Угадано!’);
break;
end;
i := i + 1;
end;
if i = 11 then
writeln(‘Вы не угадали. Было загадано ‘,n);
end.

Отгадайте число за 10 попыток
1-я попытка: 47
Мало
2-я попытка: 85
Много
3-я попытка: 59
Мало
4-я попытка: 70
Мало
5-я попытка: 78
Много
6-я попытка: 74
Угадано!

Отгадайте число за 10 попыток
1-я попытка: 90
Много
2-я попытка: 80
Много
3-я попытка: 70
Много
4-я попытка: 60
Много
5-я попытка: 50
Мало
6-я попытка: 59
Много
7-я попытка: 58
Много
8-я попытка: 59
Много
9-я попытка: 57
Много
10-я попытка: 56
Много
Вы не угадали. Было загадано 55

Язык Си

#include

main() srand(time(NULL));
int n,u,i;
n = rand() % 100;
i = 1;
while (i <=10) printf(«%d-я попытка: «, i);
scanf(«%d»,
if (u < n) printf(«Малоn»);
else
if (u > n) printf(«Многоn»);
else printf(«Угадано!n»);
break;
>
i += 1;
>
if (i == 11)
printf(«Не угадали. Это число %dn», n);
>

Читайте также:
Какие программы для просмотра фотографий на компьютере

Python

угадать число от 1 до 100 python (питон)

from random import random
n = round(random() * 100)
i = 1
print(«Компьютер загадал число. Отгадайте его. У вас 10 попыток»)
while i u = int(input(str(i) + ‘-я попытка: ‘))
if u > n:
print(‘Много’)
elif u < n:
print(‘Мало’)
else:
print(‘Вы угадали с %d-й попытки’ % i)
break
i += 1
else:
print(‘Вы исчерпали 10 попыток. Было загадано’, n)

В Питоне есть расширение else для цикла while, которое выполняется единожды, когда логическое выражение в заголовке while возвращает ложь.

КуМир

алг угадай число
нач
цел n,u,i
n := int(rand(0,100))
i := 1
вывод «Отгадай число не более чем за 10 попыток», нс
нц пока i вывод i,»-я попытка: »
ввод u
если u>n то вывод «Много», нс
иначе
если u < n то вывод «Мало», нс
иначе
вывод «Угадано!»
выход
все
все
i := i+1
кц
если i = 11 то
вывод «Вы не угадали число «, n
все
кон

Basic-256

n = int(rand * 100)
i = 1
print «Угадайте число от 1 до 100»
while i print i + «-я попытка: «;
input u
if u < n then
print «Мало»
else
if u > n then
print «Много»
else
print «Угадано!»
end
endif
endif
i = i + 1
endwhile
if i = 11 then print «Не угадано число » + n

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

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