【问题标题】:factorial with for loop in pythonpython中for循环的阶乘
【发布时间】:2017-10-26 03:09:13
【问题描述】:
result = 1
num = 1
while num <= 5: 
    result *= num 
    num = num + 1
print(result) #this gives me 5! 

但是,我想用 for 循环来做到这一点。我试过用这个

result = 1
for num in (1, 6, 1): 
    result *= num 
    print(result) #just to see intermediate calculations
print(result)

我得到的结果 = 6 而不是 120。

1
6
6 

是我得到的输出。

for 循环我做错了什么?

【问题讨论】:

  • 投票结束,因为这是一个印刷错误
  • 您可以使用 range() 或 xrange() 以步长 1 循环 1 到 6。for num in xrange(1, 6, 1):
  • 错过了元组 (1, 6) 前面的 range()。感谢大家的帮助

标签: python for-loop


【解决方案1】:

我很确定您打算将该元组应用于范围函数:

for num in range(1, 6, 1):

虽然range(1, 6) 就足够了。步长为 1 是默认值。

(1, 6, 1) 只是 3 个元素的元组,161

【讨论】:

    【解决方案2】:

    你刚才循环的集合有三个元素 1,6,1。您应该替换为range(1,6)

    【讨论】:

      【解决方案3】:

      问题在于你的 for 循环:

      result = 1
      for num in range(1, 6): 
          result *= num 
          print(result) 
      print(result)
      

      【讨论】:

        【解决方案4】:
        def factorial(n):
            result = 1
            for i in range(1,n):
                i=i+1
                result=result*i
                
            return result
        

        【讨论】:

          【解决方案5】:
          # The solution which you are looking for, named Factorial
          def factorial(n):
              # Initial Number
              result = 1
              # In factorial range must be started by 1
              for num in range(1, n):
                  # the main point is that the result should be 
                  # multiply a number grater than itself
                  result = result * (num + 1)
              return result
          print(factorial(5))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-05-06
            • 1970-01-01
            • 1970-01-01
            • 2016-05-29
            • 1970-01-01
            • 1970-01-01
            • 2020-10-22
            相关资源
            最近更新 更多