对于Python中的循环工作,但没有做它的工作

时间:2017-01-21 14:44:05

标签: python for-loop parameters

我是Python的新手,我想开始学习它,在这里我尝试重写我在C#中编写的一些代码。程序计算阶乘,所以如果我输入6则为720.这是python代码:

   import array

def countFactorial(tal):
    summ = 1

    for i in range(len(tal)):
            summ *= i
            i += 1
    print("{} is".format(tal))
    print("{}".format(summ))
    return summ

def main():

    lst = []
    for i in range(5):
        values = input("Type in a value: ")
        lst.append(values)

    for s in lst:
        countFactorial(s)
       # print(s)


main()

如果用户输入例如6,这就是现在的程序将输入的内容:“6为0”(5次)。

这是我尝试从C#重写的for循环的一部分,在这里不起作用。显然,“tal”作为参数在C#中传递。

for (int i = 1; i <= tal; i++)
        {
            summ *= i;

        }
        Console.WriteLine(tal + " is " + summ);

我认为我需要的是一个while循环,需要通过例如6次来破坏summ代码。我试过这个但是无法解决这个问题。

1 个答案:

答案 0 :(得分:1)

没有明确起始值的范围从0开始,因此您第一次将1乘以0。从那里开始summ逗留0

另一方面,您的C#代码从1开始并包含结束值。

也可以range()启动您的Python 1对象,然后停留在tal + 1

summ = 1
for i in range(1, tal + 1):
    summ *= i
在乘以:

时,

将{1}添加到i

summ = 1
for i in range(tal):
    summ *= (i + 1)

您添加的i += 1是多余的; i被设置为下一次迭代范围内的下一个值,替换之前绑定的i

你需要传入整数; Python 3中的input()返回字符串,因此您需要先将其转换为整数:

for i in range(5):
    value = int(input("Type in a value: "))
    lst.append(value)