Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Пропали вкладки Хром за полгода. Как восстановить?

Лучший ответ:
Никак. Просто перестаньте использовать вкладки вместо "избранного"

Худший ответ:
Понять, простить, отпустить. Вкладки - не предназначены для перманентного хранения адресов страниц в принципе, они для этого не создавались, и восстановление вкладок в хром добавлено лишь для удобства, а не в целях хранения данных в них. Для сохранения важных страниц используйте "Избранное", всего лишь надо нажать вот эту звёздочку справа в адресной строке и страница мгновенно сохранится в избранное и в вашем компьютере, и в присоединённой учётной записи и не исчезнет оттуда до тех пор, пока вы её не удалите.
Вопрос: Mikrotik есть ли возможность отладки скриптов?

Лучший ответ:
:log info "ПревЕд!"
или
:log info "Переменная $var"

Худший ответ:
https://mum.mikrotik.com//presentations/LK17/prese...

см. с середины ближе к концу
Вопрос: Почему программы грузят несколько потоков, даже если не содержат многопоточного кода?

Лучший ответ:
По ссылке многопоточная программа
#pragma omp parallel for
   for (i = 0; i < n; i++) {
      __m128d sum = _mm_setzero_pd();

      int j;
      for (j = 0; j < n; j += 2) {
         __m128d b = _mm_set_pd(v[j],v[j+1]);
         __m128d a = _mm_set_pd(A(i,j), A(i,j+1));
         sum = _mm_add_pd(sum, _mm_div_pd(b, a));
      }
      out[i] = sum[0] + sum[1];
   }
}

Директива #pragma omp parallel for - это многопоточная библиотека OpenMP, если не ошибаюсь

Худший ответ:
Современные процессоры умеют распараллеливать вычисления при загрузке кода в конвейер.
Вопрос: Реально ли подменить IP на какой-от другой конкретный IP?

Лучший ответ:
Не безопасно. IP подменяется элементарно. Там конечно возникают сопуствующие проблемы с маршрутизацией, но в зависимости от типа атаки, они обходимы.

Худший ответ:
Столкнулся с одноим банком, который хреновато защищает вклады. По сути, только сличением лица с фото в паспорте предлагают ограничить безопасность. Отсюда и вопрос - насколько реально подменить лицо, чтобы сделать его как у другого человека?

В принципе вполне реально - нужно взломать ваш сервер и использовать его как прокси. Так что если вы придумаете какую-то другую защиту, например с помощью ключей api, то их так же можно получить взломав ваш сервер. Даже проще чем ip - не нужно повышать права до root - достаточно читать данные доступные серверу.

Да - защита только сличением IP не самая технологичная и надежная. Но все остальное еще менее надежное. Более того всем остальным нельзя усилить защиту по IP.

P.S.
Да, есть другое способ еще - взломать саму платежную систему, но опять же - тогда и IP подменять не надо будет.
Вопрос: Не выводятся данные eel / pyowm?

Лучший ответ:
В файле main.html опечатка:
<form>
        <input ip='location' class="enter" type="text" placeholder="Введите название города" value="москва">
    </form>
вместо ip нужно id.

В файле main.py:
mgr = owm.weather_maneger()
скорее всего weather_manager
Также в main.py скорее всего нужно заменить в 2-х местах city на place.

PS: На практике проверить код не могу, так как у меня старая версия python3, следовательно, старая версия pyowm(там немного все по другому). Если что, пишите.

Худший ответ:
Код после решения
main.py
# imports
import eel 
import pyowm
# api key
owm = pyowm.OWM ( '80e8e723ef945c291f4661f5898f93e0',language = "RU" )
@eel.expose
def get_weather(place):
    #owm
    observation = owm.weather_at_place(place)
    Observation = weather = observation.get_weather()
    #temp
    Temp = weather.get_temperature('celsius')['temp']
    #status
    Status = weather.get_detailed_status()
    return "В городе "+place+'температура '+str(Temp) + Status

#eel
eel.init("web")
eel.start("main.html", size=(500 , 500))
main.html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>find weather</title>
    <script src="eel.js"></script>
    <link rel="stylesheet" href="app.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css">
    <link rel="icon" type ="image/png" href="weather-icon.png">
</head>
<body>
<div class="header">
    <img src="weather-icon.png" height="60px">
    <h2>find weather</h2>
</div>
<div class="form">
    <form>
        <input id='location' class="enter" type="text" placeholder="Введите название города" value="москва">
    </form>
</div>
<div class="butt">
    <button id='show'>Найти</button>
</div>
<div id="info"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script type="text/javascript">
    async function display_weather(){
        let place = document.getElementById('location').value;
        
        let res = await eel.get_weather(place)();
        document.getElementById('info').innerHTML = res;
        }
        jQuery('#show').on('click',function(){
            //
            display_weather();
        });
    </script>
</body>
</html>
Вопрос: Оценка и анализ сайта?

Лучший ответ:
Заброшенные и перспективные проекты всегда лучше создавать с "нуля".

Худший ответ:
Я сам в программировании не разбираюсь
наймите человека который разбирается. вместе с ним проработайте техническое задание.  а уже потом, на основании ТЗ смотрите  что у вас сделано.
Вопрос: Как запустить массивную задачу на php?

Лучший ответ:
все долгоиграющее должно запускаться в фоне, а не браузером/веб-сервером.

Худший ответ:
Читам: proc_openstream_set_blockingstream_select
Это позволит хорошо работать с дочерними процессами и хорошо обрабатывать большое количество задач.
Вопрос: Хорошо ли плагины работают с кастомными темами в WordPress?

Лучший ответ:
Если темы делать "по учебнику" (согласно требованиям и рекомендациям из официальной документации и Theme Handbook), с адекватными плагинами, которые исповедуют такой же подход, проблем не будет - все будет совместимо. С говноплагинами проблемы будут, но они будут и на официальной теме, и на платной/премиум, и на любой другой. Ибо говноплагин.

Худший ответ:
а что мешает использовать профессиональные темы, с поддержкой и обновлениями?
ну а вообще, откуда нам знать, сможете ли вы "написать свою тему, а потом просто взять и вставить в сайдбар стороннюю голосовалку." Это у вас спросить нужно.
Вопрос: Как найти индекс лишнего символа, при удалении которого слово становится палиндромом?

Лучший ответ:
Как по мне, то лучше пробегать по всему слову, и по-очереди удалять буквьі и проверять на палиндромность. Если слово палиндром - возвращать индекс той буквьі, если по оканчании прохода не бьіло ниединого палиндрома - вернуть 0

Худший ответ:
на счет "идеи":  честно говоря я не совсем понял что ты хочешь сравнивать после нахождения первого расхождения.
1) идем до расхождения (середина - палиндром)
2) выкидываем слева - продолжаем до расхождения  (середина - палиндром)
3) выкидываем справа - продолжаем до расхождения  (середина - палиндром)
нет решенияdef poly(s):
    L = len(s) - 1
    L2 = (L>>1) + 1
    print(s,L,L2)
    i=0
    while s[i]==s[L-i]:
        print('1:', i, s[i], s[L-i])
        i+=1
        if i==L2: return 0
    print('2:', i, s[i], s[L-i])
    k=i
    while s[k+1]==s[L-k]:
        print('3:', k, s[k+1], s[L-k])
        k+=1
        if k==L2: return i
    print('4:', k, s[k], s[L - k])
    k=i
    while s[k]==s[L-k-1]:
        print('5:', k, s[k], s[L-k-1])
        k+=1
        if k==L2: return L-i
    print('6:', k, s[k], s[L - k])
    return None
while True:
    s = input()
    print(s)
    print(poly(s))qwertyytrewq
qwertyytrewq
qwertyytrewq 11 6
1: 0 q q
1: 1 w w
1: 2 e e
1: 3 r r
1: 4 t t
1: 5 y y
0
qwertyytrwq
qwertyytrwq
qwertyytrwq 10 6
1: 0 q q
1: 1 w w
2: 2 e r
3: 2 r r
3: 3 t t
3: 4 y y
3: 5 y y
2
qwrtyytrewq
qwrtyytrewq
qwrtyytrewq 10 6
1: 0 q q
1: 1 w w
2: 2 r e
4: 2 r e
5: 2 r r
5: 3 t t
5: 4 y y
5: 5 y y
8
qwertyytrewqww
qwertyytrewqww
qwertyytrewqww 13 7
2: 0 q w
3: 0 w w
4: 1 w w
6: 0 q w
None
Вопрос: Как сделать подобный slick-слайдер?

Лучший ответ:
У них это работает на fullPage.js

Худший ответ:
Можно только на css html вот код :<style>
		.saitbar {
			width:90%;
			height:100%;
			background: #f0f0f0;
			transform: translateY(-100%);
			transition: 0.5s;
			position:absolute;
			top:0px;
			left:10%;
		}
		.saitbar1 {
			width:90%;
			height:100%;
			background:red;
			transform: translateY(-100%);
			transition: 0.5s;
			position:absolute;
			top:0px;
			left:10%;
		}
		.saitbar2 {
			width:90%;
			height:100%;
			background:green;
			transform: translateY(-100%);
			transition: 0.5s;
			position:absolute;
			top:0px;
			left:10%;
		}
		.button:hover .saitbar{
			transform: translateY(0);
		}
		.button:hover .saitbar1{
			transform: translateY(0);
		}
		.button:hover .saitbar2{
			transform: translateY(0);
		}
		.button{
			width:50px;
			height:50px;
			background-color:#494949;
			border-radius:25px;
			margin-top:30px;
		}
		body{
			color:#494949;
			font-size:40px;
			font-family:Arial;
		}
	</style>
<body>
	<div class="button">
		<div class="saitbar">привет</div>
	</div>
	<div class="button">
		<div class="saitbar1">как дела</div>
	</div>
	<div class="button">
		<div class="saitbar2">привет , мир</div>
	</div>
</body>
Вопрос: Как запретить доступ к сайту с других стран?

Лучший ответ:
Если ваши конкуренты мешают вашей деятельности сейчас, то вполне возможно, что будут и после того, как вы запретите доступ из стран кроме Казахстана - достаточно будет найти новые прокси. Более того в такой реализации нужно будет дополнительно разрешать доступ для поисковых ботов, чтобы не было проблем с seo.

Возможно, лучшим решением будет скрывать (или как-то помечать) от вашего менеджера заявки, которые были сделаны посетителями не из Казахстана. Менеджер не будет их видеть, зато ваши конкуренты будут и дальше тратить свое время на фейковые заявки.

Вот пример, как можно определить страну и заблокировать всех, кто не из Казахстана:
$ip = $_SERVER['REMOTE_ADDR'];
$ipInfo = json_decode(file_get_contents("http://ip-api.com/json/{$ip}?fields=status,message,country,countryCode"), true);

if(isset($ipInfo['country']) && $ipInfo['country'] != 'Kazakhstan') {
	//print('BLOCKED COUNTRY');	
    http_response_code(403);
	  die('Forbidden');
}

Худший ответ:
Любой cdn имеет опцию Geo Restriction Policy - White list
Вопрос: Какой из этих трех SSD взять?

Лучший ответ:
Ssd этого ценового сегмента все плюс минус одинаковые, поэтому берите просто то, что больше нравится/имеет большую гарантию/дешевле стоит

Худший ответ:
Все же больше склоняюсь к Crucial MX500
Вопрос: Как посчитать честное среднее число учитывая объём?

Лучший ответ:
Возможно, вам подойдут следующие формулы:
1. среднее арифметическое
2. среднее гармоническое
3. среднее геометрическое
4. математическое ожидание
5. центр масс
6. среднее арифметическое с умножением на объем

Худший ответ:
Ваши 100 яблок стоят 940рублей, дальше надеюсь понятно?
Вопрос: Как проверить массив $_POST?

Лучший ответ:
PHP работает дискретно.
То есть когда ты делаешь запрос на сервер, РНР скрипт запускается, принимат запрос, возвращает результат, и умирает. И при этом ничего не знает про другие запросы.

Для того чтобы все последующие запросы могли отобразить данные первого, твой скрипт должен сохранять их на сервере, и читать каждый раз, когда он вызывается

Худший ответ:
Чтобы возвращаемая страница узнала о каких либо данных с клиента - их необходимо отправить на сервер при помощи запроса, в вашем случае - POST-запрос.
Вопрос: Перспективы перехода в 1С?

Лучший ответ:
Какие перспективы на рынке 1с по вашему мнению? 
Нормальные.
Разумеется, если Вы не чистый кодер, а немного бухгалтер, финик или складской работник - 1С очень сильно завязана на бухгалтерию-финансы-склад и непонимание основ этих вещей не позволит Вам стать хоть сколько-нибудь ценным спецом.

Худший ответ:
в большом городе всегда будет на хлебушек
но на гаджеты лучше что-то котирующееся на Апворке, например Golang
Вопрос: Как работает блок if в этой задаче?

Лучший ответ:
Возьмите ручку и бумажку и выпишите значения всех трёх переменных после каждой строки

Худший ответ:
if (input1 > input2) {
    let temp = input2;
    input2 = input1;
    input1 = temp;
 }
Этот код - это способ узнать в какой из двух переменных лежит наименьшее число, а в какой наибольшие (ведь именно в такой последовательности их нужно потом вывести с помощью цикла).
Если input1 больше input2, то меняем их местами и теперь точно знаем, что в input1 наименьшее из двух чисел.
А если input1 меньше input2, то ничего делать не нужно - ведь в input1 наименьшее из двух чисел.
Соответственно в цикле в любом случае выводим числа от input1 до input2, даже если пользователь ввел в input1 число большее, чем в input2.
Вопрос: Как красиво отсортировать List?

Лучший ответ:
List comprehensions

>>> [n for n in items if n%2==0]
[2, 4, 6, 8, 10]
>>> [n for n in items if n%2]
[1, 3, 5, 7, 9]

Если надо еще и сортировать, то sorted(items2)

Худший ответ:
Чисто по красоте отсортировать этот лист ;D
Вопрос: Создал репозиторий на github. Как в одном репозитории иметь несколько папок и в каждой папке свой проект?

Лучший ответ:
Так бывает, когда GIT-ом начинает пользоваться человек, который не понимает, зачем оно ему на самом деле надо. 
В том и суть, чтобы под каждый проект иметь свой репозиторий, иначе зачем вам git? Папку на dropbox заведите и туда закидывайте.

Худший ответ:
Есть ветки - один проект, но разные задачи по нему - разные ветки
А разные проекты = разные проекты
Вопрос: Как транслировать C-функцию в JS?

Лучший ответ:
 Сверяем:CJSПолучаем:
https://www.npmjs.com/package/crc-full

Худший ответ:
Примерно так:spoiler
Но можно и самому легко. Там всё очевидно, как работает. Просто учти, что в JS символы условно двухбайтовые, то есть код символа где-то примерно от 0 до 65535.
Вопрос: Видеокарта периодически не выводит изображение на монитор?

Лучший ответ:
Очень часто странные нерегулярные проблемы с компьютером - причиной является слабый или проблемный блок питания (так же само собой это могут быть проблемы со схемой питания видеокарты но это сложнее диагностировать и лечить)

Худший ответ:
Было похожее. Видюха почему-то не успевала запуститься на момент старта компа.
Включить комп - БИОС пикает бипером - нажимаем Ресет - комп и видюха штатно стартуют.
Или заменить видюху.
Вопрос: Как рассчитать в гугл-таблице возраст от даты рождения?

Лучший ответ:
Лучше так, иначе могут быть проблемы из-за високосных годов рядом с днем рождения:=РАЗНДАТ(A1;СЕГОДНЯ();"Y")

Худший ответ:
В А1 вводите дату рождения
в B1 вводите=(СЕГОДНЯ()-A1)/365
Вопрос: Как правильно адаптировать сайт под мобильные устройства?

Лучший ответ:
Если вы задаете этот вопрос - вы НЕ умеете работать с медиа-запросами

Худший ответ:
заказать услугу на фрилансе напр.
Вопрос: Как считать очень большие числа, и на каком языке программирования?

Лучший ответ:
Не такие и большие числа :)
https://github.com/aleaxit/gmpy

Кроме того посмотрите в сторону Fortran, там  много готовых библиотек именно для научных вычислений. 

В общем случае библиотеки есть для любого ЯП

Худший ответ:
Даже если вы возьмёте первый из Top-500 суперкомпьютеров и, отбросив всё устройство компьютера, сможете использовать всю его оперативную память (250 петабайт) для кодирования одного единственного числа, то максимальное будет иметь (очень грубая оценка) всего 6.7*10^17 знаков. Даже близко не гуголплекс :)
Вопрос: Query Google Таблицы, Как вывести только уникальные?

Лучший ответ:
В ячейке D2 впишите формулу: =IF(COUNTIF($C$2:$C2;C2)<2;"Unique";"Duplicate")
Растяните её на весь столбец D - в нём будут помечены уникальные значения и дубликаты.
Теперь можно поменять основную формулу на:=UNIQUE(QUERY(FILTER(A1:D4;D1:D4="Unique");"Select Col1, Col2, Col3"))

Худший ответ:
через фильтр
Вопрос: Телеграм бот на питоне: ошибка переменная is not defined?

Лучший ответ:
Разберитесь сначала с основами языка. Учебник какой-нибудь прочитайте.

Худший ответ:
Изучи для начала страницу, которую парсишь.

Элементы которые ты ищешь, обладают лишь одним классом, а ты ищешь их по двум классам.
А элемента с классом "wDescription description" вообще не существует.

Тебе нужно сначала получить элемент класса "temperature", а уже из него вытаскивать элементы с температурой.
Вопрос: Как правильно оценивать работу на верстку?

Лучший ответ:
Как правильно оценивать работу на верстку?
максимальная цифра за которую вы еще можете получать заказы. 
Если вам за 15к заказы дают а за 20к - не дают значит ваша оценка - 15к.
Если вам за 15к дают, за 20к дают, за 60к дают, а за 65к уже нет - ваша оценка - 60к. 

Если у вас потолок 15к и он вас не устраивает то надо искать и пробовать, что сделать чтобы стоить больше. И это не только умение верстать - как вы ищете заказчиков, какая область, как общаетесь, как ведете проект, как фильтруете хороших от плохих, и много чего еще имеет большое значение.

Для начала - выясните эту свою цифру. А то может зря вы там в депрессии сидите, надо просто цену поднять.

Худший ответ:
Вопросом на вопрос не вежливо, но все же а где смотреть шаровые работы новичку, не нужны 15к и тд, нужна минимальная оплата и много практики, есть друг который поможет и проверит перед передачей, смотрю биржи но там все как я понял для людей кто в теме более года, да и без доната ничего не найти, может кто что посоветует тоже?
Вопрос: Почему не включается ноутбук после пересборки?

Лучший ответ:
Судя по вопросу - в сервис, и лучше не включать лишний раз

Худший ответ:
Для начала проверить приходит ли ~19V на разъеме. Замерить батарейку БИОСа, посмотреть номинал, и сравнить цешкой сколько на ней. потом проверить дежурное напряжение на плате(посмотреть по схеме). Ну и по вытекающей - ШИМ.
Вопрос: А какие вы используете программы для верстки?

Лучший ответ:
WebStorm - отлично подходит. Для обучения есть бесплатная лицензия.

Худший ответ:
Sublime Text 3, можно к нему еще BracketHighlighter, новичку будет с тегами чуть удобнее работать. Вместо фотошопа неплохо подойдет Figma, но это если речь идет о макетах.
Вопрос: Не могу получить доступ к переменной из другого скрипта на другом объекте?

Лучший ответ:
Если переменная статическая - то к ней доступ не через экземпляр класса, а просто через класс - ClickChet.money.

Учите сишарп, не лезьте в юнити!

Худший ответ:
Как всё некрасиво выглядит... Аж противно немного. Читать ошибку будете? У вас нету такой переменной Money, есть только money
Вопрос: Почему сравнение с символом пробела не работает?

Лучший ответ:
cin считывает символы до первого пробельного символа, читайте при помощи cin.getline.

Худший ответ:
Или можете попробовать отключить пропуск пробелов
std::cin.unsetf(ios::skipws);
Вопрос: Какой сервер выбрать для доски объявлений, загруженность сайта в первое время 10-20 тыс. хостов в день?

Лучший ответ:
Могу вам посоветовать взять любой шаред-хостинг и раскатать там вордпресс. Это будет дешево и быстро. 

20 тысяч уников в день в первый месяц — это, конечно, фантазии, если у вас нет нескольких миллионов на директ.

Худший ответ:
Любой VPS.
Можно облачный.
По мере роста нагрузки - повышаете тариф.
Когда проект будет реально запущен и проработает некоторое время - уже будут понятны требования, и вы можете купить  подходящий сервер, арендовать дедик, или выбрать необходимый хостинг.

какой движок выбрать Да какой угодно, какой вам больше нравится, и в котором вы и ваша команда разработчиков больше разбирается.
Вопрос: Как определить что игрок двигается в сторону объекта?

Лучший ответ:
1. Определить положение курсора и положение игрока в момент времени X и найти длину вектора по этим точкам;
2. Определить положение курсора и игрока в момент X+n и тоже найти длину вектора;
3. Сравнить длины векторов. Если второе меньше - движется к курсору, если больше - уходит;
4. Плюнуть в лицо тем, кто говорит, что программисту не нужна математика.

Худший ответ:
Рональд Макдональд Все верно расписал, ну а раз это тема по юнити, то куда же без готового кода xD private GameObject player;
        private float oldSqrMagnitude;
        private Camera camera => Camera.main;

        private void Update()
        {
            var newSqrMagnitude = (player.transform.position - camera.ScreenToWorldPoint(Input.mousePosition)).sqrMagnitude;
            if (newSqrMagnitude > oldSqrMagnitude)
            {
                Debug.Log("дальше");
            }
            else if (newSqrMagnitude < oldSqrMagnitude)
            {
                Debug.Log("ближе");
            }
            else
            {
                Debug.Log("стоит");
            }

            oldSqrMagnitude = newSqrMagnitude;
        }
Однако учтите что тут будет реагировать даже если персонаж стоит на месте, а двигается только мышь. 
Добавить проверки чтобы учитывалось только при движение персонажа думаю не сложно)
Если для ваших целей этот код будет не так точен, то заменить .sqrMagnitude на .magnitude
Так же я бы рекомендовал это считать реже чем каждый кадр) Для этого можно использовать FIxedUpdate, либо корутину. В идеале бы это считать только при изменение положения мыши\персонажа ;)
Вопрос: Как маленькому веб-проекту спасаться от DDoS?

Лучший ответ:
На aws waf и shield встроены в CloudFront. 3000 usd стоит если нужна выделенная команда со стороны AWS для более качественного реагирования. Также в CloudFront есть свой geo policy и роуты что вроде как дешевле и лучше чем route53 поскольку не требует изменения записей dns и избегает из кэширования.

Ну и да, waf не связан с ddos, это зона ответственности shield

Худший ответ:
Через подпись трафика (после валидации "чистоты" клиента) между разными площадками (не менее 2-х) это делается.
Неподписанный - сразу же игнорируется другой ещё до создания соединения.
Все коннекты - проверяются на валидную подпись.
Вопрос: Как программно менять очередь queue?

Лучший ответ:
Создайте 2 очереди, создайте временные правила и заворачивайте в одну или вторую очередь
https://voxlink.ru/kb/freepbx/freepbx-time-conditi...

Худший ответ:
очереди лежат в базе - можно в базе поменять.
Вопрос: Как сделать казино бота вк?

Лучший ответ:
пффф легко.

1. С помощью реверс инжениринга раскладываете приложение на аминокислоты, либо снифите траффик.
2. Восстанавливаете протокол взаимодействия между vk api, казино и приложением.
3. По протоколу что у вас получился пишете бота.

Вам потребуется всего навсего несколько лет.

Худший ответ:
Еще один вариант, если планируете сделать адекватное казино по типу   - это отталкиваться от исходного кода других вариантов и выцеплять нужное
Вопрос: Почему при попытке передачи словаря как аргумента map() появляется ошибка?

Лучший ответ:
Потому что map принимает list в качестве второго аргумента, а приведение dict к list - это список ключей, так что obj в lambda будет строкой.
Можно посмотреть, что покажут эти print для понимания:print (list(a))
print (list(map(lambda x: x, a)))
Решение: вместо obj['id'] использовать в lambda-выражении a[obj]['id']

Худший ответ:
Всё гораздо проще:'({id}) {title} - {subtitle}'.format(**a)
Вопрос: Для Автокад лучше Ryzen или Intel?

Лучший ответ:
Без разницы.

Худший ответ:
к тому моменту когда вы научитесь видеть разницу (делать такие проекты ) вопрос этот уже не возникнет. так что не парьтесь, какой нравиться больше тот и берите.
Вопрос: Можно ли указать индекс в переменной?

Лучший ответ:
Можно, если переменная содержит индексируемый тип данных. Ошибку вам выдало потому, что в переменной a содержится пустой список, у которого нет элемента с индексом 0.

Худший ответ:
a = [] #список
a[0] = 1 #ошибка потому что в списке нет 0 элемента и вообще никаких нет.
b = {} #словарь
b[0] = 1 #нет ошибки потому что отсутсвующие ключи словаря создаются в такой конструкции
разница в том что в списке элемент должен существовать как для чтения так и для записи
а в словаре он должен существовать только для чтения, потому что при записи он создается сам.

если нужен именно список, то надо заполнить его заранее.
a = [None]*100
a[0] = 1 #теперь ошибки нет потому что в списке 100 элементов None
a[100]  = 1 #снова ошибка потому что индекс 100 это 101 элемент по порядку, которого нет