我要定义一个过程,它将输入一个正整数,并打印出一个乘法表,显示所有整数乘法,包括输入数。 例如,我需要这个输出:
print_multiplication_table(2)
1 * 1 = 1
1 * 2 = 2
2 * 1 = 2
2 * 2 = 4
所以我试过这个:
def print_multiplication_table(n):
count=0
multiplicador=n
while count<multiplicador:
count+=1
print n,"x", count, "=", n*count
def print_multiplication_table(n):
num=1
print str(num) + ' * ' + str(num) + ' = ' + str(num*num)
while num<n:
siguiente=num+1
conteo=num-1
while conteo<n:
print str(num) + ' * ' + str(siguiente) + ' = ' + str(num*siguiente)
print str(num) + ' * ' + str(siguiente) + ' = ' + str(num*siguiente)
但是这会产生一个永远运行的循环,我不知道如何让它停止。
然后我尝试了一种不同的,更优雅的方法,就像这样:
def print_multiplication_table(n):
count=0
multiplicador=n
while count<multiplicador:
count+=1
print n,"x", count, "=", n*count
但它没有考虑到我乘以之前的数字的乘法(输出是2x1 = 2,2x2 = 4,但不是乘以1x1,也不是1x2)。
我需要做出哪些改变?任何提示? 谢谢!
答案 0 :(得分:6)
最简单的是:
from itertools import product
def pmt(n):
for fst, snd in product(xrange(1, n + 1), repeat=2):
print '{} * {} = {}'.format(fst, snd, fst * snd)
pmt(2)
1 * 1 = 1
1 * 2 = 2
2 * 1 = 2
2 * 2 = 4
答案 1 :(得分:4)
这里需要一个嵌套的for
循环。
>>> def print_multiplication_table(n):
for i in xrange(1, n+1):
for j in xrange(1, n+1):
print "{}x{}={}".format(i, j, i*j)
>>> print_multiplication_table(2)
1x1=1
1x2=2
2x1=2
2x2=4
您的while
循环无法正常工作,因为您从1转到数字并且仅将数字乘以count
,因此会生成类似10x1, 10x2, 10x3...
的序列。
答案 2 :(得分:1)
使用生成器表达式:
r = xrange(1, n+1)
g = (' '.join([str(i), '*', str(j), '=', str(i*j)]) for i in r for j in r)
print ('{}\n'*n*n).format(*g)