Хлебушек
Оракул
(76326)
3 года назад
Можн примерно так:
find_x = 200 // или float(input())
i = 0
while i < len(x):
if x[i] >= find_x:
break
i +=1
print(f"x = {x[i - 1]}, {x[i]}")
print(f"y = {y[i - 1]}, {y[i]}")
Но некоторые моменты решай сам:
- Что если ввести число меньше, чем есть в массиве или больше?
- Поиск можно немного оптимизировать бинарным поиском (отсечь часть, меньше или больше медианы, ведь массив судя по всему отсортирован)
- А если будет число равное 200? Какой диапазон брать? после 200 или до 200?
Тык ПыкМыслитель (7328)
3 года назад
А первая строка зачем? Извиняюсь.
Ну, и предлагать f строки всем - это не очень.
Тык ПыкМыслитель (7328)
3 года назад
А Питон не могу установить. требует КБ МС, КБ сейчас недоступен, доступен только в каком-то кумулятиве. И, ни хрена не помогает даже эта установка. причём я уже отвязался от домена, обнулил пасс Админа, стал локальным админом..
Тык ПыкМыслитель (7328)
3 года назад
Ну, проблема в kb MS - обновлениях безопасности. К программированию это мало относиться, но влияет сильно.
Тык Пык
Мыслитель
(7328)
3 года назад
Самый тупой вариант - сделать сначала 2 переменных. И перебирать, меняя обе переменные.
Можно сделать сортировку списком. С индексами можно разобраться.
Не очень понятно условие "соответствующие им ячейки по y".
Т. е. списки заведомо одинаковы по длине? И ищем по индексу найденной величины из списка Х индексы (x-1) и (x+1)? Bkb rfr&
Тык ПыкМыслитель (7328)
3 года назад
Я имею в иду не отступления. Я имею в виду, что список уже упорядочен от мин элемента до мах по возрастанию?
Если так, то бери в начале переменную "к",например, присваивай ей твою величину (200 в примере).
Потом циклом условия перебирай список на то, что очередной элемент списка >к.
Как условие выполнится, выводи из обоих списков величины с индексами "к" и "к-1".
Это самое тупое и простое решение.. Но, я и не программист)))
Aleks Nots
Просветленный
(24251)
3 года назад
x = [166.3, 188.9, 195.2, 209.1, 219.2, 225, 236.1, 242.8, 247.6, 252.9, 260.6, 265.9, 271.6, 275.5]
y = [0.11, 0.22, 0.33, 0.44, 0.55, 0.65, 0.76, 0.87, 0.98, 1.09, 1.2, 1.31, 1.42, 1.53]
z = float(input())
for i,a in enumerate(x):
~~~~if a > z:
~~~~~~~~break
if i > 0 and i < len(x)-1:
~~~~print(x[i-1], x[i])
~~~~print(y[i-1], y[i])
else:
~~~~print(x[i])
~~~~print(y[i])
Cat BlueПрофи (987)
3 года назад
Тоже благодарю, работает.
Как правильно понимать for i,a in enumerate(x):?
i - индекс, a - итерации?
x = [166.3, 188.9, 195.2, 209.1, 219.2, 225, 236.1, 242.8, 247.6, 252.9, 260.6, 265.9, 271.6, 275.5]
y = [0.11, 0.22, 0.33, 0.44, 0.55, 0.65, 0.76, 0.87, 0.98, 1.09, 1.2, 1.31, 1.42, 1.53]
Как можно вычислить ближайшие числа в массиве в+ и - от заданной переменной.
Например я указываю 200 по иксу,
а мне выдаются:
x = 195.2, 209.1
и соответствующие им ячейки по y
y = 0.33, 0.44
Если можно, пожалуйста подробнее, я начинающий.