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

Question:

This is the question:

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.

And here is my code, which curiously doesn’t work:

    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)

Example: input: 8 and output: 2.5, while it should be 4. Any tips?

Asked By: George Tsakoumakis

||

Answers:

You have used sum (builtin function name) instead of sum1 (your variable name) in the 2nd last line. Additionally, you need to count the total number of odd numbers and divide using that number instead of the input.

Answered By: M Hassan

Okay I reviewed the question and here is the answer:

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)
Answered By: George Tsakoumakis

if we use while True, the program will run until it receives a positive number. and when we get a positive number, then we execute the instructions and turn off the loop using a break

1 version with list:

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 version with list:

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 version with counter

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
Answered By: nrameyka
sum = int(input("Enter a positive integer: "))
Oddtotal = 0

for number in range(1, sum+1):
    if(number % 2 != 0):
        print("{0}".format(number))
        Oddtotal = Oddtotal + number
Answered By: Taylor Kelly
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.