Форум сайта python.su
Всем привет!
Начал изучать Python по книге Майкла Доусона “Программируем на Python”
Изучил 3 раздела, после каждого раздела выполняю задачи (проблем не было).
И вот наткнулся на последнюю задачу “Отгадай число” только наоборот (число должен отгадать компьютер!)
Возникли трудности в написании программы!
Пытался найти ответ в сети интернет, без результата (решения есть, но весьма непонятные пока мне!)
Сама задача: “А вот задача посложнее. Напишите на псевдокоде алгоритм игры, в которой случайное число от 1 до 100 загадывает человек, а отгадывает компьютер. Прежде чем приступать к решению, задумайтесь над тем, какой должна быть оптимальная стратегия отгадывания. Если алгоритм на псевдокоде будет удачным, попробуйте реализовать игру на Python.”
Вопрос: “Не могу понять, как написать код, в котором необходимо передать компьютеру, что следующее выведенное им число, было бы меньше либо больше уже имеющегося числа”
Вот сама программа “Отгадай число” (с ограниченным количеством попыток):
import random print('\nДобро пожаловать в игру "ОТГАДАЙ ЧИСЛО"!') print('\nЗагадано натуральное число от 1 до 100.') print('\nПопробуй его отгадать за 10 попыток!') number = random.randint(1,100) guess = int(input('\nВаше число: ')) tries = 1 while guess != number: if guess > number: print('Меньше...') elif guess < number: print('Больше...') if tries == 10: print('\nПОПЫТОК БОЛЬШЕ НЕТ! The end...') break guess = int(input('Следующая попытка: ')) tries += 1 print('\nПоздравляю!!! Это число: ', number) print('\nВы затратили всего: ', tries, 'попыток!') input('\nEnter')
Отредактировано AlLinik (Май 17, 2022 22:41:21)
Офлайн
[code python]код вставлять между этими тегами в редакторе рядом со смайлом есть список тегов[/code]
Отредактировано xam1816 (Май 17, 2022 22:14:09)
Офлайн
Бинарный поиск это называется:
def binary_search(spisok, value): low = 0 high = len(spisok) - 1 while low <= high: mid = (low + high) // 2 if value == mid: return print('Загаданное число:', mid) elif value < spisok[mid]: print('Число меньше', mid) high = mid - 1 else: print('Число больше', mid) low = mid + 1 else: print('Числа нет в списке') spisok = list(range(0, 101)) chislo = int(input('Введите число: ')) binary_search(spisok, chislo)
Офлайн
А с помощью if, elif, else, while можно что-нибудь придумать?
Или лучше изучать дальше?
Офлайн
import random import time while True: hide_num = int(input('загадайте число от 1 до 100\n>>>')) if 1 <= hide_num <= 100: break else: print('число вне диапазона!') a = 1 b = 100 while True: num = random.randint(a, b) print(f'компьютер: "это число {num}"') if num > hide_num: b = num - 1 print('ВЫ: "нет это число меньше"') elif num < hide_num: a = num + 1 print('ВЫ: "нет это число больше"') else: print(f'верно!!!, это число {hide_num}') break time.sleep(2) print('-----------------------')
загадайте число от 1 до 100
>>>5
компьютер: "это число 5"
верно!!!, это число 5
Process finished with exit code 0
Отредактировано xam1816 (Май 17, 2022 22:52:21)
Офлайн
AlLinikТак представленная выше функция на 99% из этого и состоит.
с помощью if, elif, else, while
spisok = list(range(0, 101)) chislo = int(input('Введите число: ')) low = 0 high = len(spisok) - 1 while low <= high: mid = (low + high) // 2 if chislo == mid: print('Загаданное число:', mid) break elif chislo < spisok[mid]: print('Число меньше', mid) high = mid - 1 else: print('Число больше', mid) low = mid + 1 else: print('Числа нет в списке')
Офлайн
Palrom
spisok = list(range(0, 101))
chislo = int(input('Введите число: '))
number_list = list(range(0, 101)) number = int(input('Введите число: '))
Офлайн
xam1816
пользуйся переводчиком
Офлайн