我是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代码。我试过这个但是无法解决这个问题。
答案 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)