使用while循环,我编写了一个过程,该过程将整数作为输入,并打印出一个乘法表,显示所有整数乘法,包括输入数。方程式的打印顺序很重要。
例如,print_multiplication_table(2)给出:
1 * 1
1 * 2
2 * 1
2 * 2
这是我的代码:
def print_multiplication_table(n):
a = 1
b = 1
while a <= n:
while b <= n:
print str(a) + " * " + str(b)
b = b + 1
a = a + 1
然而,这似乎不起作用,因为它只打印出来
1 * 1
1 * 2
有谁知道为什么?谢谢!
答案 0 :(得分:5)
你需要在执行之前初始化内循环的计数器
def print_multiplication_table(n):
a = 1
b = 1 # won't do harm, but doesn't really need now
while a <= n:
b = 1 # <-- note
while b <= n:
print str(a) + " * " + str(b)
b = b + 1
a = a + 1
答案 1 :(得分:3)
考虑使用for
代替while
:
def print_multiplication_table(n):
for a in range(1, n+1):
for b in range(1, n+1):
print str(a) + " * " + str(b)
给出:
1 * 1
1 * 2
2 * 1
2 * 2
使用for
会自动跟踪您的计数器变量并避免遇到您遇到的错误类型(这当然并不意味着您不能使for
- 循环出错,但它是更容易避免你有的错误类型)
答案 2 :(得分:3)
使用Python理解更容易:
>>> print '\n'.join('{} * {}'.format(a,b) for a in range(1,6) for b in range(1,6))
1 * 1
1 * 2
1 * 3
1 * 4
1 * 5
2 * 1
# etc...
或者,如果您想要终端新线:
>>> gen=('{} * {}'.format(a,b) for a in range(1,6) for b in range(1,6))
>>> print '\n'.join(gen),'\n'
我使用了一个单独的gen表达式,只是为了更清楚地用逗号打印。这也有效:
>>> print '\n'.join('{} * {}'.format(a,b) for a in range(1,6) for b in range(1,6)),'\n'
没有理由在代码中对str
进行显式调用。如果不这样做,您仍然可以使用a和b作为整数:
>>> gen=('{} * {} = {:2}'.format(a,b,a*b) for a in range(1,3) for b in range(1,4))
>>> print '\n'.join(gen),'\n'
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6