写一个Python程序,读取一个正整数n,求1到n之间所有奇数的平均值

Write a Python program that reads a positive integer n and finds the average of all odd numbers between 1 and n

这是问题:

Write a Python program that reads a positive integer n and finds the average of all odd numbers between 1 and n. Your program should not accept a negative value for n.

这是我的代码,奇怪的是它不起作用:

    k = int(input('Enter a positive integer: '))
while k <= 0:
    print('Please enter a positive integer!! \n')
    k = int(input('Enter a positive integer: '))
else:
    b = 1
    sum1 = 0
    while b <= k:
        if b % 2 == 1:
            sum1 = sum1+b
        b += 1
    avg = sum/k
    print(avg)

示例:输入:8 和输出:2.5,而它应该是 4。有什么提示吗?

您在倒数第二行中使用了 sum(内置函数名)而不是 sum1(您的变量名)。此外,您需要计算奇数的总数并使用该数字而不是输入进行除法。

好的,我查看了问题,这里是答案:

k = int(input('Enter a positive integer: '))
while k <= 0:
    print('Please enter a positive integer!! \n')
    k = int(input('Enter a positive integer: '))
else:
    b = 1
    sum1 = 0
    c = 0
    while b <= k:
        if b % 2 == 1: #determines if odd
            sum1 = sum1+b
            c += 1 #variable which counts the odd elements
        b += 1 #counter
    avg = sum1/c
    print(avg)

如果我们使用 while True,程序将 运行 直到它收到一个正数。当我们得到一个正数时,然后我们执行指令并使用 break

关闭循环

1 个版本列表:

n = int(input())

while True:
    if n <= 0:
        n = int(input('Enter a positive number: '))
    else:
        numbers = [i for i in range(1, n + 1) if i % 2 == 1]
        print(sum(numbers) / len(numbers))
        break

2 版本列表:

n = int(input())

while True:
    if n <= 0:
        n = int(input('Enter a positive number: '))
    else:
        numbers = []
        for i in range(1, n+1):
            if i % 2 == 1:
                numbers.append(i)
        break

print(sum(numbers)/len(numbers))

3 版本带计数器

n = int(input())

while True:
    if n <= 0:
        n = int(input('Enter a positive number: '))
    else:
        summ = 0
        c = 0
        for i in range(1, n+1):
            if i % 2 == 1:
                summ += i
                c += 1
        print(summ/c)
        break