#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)))