Нечетный / четный диапазон в python3.x

#python-3.x

#python-3.x

Вопрос:

Учитывая диапазон ввода (самый низкий / самый высокий) и выбор (нечетный / четный), как я могу напечатать желаемый результат в python? В приведенном ниже коде, похоже, не выполняется условие else

 low = int(input("Lowest number: "))
high = int(input("Highest number: "))
oddeven = input("Do you want to see odd or even numbers: ") 
print(oddeven)

for num in range(low, high):
    if (num % 2 == 0):
        print(num)
    else :
            if (num % 2 == 1):
                print(num)
  

Ответ №1:

Я думаю, что самым простым решением для реализации было бы создать два цикла for , один для even случая и один для odd случая, поэтому вам нужно проверять только один раз, а не для каждой итерации цикла for:

 def get_int_input(prompt: str) -> int:
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("Error: Enter an integer, try again...")


low = get_int_input("Enter the lowest number in the range (inclusive): ")
high = get_int_input("Enter the highest number in the range (inclusive): ")

valid_odd_even_responses = {"odd", "even"}
odd_even_response = ""
while odd_even_response not in valid_odd_even_responses:
    odd_even_response = input(
        "Do you want to see odd or even numbers: ").lower()

if odd_even_response == "odd":
    for num in range(low, high   1):
        if num % 2 == 1:
            print(num)
else:
    for num in range(low, high   1):
        if num % 2 == 0:
            print(num)
  

Пример использования:

 Enter the lowest number in the range (inclusive): -1
Enter the highest number in the range (inclusive): 13
Do you want to see odd or even numbers: even
0
2
4
6
8
10
12
  

Комментарии:

1. Спасибо @Shash Sinha

Ответ №2:

Некоторые мысли:

  • Проверьте свой отступ (посмотрите, что «еще»)
  • «oddeven» бесполезен
  • Вам не нужно num % 2 == 0, просто num % 2, потому что в python 0 уже ‘false’
  • Вам не нужен второй ‘if’, потому что ‘else’ уже выполняет работу, раздваивая поток в вашей программе
  • Если вы учитесь, попробуйте нарисовать свой алгоритм на бумаге и карандаше, прежде чем его внедрять

Счастливого кодирования!

Ответ №3:

Первые две строки в порядке:

 low = int(input("Lowest number: "))
high = int(input("Highest number: "))
  

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

 even = int(input("Do you want to see odd (0) or even (1) numbers: "))
  

Если пользователь хочет четные числа, но low не четные, или наоборот, отрегулируйте его:

 if (even and low % 2 == 1) or (not even and low % 2 == 0):
    low  = 1
  

Шаг, хотя все нечетные или четные числа:

 print("n".join(str(x) for x in range(low, high   1, 2)))