0

入力として正の整数を取り、入力された数値までのすべての整数の乗算を示す乗算表を出力するプロシージャを定義する必要があります。たとえば、次の出力が必要です。

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 も乗算されません)。

どのような変更を加える必要がありますか? ヒントはありますか?ありがとう!

4

3 に答える 3

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
于 2013-07-21T14:26:23.103 に答える
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

while1 から数値に移動し、数値を で乗算するだけであるため、ループは機能しません。countしたがって、 のようなシーケンスが生成され10x1, 10x2, 10x3...ます。

于 2013-07-21T14:25:05.677 に答える