Я очень новичок в этом. Я только начал программировать на прошлой неделе. Мне нужна элементарная помощь. Мое задание состоит в том, чтобы ввести пять чисел и вывести на печать «нечетное» или «четное» для каждого из них. Вот как я начал:

num = int(input())
if (num % 2) == 0:  
    print('even')
else:
    print('odd')

Как я могу иметь пять чисел на входе? Я не хочу составлять жестко закодированный список; программа должна каждый раз работать с разными числами. Надеюсь, вы понимаете мой вопрос. Спасибо за помощь.

РЕДАКТИРОВАТЬ: Я не должен ничего импортировать, поэтому я не могу использовать import random. Я должен ввести 5 чисел. Например:

ввод

3
5
2
1
33

Вывод

Odd
Odd
Even
Odd
Odd

Итак, я добился некоторого прогресса, но это все еще неправильно.

for _ in range(5): 
    num = int(input()) 
    if (num % 2) == 0:  
        print('even')
    else:
        print('odd')

Теперь я получаю вывод (четный или нечетный) до того, как запишу все числа на входе. Я не знаю, как это изменить. Я хочу написать пять чисел, а затем получить результат. Надеюсь, я объяснил это хорошо. Извините за путаницу.

1
Lostcause 25 Ноя 2022 в 21:38
Как вы думаете, почему список не может каждый раз работать с разными числами?
 – 
Edward Peters
25 Ноя 2022 в 21:40
Также читайте о циклах for.
 – 
Edward Peters
25 Ноя 2022 в 21:41

5 ответов

Просто узнайте что-нибудь новое о понимании списков:

ls = [(print(num, "Even") if (num % 2) == 0 else print(num, "Odd")) for num in range(1,6)]

Вывод:

1 Odd
2 Even
3 Odd
4 Even
5 Odd
0
aVral 25 Ноя 2022 в 22:56

Привет👋🏻 Надеюсь у тебя все хорошо!

Если я правильно понял ваш вопрос, вы пытаетесь добиться чего-то подобного этому:

import random

# you can define your own limits
# or you can use numpy to generate random numbers from the different distributions
number = random.randint(0, 999)
print(f"Current number: {number}.")

print("Even!") if number % 2 == 0 else print("Odd!")
1
Volodymyr Pivoshenko 25 Ноя 2022 в 21:43
ОП хотел повторить это 5 раз и является новичком в программировании, попробуйте отредактировать, чтобы включить базовый синтаксис, а не f-строки и троичные операторы.
 – 
Aarav Dave
25 Ноя 2022 в 21:48

Немного сложновато, но поскольку вы учитесь программировать, вам следует собрать различные спецификации задач, а затем разработать решение.

import random

experiment_to_run = int(input())  # how many times you want to run the experiment, let us say default is 5, but that can be user input as well
lower_bound_of_numbers = int(input()) # lower bound of the integer range
upper_bound_of_numbers = int(input()) # upper bound of the integer range

def print_even_or_odd(experiment_to_run = 5, lower_bound_of_numbers = 1, upper_bound_of_numbers = 10):
    for current_experiment_run in range(experiment_to_run):
        current_number = random.randint(lower_bound_of_numbers, upper_bound_of_numbers) # this generates random integer between lower_bound_of_numbers (inclusive) and upper_bound_of_numbers (exclusive)
        
        if current_number % 2 == 0:
            print ('even')
        else:
            print ('odd')

# dry run 
print_even_or_odd(experiment_to_run, lower_bound_of_numbers, upper_bound_of_numbers)  # feel to add current_number also to the log if needed for debugging purpose
0
Yaman Jain 25 Ноя 2022 в 22:08

Попробуй это:

nums = input('Enter your numbers: ').split()
for num in nums:
    if int(num) % 2 == 0:
        print('even')
    else:
        print('odd')
1
Aarav Dave 26 Ноя 2022 в 00:02
Я, видимо, не должен ничего импортировать. Я должен написать 5 чисел для ввода. поэтому, если я введу 3 5 2 1 33, я должен получить нечетный нечетный четный нечетный нечетный Итак, я добился определенного прогресса, но это все еще неправильно. для _ в диапазоне (5): num=int(input()) if (num % 2) == 0: печатать ('четное') else: печатать ('нечетное')
 – 
Lostcause
25 Ноя 2022 в 23:27
Сделано. Я протестировал свой код, и он работает для ваших нужд.
 – 
Aarav Dave
26 Ноя 2022 в 00:03

Поскольку вы отредактировали свой вопрос, похоже, вам не нужны случайные числа, а вместо этого вы хотите, чтобы пользователь вводил пять чисел подряд.

Кажется, вы хотите, чтобы пользователь сначала ввел все пять чисел, а затем отобразился весь вывод.

Для этого сначала запустите функцию input пять раз, используя цикл for, и добавьте каждый вход в список, а затем используйте другой цикл for, чтобы вывести, является ли каждый из них нечетным. или даже.

Вот код:

# Create a list to store the five numbers
nums = []

# Fill the list with five inputs from the user
for _ in range(5):
    nums.append(int(input()))
    # Explanation of above line:
    # - The `append` function adds a new item to a list
    # - So this line gets input from the user,
    #   turns it into an integer,
    #   and adds it to the list

# Finally, output whether each number is odd or even
# Iterate over the `nums` list using a for loop
for num in nums:
    # The code here will run one time for each item in the `nums` list
    # Each time the code runs, the variable `num` will store the current item
    # So we can do a test on `num` to see if each item is odd or even
    if (num % 2) == 0:
        print(num, "is even")
    else:
        print(num, "is odd")

Выше приведен один из способов выполнения вашей задачи, однако он не соответствует передовым методам по следующим причинам:

  1. Код не разделен на функции, поэтому не так ясно, что делает каждая часть.
  2. Основной код должен находиться под if __name__ == "__main__:", чтобы код выполнялся только тогда, когда он должен
  3. Код выдаст ошибку, если пользователь введет что-то, что не является целым числом. Вместо того, чтобы игнорировать это, мы должны перехватить эту ошибку и попросить пользователя повторить попытку, если он введет что-то недопустимое.

Ниже приведен код, который я, вероятно, написал бы, если бы мне самому дали эту задачу. Это намного дольше и, возможно, излишне для такой простой задачи, но вы должны попытаться выработать хорошие привычки кодирования с самого начала.

#!/usr/bin/env python3
"""This script gets five integers from the user and outputs whether each is odd or even"""

def main():
    nums = [get_user_num() for _ in range(5)]
    for num in nums:
        if is_even(num):
            print(num, "is even")
        else:
            print(num, "is odd")


def get_user_num():
    num = input("Enter an integer: ")
    while True:
        # Repeat until the user enters a valid integer
        try:
            return int(num)
        except ValueError:
            num = input("That was not an integer - please try again: ")


def is_even(num):
    return (num % 2) == 0


if __name__ == "__main__":
    main()

Объяснения некоторых вещей в улучшенном коде:

  • Что делает комментарий в верхней части кода?
  • Как работают функции в Python?
  • Список понятий в Python
  • if __name__ == "__main__"::
    Эта строка запускает код только в том случае, если файл запускается непосредственно как основной файл кода. Если код импортируется другим файлом Python (выполняется косвенно), то эта строка предотвращает запуск кода. Это предотвращает случайное выполнение кода и получение неожиданного результата. Вы можете узнать больше об импорте файлов Python здесь и узнать больше о том, как работает эта строка < a href="https://www.freecodecamp.org/news/if-name-main-python-example/" rel="nofollow noreferrer">здесь.
0
Lecdi 26 Ноя 2022 в 00:38