用while编写一个简单的函数

时间:2013-08-23 00:12:36

标签: python

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

我知道如何开始,但不知道接下来该做什么。我只需要一些算法帮助。 请不要写正确的代码,因为我想学习。而是告诉我逻辑和推理。 以下是我的推理:

  1. 该函数应将所有实数乘以给定值(n)乘以1或小于n或(n-1)
  2. 该函数应将所有实数乘以n(包括n)乘以两个小于n或(n-2)
  3. 该函数应将所有实数乘以n(包括n)乘以小于n或(n-3)的三倍,依此类推......直到我们达到n
  4. 当函数达到n时,函数也应该将所有实数乘以n(包括n)乘以n
  5. 该函数应该停止或在while循环中“break”
  6. 然后该功能必须打印结果
  7. 所以这就是我到目前为止:

    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 
    

    我做错了什么?

3 个答案:

答案 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

=右边的数字应该是微不足道的,因为我们可以通过乘以每行上的其他两个数字来计算它;获取那些是作业的核心。将*的两个操作数视为两个计数器,我们称之为ij。我们可以看到i1计算到3,但每个 ij从{{ 1}}到1(导致总共9行;更一般地,将有n 2 行)。因此,您可以尝试使用嵌套循环,一个循环3(从i1),另一个循环n(从j到{{ 1}})为每个1。在嵌套循环的每次迭代中,您可以以所需格式打印包含nii的字符串。