我开始学习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)
答案 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)