Вы делаете nb'*'
, что эквивалентно 7 '*'.Оператора сопоставления int / str нет, я думаю, вы хотите:
print(i+1 , "*" , nb , "=" , (i+1)*nb*'*')
, но вы действительно не понимаете эту программу.Я бы, вероятно, использовал что-то вроде:
def table(multiplier=7, maximum=20):
for i in range(1, maximum+1):
answer = i * multiplier
if (answer) % 3 == 0:
print("%d * %d = %s" % (i, multiplier, '*' * answer))
else :
print("%d * %d = %d" % (i, multiplier, answer))
, поскольку он имеет четкие имена переменных, позволяет передавать конкретные множители и использует более питонический цикл.