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




 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 итог это другое нечетное число, то цикл начинается заново.
Каждый новый итог выводится на экран
xam1816
 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')
py.user.next
Gastali
Подскажите где я ошибаюсь в коде и как это исправить?
Для начала нужно точно описать задачу для самого себя же. Иначе, если ты не знаешь, к чему ты идёшь, то ты и не напишешь код, который приведёт тебя к этому. Самое глупое, что можно сделать, - это начать писать код, а потом по нему пытаться понять “а что же я, собственно, делаю-то?”.
Gastali
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
Задача думаю очень простая и понятная, для опытного программиста. А вот мне новичку нужна помощь.
xam1816
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
py.user.next
  
>>> 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
>>>
Gastali
xam1816
Спасибо. Почему-то мне показалось что это просто цитирование моего корявого кода. сейчас пригляделся)) понял ошибку. благодарю)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB