Как написать программу, которая выводит все положительные целочисленные значения от 1 до входного числа и переворачивает каждую пару чисел?

#python #loops #variables

Вопрос:

Мой код почти работает:

 number = int(input("Please type in a number: "))
 
a = 2
b = 1
 
while a in range(number) or b in range(number):
    print(a)
    print(b)
    a  = 2
    b  = 2
 

с вводом 6 все работает так, как должно:

 Please type in a number: 6
2
1
4
3
6
5
 

но с вводом 5 это не так, и 2 1 4 3 вместо этого отображается последовательность 2 1 4 3 5

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

1. Что именно пошло не так с результатом для ввода 5 ? Как вы думаете, почему это происходит — откуда берется неправильный вывод? По вашему мнению, что особенного в значении 5 , из-за которого код не работает? Можете ли вы найти другие значения, из-за которых код не работает должным образом? Вы видите шаблон? Можете ли вы придумать правило для определения этого? Можете ли вы написать для этого код? Если вы обнаружите, что входное число вызывает проблему, можете ли вы придумать способ учесть это в коде?

2. при вводе 5 отображается последовательность 2 1 4 3 вместо 2 1 4 3 5

Ответ №1:

Это должно выполнить вашу работу.

 n = int(input())
for i in range(1, n 1, 2):
    if i 1 <= n:
        print(i 1)
    print(i)
 

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

1. Объясните логику, добавив комментарии, чтобы другие могли понять это намного лучше.

2. В цикле for мы перебираем все нечетные числа вплоть до n (1, 3, 5 …) и печатаем пару последовательных чисел (i 1 — четный номер сначала). Поскольку мы хотели печатать только числа до n, мы проверяем, меньше ли i 1 или равно n (p.s. внутри цикла for значение i всегда меньше или равно n, поэтому нам просто нужно было убедиться, что i 1 тоже соответствует этому условию).

Ответ №2:

вы можете сделать это с помощью функции range . Вот упрощенная версия:

 acc = []
for i in range(1, number, 2):
    acc.append(i 1)
    acc.append(i)
if number % 2:  # if your number is odd then add the last number manually
    acc.append(number)
 

Ответ №3:

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

 number = int(input("Please type in a number: "))

a = 2
b = 1

while a in range(number) and b in range(number):
    print("Original a", a)
    print("Original b", b)
    a  = 2
    print("Current a", a)
    b  = 2
    print("Current b", b)