python - Python 中的迭代器(循环变量)

标签 python loops variables iterator

为了练习和更好地理解 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/

相关文章:

python - Python 线程中的死锁

python - 如何在传递自定义 user_ns 和横幅时启动 ipython 应用程序实例?

python - 线程内未捕获异常是只杀死线程还是整个进程?

shell - Unix 变量声明

javascript - 非常简单的Javascript。这是什么: "options = options || {};"?

python - 使用多处理时避免重新编译 numba 代码

r - 在 R 如何将具有动态名称的数据框复制到静态命名的数据框

javascript - 在for循环外访问数组

iphone - XCODE - 如何 : UIAlertView (with a text field) on a loop until correct value entered into field?

r - 如何删除r中数字变量的某些数字