为了练习和更好地理解 for
循环,我设计了一个函数来计算给定数字的阶乘。除了迭代器(循环变量)的角色之外,我得到了几乎所有的东西。
这是我设计的函数:
def main():
print("This program computes the factorial of a number!")
n = eval(input("Enter a whole number: "))
fact = 1
for factor in range(n, 1, -1):
fact = fact * factor
print("The factorial of {} is {}!".format(n, fact))
main()
当我为 6 的阶乘运行程序时,函数打印:
6
的阶乘是 720!
我想了解程序用户给出的输入 n
对迭代器(循环变量)factor
有什么作用和关系?
为了对此进行测试,我删除了迭代器(循环变量)factor
并将其替换为输入变量 n
。
def main():
print("This program computes the factorial of a number!")
n = eval(input("Enter a whole number: "))
fact = 1
for n in range(n, 1, -1):
fact = fact * n
print("The factorial of {} is {}!".format(n, fact))
main()
当我为我在前一段代码中使用的 6
的同一个阶乘运行程序时,函数打印:
2
的阶乘是 720!
当我要求 Python 计算相同的阶乘数时,为什么会得到两个不同的答案。显然,后一段代码有些不对劲,我认为这与输入变量 n
和迭代器(循环变量)factor
之间的关系有关>.
最佳答案
从您的工作代码开始:
def main():
print("This program computes the factorial of a number!")
n = eval(input("Enter a whole number: "))
fact = 1
for factor in range(n, 1, -1):
fact = fact * factor
print("The factorial of {} is {}!".format(n, fact))
main()
添加打印(提示:这是一个非常有用的调试技巧):
def main():
print("This program computes the factorial of a number!")
n = eval(input("Enter a whole number: "))
fact = 1
for factor in range(n, 1, -1):
print(factor) # Add this line
fact = fact * factor
print("The factorial of {} is {}!".format(n, fact))
main()
你应该看到这样的输出:
6
5
4
3
2
The factorial of 6 is 720!
如您所见,factor
变量在每次循环中都会发生变化。它采用您指定的 range()
中的每个连续值。
当您将循环变量更改为 n
时,它会被这些值覆盖。
关于python - Python 中的迭代器(循环变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28610012/