好的,为了清晰起见,编辑很抱歉。
我需要计算1和n之间的数字(我们会说2)的出现次数(用户输入的正数)。这包括每次给定的数字可以进入1到n之间的每个数字。
因此每个数字中的每个实例都有2个,最多为n。因此,10分为10分,加上4分9分,4分8分,3分7分,3分6分,2分5分,2分4分,1分3分,1分2分。剩余无所谓,我只是需要计算2s。
所以输入10的用户应该打印25,如果我的数学是正确的。
我是新人,完全无能为力。
截至目前,我基本上要求用户输入一个数字。
n = int(输入(“输入介于1和1000之间的正数”))
我成功地将我的代码除以9,但这并不是我想要做的。我想我需要将1和n之间的所有内容转换为字符串?那会使用像1:n这样的范围吗?这甚至可能吗?
然后我可以计算一定数量的多少?
谢谢!
答案 0 :(得分:1)
你的意思是这些吗?
def count(n):
occurrences = 0
for i in range(n, 0, -1): # i -> n, n-1, n-2, ... 3, 2, 1
occurrences += i//2 # add whole number of 2's in this value of i
return occurrences
print(count(10)) # 25
print(count(9)) # 20
如果这样做是正确的,可以优化并缩短为:
def count(n):
return sum(i//2 for i in range(n, 0, -1))
将内置的sum()
函数应用于generator expression
。
range(n, 0, -1)
是一个iterator,可以生成从n
到1
向后的所有数字 - 这是我用过的,因为这就是你描述你想要的内容。由于按顺序执行并不重要,因此使用range(1, n+1)
生成序列的升序(1, 2, 3, ... n-2, n-1, n
)可能更好(更简单)。