Контрольные задания > 2. Какие ошибки допущены в программе?
```python
print (Введите число а)
a = int(input())
if a >= 0:
if a 0:
a = 18
else a += 1
else: a= 6
print(a)
input
```
Найдите все ошибки и исправьте их. Опишите на естественном языке, с помощью формулы или блок-схемы алгоритм преобразования исходных данных, используемый в данной программе.
Определите выходные данные при следующих исходных данных:
a) -10
б) 0
в) 10
Вопрос:
2. Какие ошибки допущены в программе?
```python
print (Введите число а)
a = int(input())
if a >= 0:
if a 0:
a = 18
else a += 1
else: a= 6
print(a)
input
```
Найдите все ошибки и исправьте их. Опишите на естественном языке, с помощью формулы или блок-схемы алгоритм преобразования исходных данных, используемый в данной программе.
Определите выходные данные при следующих исходных данных:
a) -10
б) 0
в) 10
Ошибки в программе:
1. `print (Введите число а)` - в Python 3 функция `print` требует круглые скобки для аргументов: `print("Введите число а")`
2. `a = int(input())` - здесь все верно, считываем число, введенное пользователем, и преобразуем его в целое число.
3. `if a >= 0:` - проверка, является ли число неотрицательным.
4. `if a 0:` - Второй `if` должен проверять равенство нулю, а не сравнивать `a` с нулем. Исправлено на `if a == 0:`
5. `a= 6` - отсутствует оператор присваивания `a -= 6`.
6. `input` - Эта строка не нужна. `input()` без аргументов просто ждет ввода от пользователя, но ничего с ним не делает. Ее следует удалить.
Исправленный код:
python
print("Введите число а")
a = int(input())
if a >= 0:
if a == 0:
a = 18
else:
a += 1
else:
a -= 6
print(a)
Описание алгоритма:
1. Программа запрашивает у пользователя ввод целого числа `a`.
2. Если `a` больше или равно 0, то:
* Если `a` равно 0, то `a` присваивается значение 18.
* Иначе (если `a` больше 0), к `a` прибавляется 1.
3. Иначе (если `a` меньше 0), из `a` вычитается 6.
4. Программа выводит значение `a`.
Определим выходные данные для следующих входных данных:
a) a = -10:
Так как -10 < 0, выполняется ветка `else`: `a = a - 6 = -10 - 6 = -16`
Ответ: -16
б) a = 0:
Так как 0 >= 0, выполняется первая ветка `if`. Внутри нее выполняется `if a == 0`. `a` присваивается значение 18.
Ответ: 18
в) a = 10:
Так как 10 >= 0, выполняется первая ветка `if`. Внутри нее `if a == 0` не выполняется, поэтому выполняется `else`: `a = a + 1 = 10 + 1 = 11`
Ответ: 11