@VladislovePro

Как найти ближайшее меньшее к моему числу из заданных чисел?

У меня есть небольшая выборка чисел
l = [2**0, 2**1, 2**2, 2**3, 2**4, 2**5, 2**6, 2**7, 2**8, 2**9, 2**10]
и любое число, которое я ввожу сам z
нужно вывести ближайшее меньшее число x из выборки l
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
@PavelMos
Самое простое
1. Отсортировать по возрастанию
2. Перебрать циклом сравнение и остановиться, когда будет найдено первое бОльшее число, и взять предыдущее (и нужна проверка, чтобы не сработало на нулевом элементе)
x = [2**0, 2**1, 2**2, 2**3, 2**4, 2**5, 2**6, 2**7, 2**8, 2**9, 2**10]
for i in range (0,len(x)): 
    if x[i]>y:
        print (x[i-1],y)
        break
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Так как у тебя степени двойки, то можно рассчитать математически.
import math 
z = float(input('Z = '))  # например, 10
logz = math.log(z, 2)  # 10 находится между 2**3 и 2**4, так что logz будет 3 с копейками (но меньше 4)
pwr = int(logz)  # отбрасываем дробную часть, получаем 3
value = 2 ** pwr  # ближайшее меньшее значение - 2 ** 3

Но для произвольных чисел это не сработает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы