Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проект в конце 3 главы книги Автоматизация рутинных задач с помощью python

Алексей Домашкин Ученик (103), на голосовании 3 месяца назад
Никак не получается сделать первую часть задания. (Там нужно написать функцию collatz) сколько раз не пробовал, все равно после запуска функции я могу просто вводить текст, функция не работает(а она должна выводить определенный текст) Прикрепляю вариант моего кода, подскажите. И вопрос, должна ли вообще работать эта функция? (Я хочу точно удостовериться что написал правильно)Помогите
Голосование за лучший ответ
Асхаб Малина Ученик (188) 4 месяца назад
Функция Collatz – это довольно простая задача. Вот пример реализации алгоритма Collatz на Python:

```python
def collatz(n):
if n <= 0:
return "Введите положительное целое число."

steps = 0
sequence = []

while n != 1:
sequence.append(n)
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
steps += 1

sequence.append(1) # добавляем 1 в последовательность
return steps, sequence

# Пример использования:
try:
number = int(input("Введите положительное целое число: "))
steps, sequence = collatz(number)
print(f"Количество шагов: {steps}")
print("Последовательность:", sequence)
except ValueError:
print("Пожалуйста, введите корректное целое число.")
```

### Объяснение кода:

1. **Функция collatz(n)**: принимает целое число `n`.
2. **Проверка на положительность**: если `n` не положительное, функция возвращает сообщение об этом.
3. **Инициализация переменных**: `steps` для подсчета шагов, `sequence` для хранения последовательности чисел.
4. **Цикл while**: выполняется, пока `n` не станет равным 1. В цикле проверяется, четное `n` или нечетное и преобразуется согласно правилам:
- Четное: делим на 2.
- Нечетное: умножаем на 3 и добавляем 1.
5. **Добавление 1** в последовательность, когда цикл завершен.
6. **Возврат**: функция возвращает количество шагов и саму последовательность.

### Использование функции:

После определения функции вы можете её запустить, просто вызвав функцию и передав ей нужное число. В примере кода я добавил обработку исключений, чтобы убедиться, что введенное значение корректно.

Проверьте, если ваша программа не работает, то, возможно, есть проблема вне самой функции. Убедитесь, что вы правильно вызываете функцию и используете ввод данных согласно коду.
Timur MagerramovМастер (1012) 4 месяца назад
Вот отличный пример, когда человек, ничего не знающий о кодинге, пользуется нейронкой и даже не смотрит на то, что она выдала
inga zajonc Искусственный Интеллект (202827) 4 месяца назад
любая правильно написанная функция работает
Ваша тоже работает, возвращая либо число, делённое на 2, либо утроенное +1, но не всегда.
Timur Magerramov Мастер (1012) 4 месяца назад
 def collatz(number: int) -> int:
e = number // 2 if number % 2 == 0 else number * 3 + 1
print(e)
return e
Похожие вопросы