Тема Практика Программирования
01 Исправление / дополнение кода
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела практика программирования
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#51263

Сколько ошибок в следующей программе и какая из них будет найдена питоном первой?

def f(a):
    return a * b
def g(b):
    return b
c = [0]
for i in range1, 10):
    c[i] = f(i) + g(i)
print(c + "hello")

В ответе укажите количество ошибок и тип первой ошибки, которую выдаст программа.

Показать ответ и решение
  1. return a * b — непонятно, что такое b NameError
  2. range1, 10): — не хватает скобки SyntaxError
  3. c[i] i > 0 — обращение к несуществующему индексу IndexError
  4. print(c + "hello") — сложение массива и строки T ypeError
Ответ: 4 SyntaxError

Ошибка.
Попробуйте повторить позже

Задача 2#51261

Сколько ошибок в следующей программе и какая из них будет найдена питоном первой?

def f():
    for i in range(100):
        if i % 10 == 0
            print(1)
             f()

x = f()
print(x)

В ответе укажите через пробел количество ошибок и тип первой ошибки, которую выдаст программа.

Показать ответ и решение
  1. if i % 10 == 0 — отсутствует двоеточие SyntaxError
  2. _f() — лишний пробел IndentationError
  3. функция ничего не возвращает и имеет точки выхода, но постоянно вызывает саму себя RecursionError
Ответ: 3 SyntaxError

Ошибка.
Попробуйте повторить позже

Задача 3#51260

Стасян хотел найти сумму целых чисел, записанных в файл, но что-то пошло не так, его код выдает ошибку. Какой тип у данной ошибки и как ее исправить?

f = open("1.txt")

a = []
for i in f:
    a.append(i)
summa = 0
for i in range(len(a)):
    summa += a[i]
print(summa)

В ответе укажите тип ошибки и исправленную строчку.

Показать ответ и решение

Стасян забыл, что необходимо из строк сделать числа, когда достаешь их из файла.

Ответ: TypeError a.append(int(i))

Ошибка.
Попробуйте повторить позже

Задача 4#51259

Какую ошибку выдаст следующий код?

from functools import cache

def moves(heap):
    a, b = heap
    return (a - 1, b), (a // 2, b), (a, b - 1), (a, b // 2)

@cache
def game(heap):
    if sum(heap) <= 12:
        return ’END’
    elif any(game(x) == ’END’ for x in moves(heap)):
        return ’P1’

for s in range(100, 3, -1):
    if game((9, s)) == ’V1’:
        print(s)

В ответе напишите тип ошибки.

Показать ответ и решение

Когда любая из переменных a  или b  дойдет до 0  , операция деления на 2  будет приводить числа из пары (0,x)  в пару (0,x)  (застревание в рекурсии).

Ответ: RecursionError

Ошибка.
Попробуйте повторить позже

Задача 5#51258

Родион написал следующую программу:

f = open("1.txt")
n = int(f.readline())
print(n + 1)

Данная программа выдала ошибку: ValueError: invalid literal for int() with base 10: ’127.12’.

Какую строчку кода и как следует переписать, чтобы программа работала корректно и выдавала 128.12  .

В ответе напишите номер строчки и ее исправленный вид через пробел.

Показать ответ и решение

Ошибка говорит о том, что в файле содержится строка с точкой, точку превратить в int нельзя, но можно превратить в вещественное число, если написать float.

Ответ: 2 n = float(f.readline())

Ошибка.
Попробуйте повторить позже

Задача 6#51257

Какую ошибку выдаст следующая программа и как следует исправить строку, выдающую ошибку?

summa = 0
for i in range(100):
    summa += i
    if i % 2 == 0:
        summa -= 2 * i
print(summa)
for j in range(1000):
    if j % 100 == 0:
        summs *= 2
print(summa)

В ответе через пробел напишите тип ошибки и исправленную строчку.

Показать ответ и решение

В программе используется неизвестная переменная summs, ее следует заменить на summa.

Ответ: NameError summa *= 2

Ошибка.
Попробуйте повторить позже

Задача 7#51254

Ярослав написал следующую программу для поиска суммы чисел от 1  до 100  включительно.

summa = 0
for i in (1, 100):
    summa += i
print(summa)

Есть ли ошибка в данном коде? Если программа написана правильно, то в ответе напишите 0  , иначе напишите исправленную строчку целиком.

Показать ответ и решение

Ярослав забыл, что для обозначения диапазона нужно писать range.

Ответ: for i in range(1, 101):

Ошибка.
Попробуйте повторить позже

Задача 8#51253

Какой тип ошибки выдаст следующая программа?

def f(a, i):
    return a[i] + f(a, i + 1)

a = [1, 2, 3, 4, 5]
print(f(a, 0))

Показать ответ и решение

Функция f  складывает элементы массива, но граница складывания не указана, программа будет обращаться каждый раз к правому элементу, пока не выйдет за пределы массива.

Ответ: IndexError

Ошибка.
Попробуйте повторить позже

Задача 9#51252

Выдаст ли ошибку следующая программа?

count = 0
summa = 0
i = 0
while i < 102:
    summa += i
    count -= 1
    if i % 3 == 0:
        count += 3
    i += 1
print(summa / count)

Если программа не выдаст ошибку, то напишите в ответе 0, иначе напишите тип ошибки, которую выдаст программа.

Показать ответ и решение

В данной программе каждое число кратное трем увеличивает счетчик на 3  , каждое число уменьшает счетчик на  1  . Всего чисел кратных 3  будет 34  , получается, что count = 34 ⋅3 − 102 = 0  , тип ошибки: ZeroDivisionError

Ответ: ZeroDivisionError

Ошибка.
Попробуйте повторить позже

Задача 10#42947

У Бараша наступил творческий кризис. Он решил отвлечься от поэзии и окунуться с головой в программирование, тем более что лишние морковки никому еще не вредили. Бараш хотел написать программу, которая находит сумму чисел от 1  до N  включительно, но что-то пошло не так и его программа работает неправильно. Найдите количество символов, которые нужно дописать, чтобы программа работала правильно. Пробелы считать не нужно.

  n = input()
  s = 0
  for i in range(1, n):
      s += i
  print(s)

Показать ответ и решение
  n = int(input()) # используем int(), иначе это n будет строкой
  s = 0
  for i in range(1, n + 1): # range(1, n) идет до n - 1
      s += i
  print(s)

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 11#37719

Какие параметры sep и end нужно указать в программе (вместо ???), чтобы получилась строка: "4 * 5 = 20". В ответ запишите сначала параметр sep, потом параметр end через пробел. Важно: программа должна быть синтаксически верной после замены ???.

a = 4
b = 5
c = 20
print(a, b, sep=???, end=???)
print(c)

Показать ответ и решение

Между 4 и 5 должен возникнуть знак ’ * ’, поэтому sep=’ * ’. После вывода 4 и 5 нужно закончить строку на символ ’ = ’, чтобы следующий вывод был после него

Варианты правильных ответов:
  1. ' * ' ' = '
  2. " * " " = "
  3. ' * ' " = "
  4. " * " ' = '

Ошибка.
Попробуйте повторить позже

Задача 12#37718

Укажите название параметра функции print, который задает символ окончания строки при выводе аргументов

Показать ответ и решение

Таким параметром является end. Например: print(3, 4, end=’!’) выведет 3 4!

Ответ: end

Ошибка.
Попробуйте повторить позже

Задача 13#37717

Укажите название параметра функции print, который задает разделитель при выводе аргументов

Показать ответ и решение

Таким параметром явлется sep. Например: print(3, 4, sep=’*’) выведет 3*4

Ответ: sep

Ошибка.
Попробуйте повторить позже

Задача 14#29926

КрУтОй пРоГрАмМиСт написал функцию подсчёта суммы цифр в числе, но забыл про число r:

def sum_digit(num):  
    s = 0  
    r = ???  
    while num > 0:  
        s += num % r  
        num //= r  
 
    return s  
 
print(sum_digit(555))  

Напишите, чему должно быть равно значение переменной r, чтобы программа посчитала сумму числа 555 верно (и выдала ответ 15). В ответ запишите только одно число.

Показать ответ и решение

Мы можем получать каждую последнюю цифру числа через операцию num%10

Ответ: 10

Ошибка.
Попробуйте повторить позже

Задача 15#27060

Дополните фрагмент из программы на Python, которая вводит с клавиатуры число, пока не введено чётное или оканчивающееся на 5 число:

x = int(input())  
while (...):  
    x = int(input())  

В ответ запишите условие внутри цикла while. Старайтесь соблюдать стиль кода, в котором переменные, знаки и операторы разделены между собой одним пробелом.

Показать ответ и решение

Ответом может служить один из следующих вариантов:

x % 2 != 0 and x % 10 != 5

x % 10 != 5 and x % 2 != 0

Варианты правильных ответов:
  1. x % 2 != 0 and x % 10 != 5
  2. x % 10 != 5 and x % 2 != 0

Ошибка.
Попробуйте повторить позже

Задача 16#27059

Дополните фрагмент из программы на Python, которая выводит все числа в отрезке [8, 44]:

x = 8
while (...):
    print(x)
    x = x + 1

В ответ запишите условие внутри цикла while. Старайтесь соблюдать стиль кода, в котором переменные, знаки и операторы разделены между собой одним пробелом.

Показать ответ и решение

Ответом может служить один из следующих вариантов:

x != 45

x <= 44

x < 45

Варианты правильных ответов:
  1. x != 45
  2. x <= 44
  3. x < 45
Рулетка
Вы можете получить скидку в рулетке!