Краткий ответ: спецификация Python3 str.format () отказалась от поддержки «i» (% i или {: i}).Он использует только «d» (% d или {: d}) для указания целых чисел.Поэтому вы можете просто использовать {: d} для всех целых чисел.
Длинный ответ: Для вывода, то есть для printf или ведения журнала,% i и% d на самом деле одно и то же, как в Python, так и в C. Есть разница, но только когда вы используете их для разбора ввода,как с scanf ().Для scanf% d и% i фактически означают целое число со знаком, но% i интерпретирует ввод как шестнадцатеричное число, если ему предшествует 0x, и восьмеричное, если ему предшествует 0, и иначе интерпретирует ввод как десятичное.Поэтому для обычного использования всегда лучше использовать% d, если вы не хотите указывать ввод как шестнадцатеричный или восьмеричный.
Для получения более подробной информации, пожалуйста, взгляните на спецификацию формата здесь: https://docs.python.org/2/library/string.html#formatspec