试图让它发布以下3行作为结果。没什么,没什么。
数字1
到10
的乘积为:3628800
可被3
整除的第一个3
个数字的乘积为:162
数字0
到-100
的乘积为:0
Start是序列开始的地方,number是结束的地方,space是数字之间的空格(1
是每个数字,2
只是偶数,等等。)
我是初学者,需要一些帮助
这就是我的目标,但我不确定将findproduct定义为什么。我正在考虑制作一个循环并将n =
设置为n+1
,但我仍然不知道从哪里开始:
def findproduct(start, number, space):
# code here
pass
product1 = findproduct(1, 10, 1)
print("The product of the numbers 1 through 10 is:", product1)
product2 = findproduct (2.0, 5, 2)
print("The product of the first 5 even numbers is:", product2)
product3 = findproduct (3, 3, 3)
print("The product of the first 3 numbers divisible by 3 is:", product3)
product4 = findproduct (0.0, 100, -1)
print("The product of the numbers -1 through -100 is:", product4)
答案 0 :(得分:0)
range
会根据start
,stop
和step
为您提供所需的数字。您的stop
似乎是包容性的(其中range
是stop
独有的),因此您需要进行调整,但这并不太难:
def inclusive_range(start, stop, step):
if step < 0:
stop -= 1
else:
stop += 1
return range(start, stop, step)
它可以为您提供您想要的产品数字。您可以使用累加器循环以明显的方式执行此操作:
def find_product(start, stop, step):
prod = 1
for i in inclusive_range(start, stop, step):
prod *= i
return prod
或者使内置插件变得聪明一线(忽略文件顶部的导入):
from functools import reduce
from operator import mul
def find_product(start, stop, step):
return reduce(mul, inclusive_range(start, stop, step), 1)
拼写循环有一些温和的优点;你可以为它prod == 0
添加一个测试,并在发生时提前退出循环;如果在输入中的任何地方出现零,那么无论如何你都不会得到一个非零产品。当然,在Python 3中,range
是一个更强大的对象,你可以预先检查range
中的0并更有效地避免工作:
def find_product(start, stop, step):
values = inclusive_range(start, stop, step)
if 0 in values:
return 0
return reduce(mul, values, 1)