初学者的因子代码

时间:2016-08-17 18:14:05

标签: python

我开始学习Python,并且我有一小部分代码用于输入用户输入的因子。我正在努力理解正在发生的事情背后的逻辑,以便我能更好地理解这个过程。为什么当我更改输出更改的某个变量的位置时? (我正在使用python 2)

user_input = input("enter a positive number")

for i in range(user_input):
    product = 1     #the output changes when I move it here instead of above the for loop
    product = product * (i + 1)    
    print(product)

7 个答案:

答案 0 :(得分:1)

通过

product = 1

在循环内部,您将重新初始化循环的每次迭代的总值。

如果用户输入3, 它会显示1, 2, 3,因为每次迭代只是创建一个值为1的变量产品,并将它乘以(迭代器+1),它只是(1 *(迭代器+1))。

如果你把

product = 1

在循环之外,总值只会在开始时初始化为1,并且您可以正确地求和阶乘的值。

如果用户再次输入3作为输入,它将显示1, 2, 6,因为它将不再乘以(1 *(迭代器+ 1))但是(先前的总和*(迭代器+ 1))

答案 1 :(得分:1)

循环的工作原理如下:

user_input = input("enter a positive number")

for i in range(user_input):
    product = 1                  #Set product to 1
    product = product * (i + 1)  #Increase product
    print(product)               #Print the product

在进行计算之前,每个循环product的值都会重置为1

  

循环1
  product = 1
  product = 1 *(1 + 1)= 2
  循环2
  product = 1
  product = 1 *(1 + 2)= 3

答案 2 :(得分:1)

这不会回答你的问题...但我发现因子递归最容易考虑因素

function user_exists(mysqli $db, $username){
    $username = htmlspecialchars($username);
    $sql = "SELECT username FROM ***** WHERE username = ?";
    $prep = $db->prepare($sql);
    $prep->bind_param('s', $username);
    $prep->execute();
    $result = $prep->get_results();
    $errors = [];
    if($result->num_rows > 0){
        $errors[] = 'Käyttäjätunnus \''. $username . '\' on jo otettu.';
    }
    return $errors;
}

答案 3 :(得分:0)

如果它在循环中,这意味着每次循环迭代,产品将被重置为1.因此,您最终得到的结果就像您只运行循环的最后一次迭代一样。换句话说,产品不会累积。

答案 4 :(得分:0)

那是因为每次for循环运行时,你都要设置:

product = 1

答案 5 :(得分:0)

在循环的每次迭代中,产品都会重置为1。

答案 6 :(得分:0)

我认为这就是你想要做的。

user_input = int(input("enter a positive number"))
product = 1  
for i in range(user_input):
    product = product * (i + 1)    
    print(product)

但是当你将 product = 1 放入循环中时,每次循环都以product = 1开始,这会删除之前的生产。 wokr喜欢这个

user_input = int(input("enter a positive number")) 
for i in range(user_input):
    product = i + 1   
    print(product)