Python家庭作业分配要求我编写一个函数“将输入作为正整数,并打印出一个乘法,表格显示所有整数乘法,包括输入数字。”(同时使用while环)
# This is an example of the output of the function
print_multiplication_table(3)
>>> 1 * 1 = 1
>>> 1 * 2 = 2
>>> 1 * 3 = 3
>>> 2 * 1 = 2
>>> 2 * 2 = 4
>>> 2 * 3 = 6
>>> 3 * 1 = 3
>>> 3 * 2 = 6
>>> 3 * 3 = 9
我知道如何开始,但不知道接下来该做什么。我只需要一些算法帮助。 请不要写正确的代码,因为我想学习。而是告诉我逻辑和推理。
以下是我的推理:
所以这就是我到目前为止:
def print_multiplication_table(n): # n for a number
if n >=0:
while somehting:
# The code rest of the code that I need help on
else:
return "The input is not a positive whole number.Try anohter input!"
编辑:以下是我所有人的精彩答案后的内容
"""
i * j = answer
i is counting from 1 to n
for each i, j is counting from 1 to n
"""
def print_multiplication_table(n): # n for a number
if n >=0:
i = 0
j = 0
while i <n:
i = i + 1
while j <i:
j = j + 1
answer = i * j
print i, " * ",j,"=",answer
else:
return "The input is not a positive whole number.Try another input!"
还没完成! 例如:
print_multiplication_table(2)
# The output
>>>1 * 1 = 1
>>>2 * 2 = 4
而不是
>>> 1 * 1 = 1
>>> 1 * 2 = 2
>>> 2 * 1 = 2
>>> 2 * 2 = 4
我做错了什么?
答案 0 :(得分:4)
我对while
循环要求感到有点生气,因为for
循环在Python中更适合这种情况。但学习就是学习!
让我们思考一下。为什么要While True
?如果没有中断声明,我将永远不会终止,我认为这有点蹩脚。另一个条件怎么样?
变量怎么样?我想你可能需要两个。每个要加倍的数字一个。并确保在while
循环中添加它们。
如果您需要更多帮助,我很乐意添加此答案。
你的逻辑非常好。但这是我的总结:
当2个数字的乘积为n * n
时停止循环。
同时,打印每个号码及其产品。如果第一个数字不是n,则递增它。一旦那是n,开始递增第二个。 (这可以使用if语句完成,但嵌套循环会更好。)如果它们都是n,while
块将会中断,因为条件将被满足。
根据你的评论,这里有一小段提示 - 伪代码:
while something:
while something else:
do something fun
j += 1
i += 1
i和j的原始分配应该去哪里?什么是东西,什么东西,还有什么好玩的东西?
答案 1 :(得分:2)
使用嵌套循环可以更好地实现此问题,因为您有两个计数器。首先找出两个计数器的限制(开始值,结束值)。在函数开头将计数器初始化为下限,并测试while循环中的上限。
答案 2 :(得分:2)
能够产生特定输出的第一步是识别输出中的模式。
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
=
右边的数字应该是微不足道的,因为我们可以通过乘以每行上的其他两个数字来计算它;获取那些是作业的核心。将*
的两个操作数视为两个计数器,我们称之为i
和j
。我们可以看到i
从1
计算到3
,但每个 i
的,j
从{{ 1}}到1
(导致总共9行;更一般地,将有n 2 行)。因此,您可以尝试使用嵌套循环,一个循环3
(从i
到1
),另一个循环n
(从j
到{{ 1}})为每个1
。在嵌套循环的每次迭代中,您可以以所需格式打印包含n
,i
和i
的字符串。