Цикл for через массив для отображения его содержимого

Программа рассчитывает таблицу умножения от 0 до 12 для числа, введенного пользователем. Я пытаюсь отобразить содержимое массива с результатами в нем для циклического прохождения через него. Тем не менее, он отображает только таблицы от 0 до 11, но не 12-й, даже если есть 12-е данные.

Вот что я придумал:

def multiplicationTable():
 nb = int(input("Please enter a number between 1 and 12 : \n"))

 table = array('i')
 for i in range(0,12):
     table.append(i * nb)

 for i in range(len(table)):
     print(str(nb) + "x" + str(i) + " = " + str(table[i]))

Вывод выглядит так:

4x0 = 0
4x1 = 4
4x2 = 8
4x3 = 12
4x4 = 16
4x5 = 20
4x6 = 24
4x7 = 28
4x8 = 32
4x9 = 36
4x10 = 40
4x11 = 44

Что может быть причиной этого? Исходя из VB и C#, поэтому я могу ошибочно принять i за индекс, хотя это значение из массива, но я действительно не понимаю, как я мог бы это исправить. Спасибо!

1 ответ

range() функция не включает верхнюю границу. Итак, когда вы говорите, range(0,12), вы только получите [0,11]. Если вы хотите [0,12], вы должны сделать range(0,13), Обратите внимание, что range(0,13) эквивалентно range(13) потому что по умолчанию нижняя граница равна 0.
Смотрите документацию.

Другие вопросы по тегам