The problem below uses the function get_numbers() to read a number of integers from the user. Three unfinished functions are defined, which should print only certain types of numbers that the user entered. Complete the unfinished functions, adding loops and branches where necessary. Match the output with the below sample:
Numbers are: 5 99 -44 0 12
I already figured out how to complete first function. Having a hard time complete odd and negative number comparison.
For some reason
def print_odd_numbers(numbers):
if numbers % 2 == 1:
print('Odd numbers:', numbers)
Is not working?
size = 6
def get_numbers(num):
numbers = []
user_input = input('Enter %s integers:\n' % num)
i = 0
for token in user_input.split():
number = int(token) # Convert string input into integer
numbers.append(number) # Add to numbers list
print(i, number)
i += 1
return numbers
def print_all_numbers(numbers):
# Print numbers
print('Numbers:')
def print_odd_numbers(numbers):
# Print all odd numbers
print('Odd numbers:')
def print_negative_numbers(numbers):
# Print all negative numbers
print('Negative numbers:')
nums = get_numbers(size)
print_all_numbers(nums)
print_odd_numbers(nums)
print_negative_numbers(nums)
Enter 5 integers:
0 5
1 99
2 -44
3 0
4 12
Numbers: 5 99 -44 0 12
Odd numbers: 5 99
Negative numbers: -44
The code isn't working because numbers
is a list of numbers. Try this code:
def print_odd_numbers(numbers):
print('Odd numbers: ')
for n in numbers:
if n % 2 == 1:
print(n, end=' '))
You could also use a list comprehension:
def print_odd_numbers(numbers):
odd = [n for n in numbers if n % 2 == 1]
print('Odd numbers:', ' '.join(map(str, odd)))