pythonmaksВ питоне while True лучше использовать только там, где без этого не обойтись вообще, большой риск, что приложение зациклится, если с условием будет что-то не так. Сразу из двух циклов выйти не выйдет, break срабатывает только для одного цикла.
d нужно относить к for, так как d изменяется только в for. Попробуйте открыть PyCharm или подобный IDE и построчно в дебаггере посмотреть как циклы работают.
а присваивается внутри for и поэтому не проверяется while пока for не закончит свою работу, но суть остается та же в цикл while можно что угодно записывать, многие программы работают в цикле то есть весь код заключен в цикл и постоянно обрабатывается