Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 5, 2021 17:42:38

Gastali
Зарегистрирован: 2021-10-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

Всего два дня как начал изучать питон. Абсолютный новичок в программировании. Подскажите где я ошибаюсь в коде и как это исправить?




 n = int(input("number:"))    #ввод числа
while n % 2 > 0:             # Начать цикл, если введенное число нечетное.
    n = 3 * n + 1            # умножить введенное число на 3 и прибавить 1.
    print(n)                 # напечатать итог
    if n % 2 == 0:           # если итог четное
        n = n//2             # разделить итог ровно на 2
        print(n)             # напечатать новый итог
        if n % 2 == 1:       # если новый итог равен 1
            print(n)         # напетать новый итог
            break            # завершить цикл
    else:                    # если, новый итог нечетное число
        continue             # вернуться в начало цикла.    
print("done")

#после ввода нечетного числа, оно изменяется по формуле 3*n+1,
и всегда получается четное число, которое затем делится на 2, пока не получится нечетное.
Если после деления на 2 итог равен 1, то цикл завершается
Если после деления на 2 итог это другое нечетное число, то цикл начинается заново.
Каждый новый итог выводится на экран

Отредактировано Gastali (Окт. 5, 2021 18:02:36)

Офлайн

#2 Окт. 5, 2021 19:14:03

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

 n = int(input("number:"))    #ввод числа
while True:
    if n % 2 != 0:         # если число нечетное
        n = 3 * n + 1      # оно изменяется по формуле и всегда получается четное
        print(n)           # выводится результат
        while n % 2 == 0:  # пока оно четное
            n = n // 2     # делим на 2
            print(n)       # выводим
        if n == 1:         # Если после деления на 2 итог равен 1
            break          # то цикл завершается
        else:              # Если после деления на 2 итог это другое нечетное число,
            continue       #  то цикл начинается заново.
print('done')

Офлайн

#3 Окт. 5, 2021 21:42:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

Gastali
Подскажите где я ошибаюсь в коде и как это исправить?
Для начала нужно точно описать задачу для самого себя же. Иначе, если ты не знаешь, к чему ты идёшь, то ты и не напишешь код, который приведёт тебя к этому. Самое глупое, что можно сделать, - это начать писать код, а потом по нему пытаться понять “а что же я, собственно, делаю-то?”.



Офлайн

#4 Окт. 6, 2021 17:33:59

Gastali
Зарегистрирован: 2021-10-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

py.user.next
Вполне понятна задача и для себя и изложил я ее тут достаточно понятно. Нужно что бы, при вводе нечетного числа, программа выполняла формулу 3*n+1 и печатала итог, если итог четное число то надо поделить на два и так далее, каждый раз когда число нечетное, код действует по формуле, а когда четное, то делит на 2. До тех пор, пока не получится 1. тогда останавливается цикл.

Например:
введенное число 7. тогда программа должна 7*3+1 и напечатать 22, поделить 22 на 2 и напечатать 11, 11*3+1 напечатать 34, 34/2 напечатать 17, 17*3+1 = 52 тоже напечатать. 52 поделить на 2 и напечатать 26, 26 снова на 2 и напечатать 13 и так далее, пока не получится 1.
На экране мы должны увидеть в итоге работы программы вот такую последовательность чисел:

22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
done
Задача думаю очень простая и понятная, для опытного программиста. А вот мне новичку нужна помощь.

Офлайн

#5 Окт. 6, 2021 18:25:47

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

Gastali
А вот мне новичку нужна помощь.
я выше код выкладывал,не нравиться?
 number:7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
done
Process finished with exit code 0

Офлайн

#6 Окт. 7, 2021 00:29:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

  
>>> def f():
...     n = int(input('number: '))
...     while True:
...         if n % 2 != 0:
...             n = 3 * n + 1
...             print(n)
...             while n % 2 == 0:
...                 n //= 2
...                 print(n)
...             if n == 1:
...                 break
...     print('done')
... 
>>> f()
number: 7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
done
>>>



Офлайн

#7 Окт. 8, 2021 00:21:07

Gastali
Зарегистрирован: 2021-10-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите где я ошибаюсь в коде?

xam1816
Спасибо. Почему-то мне показалось что это просто цитирование моего корявого кода. сейчас пригляделся)) понял ошибку. благодарю)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version