Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3388 / 105
Регистрация: 24.05.2011
Сообщений: 14,621
Записей в блоге: 8

Продолжение задачи "Угадай число"

24.09.2018, 18:37. Показов 2580. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цель: написать программу, решающую задачу "Угадай число".
Суть: хочу научится работать с циклами.

Условия: загадывается число от 1 до 1010, причём, верхняя граница задаётся рандомно от 10 до 1010 и является степенью 10.
С этой частью, кмк, я справился:
Python
1
2
3
4
5
6
7
8
9
#! /usr/bin/python3
 
from random import randint
 
Var1 = randint(1, 10)
Var2 = 10 * Var1
Var3 = randint(1, Var2)
print ("Загадано число от 1 до {0} ".format(Var2))
print (Var1, Var2, Var3)
Далее, программа должна угадывать значение Var3 за наименьшее число итераций, действуя по алгоритму деления пополам (кстати, как оно правильно называется?), то бишь, делить диапазон поиска пополам и, исходя из ответа A>x или A<x, в следующей итерации искать A в соответствующей половине поделённого диапазона.
В случае с Var2 = 10 и Var3 = 3
поиск x должен производиться примерно вот так:
Code
1
2
3
A = 5; x < A
A = 2; x > A
A = 3; x = A
Как я понимаю, для передачи подсказок "угадывающей" части программы, достаточно сравнивать A c Var3
Python
1
2
3
4
if A > Var3: 
     ... ...
elif A < Var3:
     ... ...
В конце вывести "Искомое число найдено за N циклов"

Ах да, чуть не забыл: т.к. поиск чисел у нас производится в десятичной сс в диапазоне целых чисел, то неизбежно получатся ситуации, когда деление в диапазоне будет давать дробное число. И это дело нужно будет тоже как-то округлять до целого в меньшую (или большую) сторону.
Кроме того, как я понимаю, нужно хранить верхнюю и нижнюю границы диапазона поиска.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2018, 18:37
Ответы с готовыми решениями:

Алгоритм Задачи Угадай число
Решил задачу методом подгона , но выдает RunTimeError .Уже пол дня не могу понять что от меня хотят в этой задаче, и как я могу узнать что...

Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона
Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона. Диапазон и количество попыток пользователь вводит с ...

Реализовать игру «Угадай число», где в качестве игрока, угадывающего число, выступает компьютер
Игра «Угадай число» Реализовать игру «Угадай число», где в качестве игрока, угадывающего число, выступает компьютер. Дополнительная...

2
 Аватар для DarkJackal
0 / 0 / 0
Регистрация: 02.09.2018
Сообщений: 26
24.09.2018, 18:44
Есть одно подобие вашей проги - написана в висуал студио
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "pch.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
using std::cout;
using std::endl;
int main()
{
    srand(static_cast<unsigned int>(time(0)));//запуск
    int secretNumber = rand() & 100 + 1;//От 1 до 100
    int tries = 0;
    int guess;
    //cout << secretNumber;
    cout << "\t Welcome to My Guess Number \n\n";
    do
 
    {
        cout << "Enter a guess: ";
        cin >> guess; ++tries;
        if (guess > secretNumber)
        {
            cout << "To high!\n\n";
        }
        else if (guess < secretNumber)
        {
            cout << "To low!\n\n";
        }
        else if (guess = secretNumber)
        {
            cout << "\n That's it! You got in it " << tries << "  guesses!\n";
        }
    } while (guess != secretNumber);
    system("pause");
    return 0;
}
Ой- Это же С++ прога а я нахожусь в Питон
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3388 / 105
Регистрация: 24.05.2011
Сообщений: 14,621
Записей в блоге: 8
24.09.2018, 19:31  [ТС]
U - Upper
L - Lower
A - Answer
https://www.cyberforum.ru/cgi-bin/latex.cgi?A=\frac{U-L}{2}+L

Добавлено через 3 минуты
Цитата Сообщение от DarkJackal Посмотреть сообщение
Есть одно подобие вашей проги - написана в висуал студио
Спасибо, конечно , но моя цель - научится разработке программ самому - 1 и 2 - здесь действительно раздел Питона.
Хотя, если разобраться в синтаксисе плюсов - ничто не помешает её "перевести на змеиный".

Добавлено через 28 минут
И, кажется, я справился:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#! /usr/bin/python3
 
from random import randint
 
Var1 = randint(1, 10)
Var2 = 10 ** Var1
Var3 = randint(1, Var2)
print ("Загадано число от 1 до {0} ".format(Var2))
print (Var1, Var2, Var3)
 
Attempts =1
L = 1
U = Var2
A = U // 2
while A != Var3:
   if A > Var3: 
      U = A
   elif A < Var3: 
      L = A
   D1 = U - L
   D2 = D1 // 2
   A = D2 + L
   Attempts += 1
print (A, Attempts)
Вот только переменных наплодил...
Есть способ избавиться от лишних?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2018, 19:31
Помогаю со студенческими работами здесь

Угадай число
Здравствуйте, не могу определиться с ошибкой. Условие Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n....

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

Угадай число
Задача: Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она...

Угадай число
Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет...

Угадай число
Всем хорошего настроения! я ломлюсь в ряды программёров уже 4-й день :wall: фантазия бурная, а вот принять язык машин мой мозг ещё пока не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru