Нужно написать программу, на вход которой даются четыре числа a, b, c и d, каждое в своей строке.

Рейтинг: 3Ответов: 2Опубликовано: 06.12.2014

Программа должна вывести фрагмент таблицы умножения для всех чисел отрезка [a;b] на все числа отрезка [c;d]. Числа a, b, c и d являются натуральными и не превосходят 10, a≤b, c≤d. Я начала, а как закончить не знаю.

a = int(input())
b = int(input())
c = int(input())
d = int(input())
s=''
if a<=b and c<=d:
for i in range (c, d+1):
s=s+[i]
print('\t',i,end='')
for i in range(a, b+1):
print('\n',i,'\t',s[0]*i,'\t',end='')

Ответы

▲ 3Принят

Если в задании сказано "a≤b, c≤d", значит так оно и есть, дополнительных проверок вида if a<=b and c<=d можно не делать.

# ввод данных
a = int(input())
b = int(input())
c = int(input())
d = int(input())

# приводим ввод к форме a≤b, c≤d, необязательный шаг (смотри выше)
# a, b = (b, a) if a > b else (a, b)
# c, d = (d, c) if c > d else (c, d)

s = ''
# формируем шапку таблицы
for i in range (c, d + 1):
    s += '\t%s' % i

# заполняем строки таблицы
for i in range(a, b + 1):
    s += '\n%s' % i # выводим текущее число из умножаемого столбеца
    for j in range (c, d + 1):
        s += '\t%s' % (i * j) # выводим результат умножения соответствующих чисел

print(s)
▲ 2

Можно так

a = range(int(input()), int(input()) + 1)
b = range(int(input()), int(input()) + 1)
print(" ", *b, sep="\t")
for i in a:
    print(i, *(i * j for j in b), sep="\t")

Вывод:

1
4
5
7
    5   6   7
1   5   6   7
2   10  12  14
3   15  18  21
4   20  24  28