Программа печатает строку программа печатает число интерпретатор выдает ошибку

Соотнеси фрагменты кода и категории.
Кто-то перепутал наши программы! Помоги разложить их по папкам.

Программа печатает строку

Программа печатает число

Интерпретатор выдаёт ошибку

Всего: 17    1–17

Добавить в вариант

Задания Д24 C1 № 5532

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

sum = 0

WHILE N >= 9

    digit = N MOD 10

    sum = sum + digit

    N = N 10

WEND

PRINT sum

END

var N: longint;

    digit, sum: integer;

begin

    readln(N);

    sum := 0;

    while N >= 9 do

    begin

        digit := N mod 10;

        sum := sum + digit;

        N := N div 10;

    end;

    writeln(sum);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, sum;

    cin >> N;

    sum = 0;

    while (N >= 9)

    {

        digit = N % 10;

        sum = sum + digit;

        N = N / 10;

    }

    cout « sum « endl;

}

алг

нач

    цел N, digit, sum

    ввод N

    sum := 0

    нц пока N >= 9

        digit := mod(N, 10)

        sum := sum + digit

        N := div(N, 10)

    кц

    вывод sum

кон

Python

n = int(input())

sum = 0

while n >= 9:

    digit = n % 10

    sum += digit

    n //=10;

print(sum)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 352.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

3.   Укажите одно число для которого эта программа будет работать верно.

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Дальний Восток. Вариант 3.


Задания Д24 C1 № 5468

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = N mod 10

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := N mod 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = N % 10;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := mod(N, 10)

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = n % 10

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 532.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Сибирь. Вариант 1.


Задания Д24 C1 № 5500

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N > 9

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N 10

WEND

PRINT max digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N > 9 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max_digit = 9;

    while (N > 9)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N /10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N > 9

         digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

    N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 9

while n > 9:

    digit = n % 10

    if max_digit < digit:

        max_digit = digit

    n //= 10;

print(max_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 738.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Урал. Вариант 1., ЕГЭ по информатике 30.05.2013. Основная волна. Урал. Вариант 2., ЕГЭ по информатике 30.05.2013. Основная волна. Урал. Вариант 3., ЕГЭ по информатике 30.05.2013. Основная волна. Урал. Вариант 4.


Задания Д24 C1 № 5596

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = 0

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := 0;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = 0;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := 0

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = 0

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 429.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Сибирь. Вариант 2.


Задания Д24 C1 № 5692

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 10

WHILE N >= 10

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main ()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max digit = 10;

    while (N >= 10)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N / 10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 10

    нц пока N >= 10

        digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 10

while n >= 10:

    digit = n % 10

    if max_digit < digit:

        max_digit = digit

    n //= 10

print(max_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 528.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Сибирь. Вариант 5.


Задания Д24 C1 № 6014

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit > max_digit THEN

        max_digit = digit

    END IF

    N = N 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit > max_digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit > max_digit)

            max_digit = digit;

        N = N /10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit > max_digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 9

while n >= 10:

    digit = n % 10

    if digit > max_digit:

        max_digit = digit

    n //= 10

print(max_digit)

Последовательно выполните следующее.

1.   Напишите, что выведет эта программа при вводе числа 423.

2.   Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: Демонстрационная версия ЕГЭ—2014 по информатике.


Задания Д24 C1 № 5372

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 1

N = N 10

sum = sum + 1

WEND

PRINT sum

END

var N: longint;

sum: integer;

begin

readln(N);

sum := 1;

while N > 1 do

begin

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int sum;

cin >> N;

sum = 1;

while (N > 1)

{

N = N /10;

sum = sum + 1;

}

cout « sum « endl;

}

алг

нач

цел N, sum

ввод N

sum := 1

нц пока N > 1

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Python

n = int(input())

sum = 1

while n > 1:

    n //= 10

    sum += 1

print(sum)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 938.

2.  Укажите одно число для которого эта программа будет работать верно.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Дальний Восток. Вариант 1.


Задания Д24 C1 № 6199

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма чётных цифр в десятичной записи этого числа или 0, если чётных цифр в записи нет. Ученик написал такую программу:

Бейсик Паскаль

DIM N AS LONG

INPUT N

S = 0

WHILE N > 1

IF N MOD 2 = 0

S = N MOD 10

END IF

N = N 10

WEND

PRINT S

END

var N: longint;

s: integer;

begin

readln(N);

s := 0;

while N > 1 do begin

if N mod 2 = 0 then begin

s := N mod 10;

end;

N := N div 10;

end;

write(s);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

long int N;

int s;

cin >> N;

s = 0;

while (N > 1) {

if (N%2 == 0) {

s = N % 10;

}

N = N / 10;

}

cout « s « endl;

}

алг

нач

цел N, s

ввод N

s := 0

нц пока N > 1

если mod(N,2) = 0 то

s := mod(N,10)

все

N := div(N,10)

кц

вывод s

кон

Python

N = int(input())

s = 0

while N > 1:

    if N % 2 == 0:

        s = N % 10

    N //= 10

print(s)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 1984.

2.Приведите пример числа, при вводе которого программа выдаст верный ответ.

3.  Найдите в программе все ошибки (их может быть одна или несколько).

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.


Задания Д24 C1 № 7796

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

Бейсик Python

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + 1

x = x MOD 2

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+1

    x = x % 2

print(cnt)

Паскаль Алгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + 1;

x := x mod 2

end;

writeln(cnt)

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+1

x := mod(x, 2)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + 1;

x = x % 2;

}

cout « cnt « endl;

}

Последовательно выполните следующее:

1.  Напишите, что выведет эта программа при вводе числа 6.

2.  Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Задания Д24 C1 № 5884

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit < min_digit THEN

        digit = min_digit

    END IF

    N = N 10

WEND

PRINT min_digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit < min_digit then

            digit := min_digit;

        N := N div 10;

    end;

    writeln(min_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit < min_digit)

            digit = min_digit;

        N = N / 10;

    }

    cout << min_digit << endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit < min_digit то

            digit := min_digit

        все

        N := div(N, 10)

    кц

    вывод min_digit

кон

Python

n = int(input())

min_digit = 9

while n >= 10:

    digit = n % 10

    if digit < min_digit:

        digit = min_digit

    n //= 10

print(min_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 823.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Центр. Вариант 2.


Задания Д24 C1 № 5948

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 0

WHILE N > 0

    digit = N MOD 10

    IF digit < min_digit THEN

        min_digit = digit

    END IF

    N = N 10

WEND

PRINT digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit < min_digit then

            min_digit := digit;

        N := N div 10;

    end;

    writeln(digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit < min_digit)

            min_digit = digit;

        N = N / 10;

    }

    cout « digit « endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 0

    нц пока N > 0

        digit := mod(N, 10)

        если digit < min_digit то

            min_digit := digit

        все

        N := div(N, 10)

    кц

    вывод digit

кон

Python

n = int(input())

min_digit = 0

while n > 0:

    digit = n % 10

    if digit < min_digit:

        min_digit = digit

    n //= 10

print(digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 862.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Центр. Вариант 4.


Задания Д24 C1 № 9659

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 109, и выводится произведение его цифр. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM A AS LONG

DIM pr AS LONG

INPUT A

pr = 0

WHILE A >= 10

  pr = pr * (A MOD 10)

  A = A 10

WEND

PRINT pr

END

var A,pr: longint;

begin

  readln(A);

  pr := 0;

  while A >= 10 do

  begin

    pr:=pr * (A mod 10);

    A := A div 10;

  end;

  writeln(pr);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

  long int A,pr;

    cin >> A;

  pr = 0;

  while (A >= 10)

  {

    pr = pr * (A%10);

    A = A /10;

  }

  cout « pr « endl;

}

алг

нач

  цел A, pr

  ввод A

  pr := 0

  нц пока A >= 10

    pr := pr * mod (A, 10)

    A := div(A, 10)

  кц

  вывод pr

кон

Python

A = int(input())

pr = 0

while A >= 10:

    pr = pr * (A % 10)

    A //= 10

print(pr)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 123.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько).

Для каждой ошибки:

а)  выпишите строку, в которой сделана ошибка;

б)  укажите, как исправить ошибку: приведите правильный вариант строки.

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


Задания Д24 C1 № 5436

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования).

Бейсик Паскаль

DIM N AS LONG

INPUT N

sum = 0

WHILE N >= 9

N = N 10

sum = sum + 1

WEND

PRINT sum

END

var N: longint;

sum: integer;

begin

readln(N);

sum := 0;

while N >= 9 do

begin

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int sum;

cin >> N;

sum = 0;

while (N >= 9)

{

N = N / 10;

sum = sum + 1;

}

cout « sum « endl;

}

алг

нач

цел N, sum

ввод N

sum := 0

нц пока N >= 9

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Python

N = int(input())

sum = 0

while N >= 9:

    N //= 10

    sum += 1

print(sum)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 584.

2.  Укажите одно число для которого эта программа будет работать верно.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Дальний Восток. Вариант 4.


Задания Д24 C1 № 5852

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 0

WHILE N > 0

    digit = N MOD 10

    IF digit > min_digit THEN

        min_digit = digit

    END IF

    N = N 10

WEND

PRINT min_digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit > min_digit then

            min_digit := digit;

        N := N div 10;

    end;

    writeln(min_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main ()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit > min_digit)

            min_digit = digit;

        N = N / 10;

    }

    cout « min_digit « endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 0

    нц пока N > 0

        digit := mod(N, 10)

        если digit > min_digit то

            min_digit := digit

        все

        N := div(N, 10)

    кц

    вывод min_digit

кон

Python

N = int(input())

min_digit = 0

while N > 0:

    digit = N % 10

    if digit > min_digit:

        min_digit = digit

    N //= 10;

print(min_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 461.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Центр. Вариант 1.


Задания Д24 C1 № 5980

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 9

WHILE N >= 10

digit = N MOD 10

IF digit < min_digit THEN

min_digit = digit

END IF

N = N 10

WEND

PRINT digit

END

var N: longint;

digit, min_digit: integer;

begin

readln(N);

min_digit := 9;

while N >= 10 do

begin

digit := N mod 10;

if digit < min_digit then

min_digit := digit;

N := N div 10;

end;

writeln(digit);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int digit, min_digit;

cin >> N;

min_digit = 9;

while (N >= 10)

{

digit = N % 10;

if (digit < min_digit)

min_digit = digit;

N = N / 10;

}

cout « digit « endl;

}

алг

нач

цел N, digit, min_digit

ввод N

min_digit := 9

нц пока N >= 10

digit := mod(N, 10)

если digit < min_digit то

min_digit := digit

все

N := div(N, 10)

кц

вывод digit

кон

Python

N = int(input())

min_digit = 9

while N >= 10:

    digit = N % 10

    if digit < min_digit:

        min_digit = digit

    N //= 10

print(digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 547.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку,  — приведите правильный вариант строки.

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

Источник: ЕГЭ по информатике 30.05.2013. Основная волна. Центр. Вариант 5.


Задания Д24 C1 № 7769

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

Бейсик Python

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + x MOD 2

x = x 10

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+x % 2

    x = x // 10

print(cnt)

Паскаль Алгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + x mod 2;

x := x div 10

end;

writeln(cnt);

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+mod(x,2)

x := div(x, 10)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + x%2;

x = x /10;

}

cout « cnt « endl;

}

Последовательно выполните следующее:

1.  Напишите, что выведет эта программа при вводе числа 15.

2.  Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Задания Д24 C1 № 9705

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 109, и выводится количество цифр в десятичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM A AS LONG

INPUT A

cnt = 0

WHILE A > 1

  cnt = cnt + A MOD 10

  A = A 10

WEND

PRINT cnt

END

var A: longint;

  cnt: integer;

begin

  readln(A);

  cnt := 0;

  while A > 1 do

  begin

    cnt:=cnt + A mod 10;

    A := A div 10;

  end;

  writeln(cnt);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

  long int A;

  int cnt;

  cin >> A;

  cnt = 0;

  while (A > 1)

  {

    cnt = cnt + A%10;

    A = A /10;

  }

  cout « cnt « endl;

}

алг

нач

  цел A, cnt

  ввод A

  cnt := 0

  нц пока A > 1

    cnt := cnt + mod(A, 10)

    A := div(A, 10)

  кц

  вывод cnt

кон

Python

A = int(input())

cnt = 0

while A > 1:

    cnt += A % 10

    A //= 10

print(cnt)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 111.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

а)  выпишите строку, в которой сделана ошибка;

б)  укажите, как исправить ошибку: приведите правильный вариант строки.

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

Всего: 17    1–17

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

Синтаксис обработки исключений

Прежде чем переходить к обсуждению того, почему обработка исключений так важна, и рассматривать встроенные в Python исключения, важно понять, что есть тонкая грань между понятиями ошибки и исключения.

Ошибку нельзя обработать, а исключения Python обрабатываются при выполнении программы. Ошибка может быть синтаксической, но существует и много видов исключений, которые возникают при выполнении и не останавливают программу сразу же. Ошибка может указывать на критические проблемы, которые приложение и не должно перехватывать, а исключения — состояния, которые стоит попробовать перехватить. Ошибки — вид непроверяемых и невозвратимых ошибок, таких как OutOfMemoryError, которые не стоит пытаться обработать.

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

Ошибки могут быть разных видов:

  • Синтаксические
  • Недостаточно памяти
  • Ошибки рекурсии
  • Исключения

Разберем их по очереди.

Синтаксические ошибки (SyntaxError)

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

Рассмотрим на примере.

a = 8
b = 10
c = a b
File "", line 3
 c = a b
       ^
SyntaxError: invalid syntax

Стрелка вверху указывает на место, где интерпретатор получил ошибку при попытке исполнения. Знак перед стрелкой указывает на причину проблемы. Для устранения таких фундаментальных ошибок Python будет делать большую часть работы за программиста, выводя название файла и номер строки, где была обнаружена ошибка.

Недостаточно памяти (OutofMemoryError)

Ошибки памяти чаще всего связаны с оперативной памятью компьютера и относятся к структуре данных под названием “Куча” (heap). Если есть крупные объекты (или) ссылки на подобные, то с большой долей вероятности возникнет ошибка OutofMemory. Она может появиться по нескольким причинам:

  • Использование 32-битной архитектуры Python (максимальный объем выделенной памяти невысокий, между 2 и 4 ГБ);
  • Загрузка файла большого размера;
  • Запуск модели машинного обучения/глубокого обучения и много другое;

Обработать ошибку памяти можно с помощью обработки исключений — резервного исключения. Оно используется, когда у интерпретатора заканчивается память и он должен немедленно остановить текущее исполнение. В редких случаях Python вызывает OutofMemoryError, позволяя скрипту каким-то образом перехватить самого себя, остановить ошибку памяти и восстановиться.

Но поскольку Python использует архитектуру управления памятью из языка C (функция malloc()), не факт, что все процессы восстановятся — в некоторых случаях MemoryError приведет к остановке. Следовательно, обрабатывать такие ошибки не рекомендуется, и это не считается хорошей практикой.

Ошибка рекурсии (RecursionError)

Эта ошибка связана со стеком и происходит при вызове функций. Как и предполагает название, ошибка рекурсии возникает, когда внутри друг друга исполняется много методов (один из которых — с бесконечной рекурсией), но это ограничено размером стека.

Все локальные переменные и методы размещаются в стеке. Для каждого вызова метода создается стековый кадр (фрейм), внутрь которого помещаются данные переменной или результат вызова метода. Когда исполнение метода завершается, его элемент удаляется.

Чтобы воспроизвести эту ошибку, определим функцию recursion, которая будет рекурсивной — вызывать сама себя в бесконечном цикле. В результате появится ошибка StackOverflow или ошибка рекурсии, потому что стековый кадр будет заполняться данными метода из каждого вызова, но они не будут освобождаться.

def recursion():
    return recursion()

recursion()
---------------------------------------------------------------------------

RecursionError                            Traceback (most recent call last)

 in 
----> 1 recursion()


 in recursion()
      1 def recursion():
----> 2     return recursion()


... last 1 frames repeated, from the frame below ...


 in recursion()
      1 def recursion():
----> 2     return recursion()


RecursionError: maximum recursion depth exceeded

Ошибка отступа (IndentationError)

Эта ошибка похожа по духу на синтаксическую и является ее подвидом. Тем не менее она возникает только в случае проблем с отступами.

Пример:

for i in range(10):
    print('Привет Мир!')
  File "", line 2
    print('Привет Мир!')
        ^
IndentationError: expected an indented block

Исключения

Даже если синтаксис в инструкции или само выражение верны, они все равно могут вызывать ошибки при исполнении. Исключения Python — это ошибки, обнаруживаемые при исполнении, но не являющиеся критическими. Скоро вы узнаете, как справляться с ними в программах Python. Объект исключения создается при вызове исключения Python. Если скрипт не обрабатывает исключение явно, программа будет остановлена принудительно.

Программы обычно не обрабатывают исключения, что приводит к подобным сообщениям об ошибке:

Ошибка типа (TypeError)

a = 2
b = 'PythonRu'
a + b
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

 in 
      1 a = 2
      2 b = 'PythonRu'
----> 3 a + b


TypeError: unsupported operand type(s) for +: 'int' and 'str'

Ошибка деления на ноль (ZeroDivisionError)

10 / 0
---------------------------------------------------------------------------

ZeroDivisionError                         Traceback (most recent call last)

 in 
----> 1 10 / 0


ZeroDivisionError: division by zero

Есть разные типы исключений в Python и их тип выводится в сообщении: вверху примеры TypeError и ZeroDivisionError. Обе строки в сообщениях об ошибке представляют собой имена встроенных исключений Python.

Оставшаяся часть строки с ошибкой предлагает подробности о причине ошибки на основе ее типа.

Теперь рассмотрим встроенные исключения Python.

Встроенные исключения

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- StopAsyncIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
      |    +-- ModuleNotFoundError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      |    +-- RecursionError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |         +-- UnicodeDecodeError
      |         +-- UnicodeEncodeError
      |         +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
           +-- BytesWarning
           +-- ResourceWarning

Прежде чем переходить к разбору встроенных исключений быстро вспомним 4 основных компонента обработки исключения, как показано на этой схеме.

  • Try: он запускает блок кода, в котором ожидается ошибка.
  • Except: здесь определяется тип исключения, который ожидается в блоке try (встроенный или созданный).
  • Else: если исключений нет, тогда исполняется этот блок (его можно воспринимать как средство для запуска кода в том случае, если ожидается, что часть кода приведет к исключению).
  • Finally: вне зависимости от того, будет ли исключение или нет, этот блок кода исполняется всегда.

В следующем разделе руководства больше узнаете об общих типах исключений и научитесь обрабатывать их с помощью инструмента обработки исключения.

Ошибка прерывания с клавиатуры (KeyboardInterrupt)

Исключение KeyboardInterrupt вызывается при попытке остановить программу с помощью сочетания Ctrl + C или Ctrl + Z в командной строке или ядре в Jupyter Notebook. Иногда это происходит неумышленно и подобная обработка поможет избежать подобных ситуаций.

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

try:
    inp = input()
    print('Нажмите Ctrl+C и прервите Kernel:')
except KeyboardInterrupt:
    print('Исключение KeyboardInterrupt')
else:
    print('Исключений не произошло')

Исключение KeyboardInterrupt

Стандартные ошибки (StandardError)

Рассмотрим некоторые базовые ошибки в программировании.

Арифметические ошибки (ArithmeticError)

  • Ошибка деления на ноль (Zero Division);
  • Ошибка переполнения (OverFlow);
  • Ошибка плавающей точки (Floating Point);

Все перечисленные выше исключения относятся к классу Arithmetic и вызываются при ошибках в арифметических операциях.

Деление на ноль (ZeroDivisionError)

Когда делитель (второй аргумент операции деления) или знаменатель равны нулю, тогда результатом будет ошибка деления на ноль.

try:  
    a = 100 / 0
    print(a)
except ZeroDivisionError:  
    print("Исключение ZeroDivisionError." )
else:  
    print("Успех, нет ошибок!")
Исключение ZeroDivisionError.

Переполнение (OverflowError)

Ошибка переполнение вызывается, когда результат операции выходил за пределы диапазона. Она характерна для целых чисел вне диапазона.

try:  
    import math
    print(math.exp(1000))
except OverflowError:  
    print("Исключение OverFlow.")
else:  
    print("Успех, нет ошибок!")
Исключение OverFlow.

Ошибка утверждения (AssertionError)

Когда инструкция утверждения не верна, вызывается ошибка утверждения.

Рассмотрим пример. Предположим, есть две переменные: a и b. Их нужно сравнить. Чтобы проверить, равны ли они, необходимо использовать ключевое слово assert, что приведет к вызову исключения Assertion в том случае, если выражение будет ложным.

try:  
    a = 100
    b = "PythonRu"
    assert a == b
except AssertionError:  
    print("Исключение AssertionError.")
else:  
    print("Успех, нет ошибок!")

Исключение AssertionError.

Ошибка атрибута (AttributeError)

При попытке сослаться на несуществующий атрибут программа вернет ошибку атрибута. В следующем примере можно увидеть, что у объекта класса Attributes нет атрибута с именем attribute.

class Attributes(obj):
    a = 2
    print(a)

try:
    obj = Attributes()
    print(obj.attribute)
except AttributeError:
    print("Исключение AttributeError.")

2
Исключение AttributeError.

Ошибка импорта (ModuleNotFoundError)

Ошибка импорта вызывается при попытке импортировать несуществующий (или неспособный загрузиться) модуль в стандартном пути или даже при допущенной ошибке в имени.

import nibabel
---------------------------------------------------------------------------

ModuleNotFoundError                       Traceback (most recent call last)

 in 
----> 1 import nibabel


ModuleNotFoundError: No module named 'nibabel'

Ошибка поиска (LookupError)

LockupError выступает базовым классом для исключений, которые происходят, когда key или index используются для связывания или последовательность списка/словаря неверна или не существует.

Здесь есть два вида исключений:

  • Ошибка индекса (IndexError);
  • Ошибка ключа (KeyError);

Ошибка ключа

Если ключа, к которому нужно получить доступ, не оказывается в словаре, вызывается исключение KeyError.

try:  
    a = {1:'a', 2:'b', 3:'c'}  
    print(a[4])  
except LookupError:  
    print("Исключение KeyError.")
else:  
    print("Успех, нет ошибок!")

Исключение KeyError.

Ошибка индекса

Если пытаться получить доступ к индексу (последовательности) списка, которого не существует в этом списке или находится вне его диапазона, будет вызвана ошибка индекса (IndexError: list index out of range python).

try:
    a = ['a', 'b', 'c']  
    print(a[4])  
except LookupError:  
    print("Исключение IndexError, индекс списка вне диапазона.")
else:  
    print("Успех, нет ошибок!")
Исключение IndexError, индекс списка вне диапазона.

Ошибка памяти (MemoryError)

Как уже упоминалось, ошибка памяти вызывается, когда операции не хватает памяти для выполнения.

Ошибка имени (NameError)

Ошибка имени возникает, когда локальное или глобальное имя не находится.

В следующем примере переменная ans не определена. Результатом будет ошибка NameError.

try:
    print(ans)
except NameError:  
    print("NameError: переменная 'ans' не определена")
else:  
    print("Успех, нет ошибок!")
NameError: переменная 'ans' не определена

Ошибка выполнения (Runtime Error)

Ошибка «NotImplementedError»
Ошибка выполнения служит базовым классом для ошибки NotImplemented. Абстрактные методы определенного пользователем класса вызывают это исключение, когда производные методы перезаписывают оригинальный.

class BaseClass(object):
    """Опередляем класс"""
    def __init__(self):
        super(BaseClass, self).__init__()
    def do_something(self):
	# функция ничего не делает
        raise NotImplementedError(self.__class__.__name__ + '.do_something')

class SubClass(BaseClass):
    """Реализует функцию"""
    def do_something(self):
        # действительно что-то делает
        print(self.__class__.__name__ + ' что-то делает!')

SubClass().do_something()
BaseClass().do_something()

SubClass что-то делает!



---------------------------------------------------------------------------

NotImplementedError                       Traceback (most recent call last)

 in 
     14
     15 SubClass().do_something()
---> 16 BaseClass().do_something()


 in do_something(self)
      5     def do_something(self):
      6         # функция ничего не делает
----> 7         raise NotImplementedError(self.__class__.__name__ + '.do_something')
      8
      9 class SubClass(BaseClass):


NotImplementedError: BaseClass.do_something

Ошибка типа (TypeError)

Ошибка типа вызывается при попытке объединить два несовместимых операнда или объекта.

В примере ниже целое число пытаются добавить к строке, что приводит к ошибке типа.

try:
    a = 5
    b = "PythonRu"
    c = a + b
except TypeError:
    print('Исключение TypeError')
else:
    print('Успех, нет ошибок!')

Исключение TypeError

Ошибка значения (ValueError)

Ошибка значения вызывается, когда встроенная операция или функция получают аргумент с корректным типом, но недопустимым значением.

В этом примере встроенная операция float получат аргумент, представляющий собой последовательность символов (значение), что является недопустимым значением для типа: число с плавающей точкой.

try:
    print(float('PythonRu'))
except ValueError:
    print('ValueError: не удалось преобразовать строку в float: 'PythonRu'')
else:
    print('Успех, нет ошибок!')
ValueError: не удалось преобразовать строку в float: 'PythonRu'

Пользовательские исключения в Python

В Python есть много встроенных исключений для использования в программе. Но иногда нужно создавать собственные со своими сообщениями для конкретных целей.

Это можно сделать, создав новый класс, который будет наследовать из класса Exception в Python.

class UnAcceptedValueError(Exception):   
    def __init__(self, data):    
        self.data = data
    def __str__(self):
        return repr(self.data)

Total_Marks = int(input("Введите общее количество баллов: "))
try:
    Num_of_Sections = int(input("Введите количество разделов: "))
    if(Num_of_Sections < 1):
        raise UnAcceptedValueError("Количество секций не может быть меньше 1")
except UnAcceptedValueError as e:
    print("Полученная ошибка:", e.data)

Введите общее количество баллов: 10
Введите количество разделов: 0
Полученная ошибка: Количество секций не может быть меньше 1

В предыдущем примере если ввести что-либо меньше 1, будет вызвано исключение. Многие стандартные исключения имеют собственные исключения, которые вызываются при возникновении проблем в работе их функций.

Недостатки обработки исключений в Python

У использования исключений есть свои побочные эффекты, как, например, то, что программы с блоками try-except работают медленнее, а количество кода возрастает.

Дальше пример, где модуль Python timeit используется для проверки времени исполнения 2 разных инструкций. В stmt1 для обработки ZeroDivisionError используется try-except, а в stmt2if. Затем они выполняются 10000 раз с переменной a=0. Суть в том, чтобы показать разницу во времени исполнения инструкций. Так, stmt1 с обработкой исключений занимает больше времени чем stmt2, который просто проверяет значение и не делает ничего, если условие не выполнено.

Поэтому стоит ограничить использование обработки исключений в Python и применять его в редких случаях. Например, когда вы не уверены, что будет вводом: целое или число с плавающей точкой, или не уверены, существует ли файл, который нужно открыть.

import timeit
setup="a=0"
stmt1 = '''
try:
    b=10/a
except ZeroDivisionError:
    pass'''

stmt2 = '''
if a!=0:
    b=10/a'''

print("time=",timeit.timeit(stmt1,setup,number=10000))
print("time=",timeit.timeit(stmt2,setup,number=10000))

time= 0.003897680000136461
time= 0.0002797570000439009

Выводы!

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

Обработка исключений — один из основных факторов, который делает код готовым к развертыванию. Это простая концепция, построенная всего на 4 блоках: try выискивает исключения, а except их обрабатывает.

Очень важно поупражняться в их использовании, чтобы сделать свой код более отказоустойчивым.

»

Какой фрагмент XML будет порожден в результате выполнения следующего кода:

from xml.dom import minidome1 = minidom.Element(«»A»»)e2 = minidom.Element(«»B»»)e3 = minidom.Element(«»C»»)e1.appendChild(e2)e1.appendChild(e3)print e1.toxml()

  • <A><B><B/><C><C/></A>
  • (Правильный ответ) <A><B/><C/></A>
  • <A><B><C></A>
  • <A><B><C/></B></A>

Как называется отношение, которое имеют следующие два класса:

class A(object): def __init__(self, x): self._mydata = x def m1(self): raise NotImplementedErrorclass B(A): def __init__(self, x): super(B, self).__init__(x) def m1(self): return self._mydata

  • агрегация. Экземпляры A содержат экземпляры класса B
  • (Правильный ответ) наследование. B получается наследованием A
  • ассоциация. Экземпляры A содержат ссылки на экземпляры класса B
  • наследование. A получается наследованием B

Как используется строка Main Heading в следующем примере?

<h1 tal:content=»»here/title»»>Main Heading</h1>

  • строка не используется
  • (Правильный ответ) в качестве заглушки, чтобы в средствах визуального форматирования было видно, что форматируется
  • содержит значение, на которое можно сослаться в другом месте документа
  • в качестве имени переменной для макроподстановки

Что делает метод normalize() DOM-объекта?

  • готовит XML для красивого вывода
  • исправляет XML, добавляя пропущенные теги
  • убирает пробелы вокруг текста
  • (Правильный ответ) сводит воедино все идущие подряд текстовые узлы

Что делает следующая программа?

import threadingl = threading.RLock()def proc(nm, n=0): l.acquire() try: if n < 5: print «»*»», return proc(nm, n+1) else: return nm finally: l.release() for i in range(5): threading.Thread(target=proc, args=(str(i),)).start()

  • печатает 5 звездочек
  • аварийно завершается при попытке выполнить l.acquire() во второй раз
  • (Правильный ответ) печатает 25 звездочек
  • печатает 1 звездочку и зависает
  • беспрерывно печатает звездочки

Имеется определение класса:

class Ex: def __init__(self, x, y): xy = x, y self.position = xy self._length = self.__len(x, y) def __len(self, x, y): return abs(x) + abs(y) def getlen(self): return self._lengthp = Ex(1, 2)
Какой из вариантов его применения не допустим в программах на Python, которые пользуются экземплярами класса Ex?

  • print p.getlen()
  • (Правильный ответ) print p.__len(1,2)
  • print p.position

Дан массив:

>>> c = array([[1,2], [2,3], [4,5]])
Чему равен срез c[:,1]?

  • array([1, 2, 4])
  • (Правильный ответ) array([2, 3, 5])
  • array([1, 2])
  • array([2, 3])

Класс имеет методы __iter__() и next(). О чем это говорит и как пользоваться этим методом?

class A: #… def __iter__(self): #… def next(self): #…a = A(1, 2, 3)

  • (Правильный ответ) итератор. Пользоваться можно так: for i in a: print i
  • нет особого названия. Пользоваться можно так: print a.next()
  • генератор. Пользоваться можно так: for i in a(): print i
  • последовательность. Пользоваться можно так: print a[2]

Какие новые имена появятся в текущем модуле после выполнения следующего кода:

import sre as refrom re import compile

  • нельзя одновременно делать import и from-import
  • только имена sre и compile
  • (Правильный ответ) только имена re и compile
  • имена sre, re и compile

Чему будет равен результат выполнения

urlparse.urlsplit(«»http://google.com/search?q=Python#1″»)
?

  • (Правильный ответ)
    (‘http’, ‘google.com’, ‘/search’, ‘q=Python’, ‘1’)
  • (‘http’, ‘google.com’, ‘/search’, », ‘q=Python’, ‘1’)
  • (‘http’, ‘google.com’, ‘search’, ‘q=Python’, ‘1’)
  • (‘http://’, ‘google.com/’, ‘search?’, ‘q=Python#’, ‘1’)

Начало определения функции f выглядит так:

def f(a, b, c=1, *p, **k):
Какие из следующих вариантов вызова не приведут к ошибке на этапе присваивания фактических параметров формальным?

  • (Правильный ответ) f(1, 2, 3, 4)
  • f()
  • (Правильный ответ) f(1, 2, d=3, c=4)
  • f(1, d=2, 3)
  • (Правильный ответ) f(1, 2)
  • (Правильный ответ) f(1, 2, d=3)

Для чего применяется метод nextset() объекта-курсора?

  • для получения следующего набора записей результата запроса
  • для получения следующей записи результата запроса
  • для перехода к следующей записи результата запроса
  • (Правильный ответ) для перехода к следующему набору записей результата запроса

Какой код порождает следующее расположение кнопок?

# 1b1.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=SE)b2.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=NE)b3.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=SW)b4.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=NW)# 2b1.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=SE)b2.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=NE)b3.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=SW)b4.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=NW)# 3b1.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=NW)b2.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=SW)b3.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=NE)b4.place(relx=0.2, rely=0.2, relwidth=0.4, relheight=0.4, anchor=SE)# 4b1.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=NW)b2.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=SW)b3.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=NE)b4.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=SE)

  • 1
  • 3
  • (Правильный ответ) 4
  • 2

В каком модуле нужно искать функции, помогающие тестировать программу?

  • dictutils
  • (Правильный ответ) unittest
  • profile
  • pdb

Каким образом в модуле poplib представлен сеанс работы с POP3-сервером?

  • список кортежей
  • набор функций
  • (Правильный ответ) экземпляр класса РОРЗ
  • кортеж

Какие значения получат группы в следующем примере?

>>> m = re.match(«»(?P<a>A*?)(?:B+)(?P<b>B+?)(?P<c>C??)»», «»AAAABBBBC»»)>>> m.groupdict()

  • {‘a’: ‘AAAA’, ‘c’: ‘C’, ‘b’: ‘B’}
  • {‘a’: ‘AAAA’, ‘b’: ‘BBBB’}
  • (Правильный ответ) {‘a’: ‘AAAA’, ‘c’: », ‘b’: ‘B’}
  • {‘a’: ‘AAAA’, ‘b’: ‘B’}

Какой из перечисленных обработчиков mod_python выполняется раньше других?

  • (Правильный ответ) PythonPostReadRequestHandler
  • PythonFixupHandler
  • PythonAuthenHandler
  • PythonHandler

Что будет получено в результате вычисления следующего выражения:

(0 < 5 <= 3) and (0 / 0)

  • будет возбуждено исключение ZeroDivisionError (деление на нуль)
  • синтаксическая ошибка
  • (Правильный ответ) False (или 0)
  • True (или 1)

Что будет выведено в результате выполнения сопоставления с регулярным выражением?

>>> m = re.match(«»(a*?)(a+)(b+?)»», «»aaabbb»»)>>> print m.groups()

  • (Правильный ответ) (», ‘aaa’, ‘b’)
  • (‘aa’, ‘a’, ‘b’)
  • (‘aa’, ‘a’, ‘bbb’)
  • (‘a’, ‘aa’, ‘b’)

Какое из приведенных ниже регулярных выражений некорректно?

  • [a]*?
  • (Правильный ответ) a+b++
  • (a+b+)+
  • (?P<k>(ac))

Зачем в XML пространства имен?

  • пространства имен позволяют включать однотипные XML-документы друг в друга
  • (Правильный ответ) для сочетания в одном документе XML с различными DTD
  • пространства имен позволяют указывать опции для приложения, обрабатывающего XML
  • для маркировки тегов с целью более удобного поиска

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

from Tkinter import *from ScrolledText import ScrolledTextdef transl(): txt = t1.get(«»1.0″», END).replace(e1.get(), e2.get()) t2.delete() t2.insert(END, txt)tk = Tk()f = Frame(tk)e1 = Entry(f, background=»»White»», width=32)e1.pack(side=LEFT)b = Button(f, text=»»>>»», command=transl)b.pack(side=LEFT)e2 = Entry(f, background=»»White»», width=32)e2.pack(side=LEFT)f.grid(row=0, column=0, columnspan=2)t1 = ScrolledText(tk, background=»»White»», width=40)t1.grid(row=1, column=0)t2 = ScrolledText(tk, background=»»White»», width=40)t2.grid(row=1, column=1)tk.mainloop()

  • виджет f должен занимать три ячейки, а не две (в нем кнопка и две полоски ввода)
  • ошибок нет
  • (Правильный ответ) метод delete текста не содержит позиций удаляемого текста
  • функция transl() должна иметь аргумент

Что такое регулярное выражение?

  • шаблон для операции форматирования
  • (Правильный ответ) шаблон, описывающий множество строк
  • шаблон для поиска файлов в каталоге
  • синтаксически правильное выражение на языке Python

Какой код порождает следующее расположение кнопок?

  • b1.pack(side=BOTTOM); b2.pack(side=BOTTOM)
  • b1.pack(side=TOP); b2.pack(side=BOTTOM)
  • (Правильный ответ)
    b2.pack(side=BOTTOM); b1.pack(side=BOTTOM)
  • b1.pack(side=BOTTOM); b2.pack(side=TOP)

Для чего нужны функции модуля gettext?

  • для показа строки ввода на экране и ввода текста от пользователя
  • для получения текста от пользователя
  • для чтения строки со стандартного ввода
  • (Правильный ответ) для обеспечения интернационализации программы

Аналогом какой функции является функция x?

def x(a, b): for c in b: yield a(*c)

  • itertools.izip()
  • (Правильный ответ) itertools.starmap()
  • itertools.imap()
  • map(None, …)

Чему равен атрибут namespaceURI у элемента <foaf:nick> из следующего фрагмента XML

<rdf:RDF xmlns:foaf=»»http://xmlns.com/foaf/0.1/»»>…<foaf:nick>donna</foaf:nick>

  • foaf
  • rdf:RDF
  • nick
  • (Правильный ответ) http://xmlns.com/foaf/0.1/
  • логистическое программирование
  • (Правильный ответ) императивное программирование
  • (Правильный ответ) структурный стиль
  • (Правильный ответ) модульное программирование

Может ли возникнуть deadlock в следующей программе:

import threadingres_A = threading.Lock()res_B = threading.Lock()res_C = threading.Lock()def proc1(): res_A.acquire(); res_B.acquire(); res_C.acquire() # … res_B.release(); res_C.release(); res_A.release()def proc2(): res_B.acquire(); res_C.acquire(); res_A.acquire() # … res_C.release(); res_B.release(); res_A.release()def proc3(): res_C.acquire(); res_A.acquire(); res_B.acquire() # … res_A.release(); res_B.release(); res_C.release()p1 = threading.Thread(target=proc1, name=»»t1″»)p2 = threading.Thread(target=proc2, name=»»t2″»)p3 = threading.Thread(target=proc3, name=»»t3″»)p1.start(); p2.start(); p3.start()p1.join(); p2.join(); p3.join();

  • (Правильный ответ) да, возможно
  • нет, не возникнет
  • да, обязательно

Какое значение threadsafety соответствует ситуации, когда потоки могут одновременно использовать как DB-API 2.0 совместимый модуль, так и соединения, получаемые на основе этого модуля

  • 3
  • 1
  • 0
  • (Правильный ответ) 2

Можно ли в XML использовать собственные теги?

  • можно, если они указаны DTD
  • (Правильный ответ) можно
  • нельзя
  • можно, если указаны пространства имен

В каком порядке Zope будет искать index_html для следующего URL?

http://zopeserver/Zigzag/Example/index_html

  • в каталогах /Zigzag/Example и /Zigzag
  • (Правильный ответ) в каталогах /Zigzag/Example, /Zigzag и /????
  • только в каталоге /Zigzag/Example/
  • в каталогах /, /Zigzag и /Zigzag/Example

Экземпляры какого класса сочетают замок и средство коммуникации между потоками?

  • (Правильный ответ) Condition
  • Event
  • Timer
  • Lock

Как средствами самого Python определить имена формальных аргументов функции func(), если известно, что функция написана на Python?

  • func.func_locals
  • никак
  • func.func_globals
  • (Правильный ответ)
    inspect.getargspec(func)

Какие кодировки исходного текста программы поддерживает интерпретатор Python?

  • (Правильный ответ) большинство кодировок, распространенных сегодня
  • ASCII
  • ASCII, Latin-1, UTF-8
  • ASCII, Unicode

Какую роль играет xx в Python-программе, и чему должен быть равен XXX:

class A(object): def xx(): return A.__name__ xx = XXX(xx)

  • метод, XXX равен instancemethod
  • метод класса, XXX равен classmethod
  • функция, XXX можно опустить
  • (Правильный ответ) статический метод, XXX равен staticmethod

Какой метод позволяет узнать, имеет ли данное сообщение несколько частей?

  • (Правильный ответ) is_multipart()
  • (Правильный ответ) get_main_type()
  • get_payload()
  • items()

Что будет выведено в результате выполнения следующего кода:

from xml.sax.saxutils import XMLGeneratorg = XMLGenerator(encoding=»»utf-8″»)g.startDocument()g.startElement(«»A»», {})g.startElement(«»B»», {‘b’: ‘1’})g.endElement(«»B»»)g.startElement(«»B»», {‘b’: ‘2’})g.endElement(«»B»»)g.endElement(«»A»»)g.endDocument()

  • <?xml version=»»1.0″» encoding=»»utf-8″»?><A><B b=1></B><Bb=2></B></A>
  • <?xml version=»»1.0″» encoding=»»utf-8″»?><A><B b=»»1″»><Bb=»»2″»></B></B></A>
  • <?xml version=»»1.0″» encoding=»»utf-8″»?><A><B b=»»1″» b=»»2″»></B></A>
  • (Правильный ответ)
    <?xml version=»»1.0″» encoding=»»utf-8″»?><A><B b=»»1″»></B><Bb=»»2″»></B></A>

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

import threading, Queueitem = Queue.Queue()def consumer(nm): for i in range(3): print item.get(), nmdef producer(nm): for i in range(4): item.put(nm)for n in range(4): threading.Thread(target=consumer, args=(«»c»»+str(n),)).start()for n in range(3): threading.Thread(target=producer, args=(«»p»»+str(n),)).start()

  • объекту, соответствующему потоку, нужно давать отдельное имя
  • потоки-потребители очереди запущены раньше потоков-производителей
  • программа зависнет, так как производителей меньше, чем потребителей
  • (Правильный ответ) ошибок нет

Какая строка получится в результате следующей операции:

«»=%1s %2.2f %03i=»» % («»abc»», 1.234, 4)

  • =a 01.23 004=
  • =c 1.23 004=
  • =a 1.23 004=
  • (Правильный ответ) =abc 1.23 004=

Что будет выведено следующей программой:

a = «»AB»» b = «»BC»»print «»%sa, b»» % a, b

  • (‘AB’, ‘BC’)a, b
  • «AB», «BC»a, b
  • (AB, BC)a, b
  • (Правильный ответ) ABa, b BC

Какая строка получится в результате следующей операции:

«»=%-3s %1.0f %-3i=»» % («»a»», 1.234, 4)

  • =a 1  4=
  • = a 1 4=
  • (Правильный ответ) =a 1 4  =

Что включает в себя Zope?

  • СУБД общего назначения
  • поддержку CGI-сценариев
  • (Правильный ответ) поддержку сценариев DTML
  • (Правильный ответ) собственный web-сервер

Как перевести Unicode-строку u в кодировку koi8-r?

  • string.decode(u, ‘koi8-r’)
  • (Правильный ответ) u.encode(‘koi8-r’)
  • u.recode(‘unicode’, ‘koi8-r’)
  • u.decode(‘koi8-r’)

К какому уровню модели взаимодействия открытых систем относится протокол FTP?

  • сетевому
  • представления
  • сеансовому
  • транспортному
  • (Правильный ответ) приложений

Какие из перечисленных функций имеют побочные эффекты:

import osglobal vv = 0def A(x, y): return abs(x + y)B = lambda k, v: os.environ.setdefault(k, v)def C(x): global v v = v + 1 return v + x

  • никакие
  • (Правильный ответ) только B и C
  • только C
  • A, B, C
  • только A и C

Какие утверждения о следующем фрагменте программы, работающей с POP3-сервером, правильные?

import poplib, emailp = poplib.POP3(‘pop3.SERVER’)p.getwelcome()p.user(‘USERNAME’)p.pass_(‘USERPASSWORD’)lst = p.list()## обработка lst#p.quit()

  • ошибок нет
  • делать quit() необязательно, он выполнится сам
  • (Правильный ответ) метод list() имеет другой формат результата: ответ сервера, список строк и длина ответа. Правильно было бы написать: response, lst, octets = p.list()
  • учетные данные пользователя (логин и пароль) передаются сразу в методе user, а не отдельным методом pass_()

Что делает следующая программа?

import threading, Queueitem = Queue.Queue()def consumer(nm): while True: print item.get(), nmdef producer(nm): while True: item.put(nm)for n in range(3): threading.Thread(target=consumer, args=(«»c»»+str(n),)).start() threading.Thread(target=producer, args=(«»p»»+str(n),)).start()

  • (Правильный ответ) программа беспрерывно печатает строки вида pN cM, где N — номер производителя, а M — номер потребителя
  • программа содержит ошибку в цикле, где запускаются потоки
  • программа беспрерывно печатает строки вида p0 c0, p1 c1 или p2 c2, где число после p — номер производителя, а число после c — номер потребителя
  • программа ничего не делает или, в некоторых случаях, успевает напечатать несколько строк вида pN cM, после чего останавливается на попытке прочитать из пустой очереди

Какая встроенная функция Python лучше всего подходит для цепочечных вычислений (в частности, вычислений значения многочлена по схеме Горнера)?

  • (Правильный ответ) reduce()
  • map()
  • chain()
  • filter()

Какой модуль стандартной библиотеки Python позволяет работать с WWW на более низком уровне?

  • (Правильный ответ) httplib
  • urlparse
  • htmllib
  • urllib2

Какому значению paramstyle соответствует следующий пример разметки:

«» «» «» INSERT INTO tv (tvdate, tvweekday, tvchannel)VALUES (%s, %s, %s);»» «» «»

  • (Правильный ответ) ‘format’
  • ‘pyformat’
  • ‘named’
  • ‘qmark’

Какой код порождает следующее расположение кнопок?

# 1b1.grid(row=0, column=0, rowspan=2)b2.grid(row=0, column=1)b3.grid(row=1, column=1)# 2b1.grid(row=0, column=0, columnspan=2)b2.grid(row=1, column=0)b3.grid(row=1, column=1)# 3b1.grid(row=1, column=1, rowspan=2)b2.grid(row=1, column=0)b3.grid(row=0, column=0)# 4 b1.grid(row=1, column=1, columnspan=2)b2.grid(row=0, column=1)b3.grid(row=0, column=0)

  • 2
  • (Правильный ответ) 1
  • 3
  • 4

Какие утверждения о следующем фрагменте программы, работающей с POP3-сервером, правильные?

import poplib, emailp = poplib.POP3(‘pop3.SERVER’)p.getwelcome()p.user(‘USERNAME’)p.pass_(‘USERPASSWORD’)response, lst, octets = p.list()## обработка lst#p.quit()

  • делать quit() необязательно, он выполнится сам
  • учетные данные пользователя (логин и пароль) передаются сразу в методе user, а не отдельным методом pass_()
  • (Правильный ответ) ошибок нет
  • метод list() имеет другой формат результата: просто список. Ошибки (response) в случае необходимости передаются возбуждением исключений

Сокрытие информации о внутреннем устройстве объекта, при котором вся работа с объектом ведется только через общедоступный интерфейс называется

  • агрегацией
  • абстракцией
  • декомпозицией
  • (Правильный ответ) инкапсуляцией

Какими из перечисленных ниже способов можно получить случайный элемент последовательности lst с помощью модуля random?

  • random.random(lst)
  • (Правильный ответ) random.choice(lst)
  • (Правильный ответ) random.shuffle(lst); lst[0]
  • (Правильный ответ) lst[random.randrange(len(lst))]

Как можно получить список активных на данный момент потоков?

  • (Правильный ответ) threading.enumerate()
  • threading.currentThreads()
  • threading.active()
  • threading.activeCount()

Как начать интерактивную отладку функции f с двумя аргументами (условно: x и y)?

  • import pdb; pdb.runcall(f(x, y))
  • import pdb; pdb.runcall(f, (x, y))
  • import pdb; pdb.runcall(«»f(x, y)»»)
  • (Правильный ответ)
    import pdb; pdb.runcall(f, x, y)

Какая строка получится в результате следующей операции:

«»=%r %0.1f %03i=»» % («»abc»», 1.234, 3)

  • =abc 1.2 3=
  • (Правильный ответ) =’abc’ 1.2 003=
  • =’abc’ .2 3=
  • =’abc’ 1.2 3 =

С помощью какого макроса удобнее всего определить строку документации при использовании C API?

  • (Правильный ответ) PyDoc_STRVAR
  • PyDoc
  • PyDoc_VAR
  • PyDoc_STR

Что будет выведено следующей программой:

a = «»A»»b = «»B»»b = b + aprint a + b

  • (Правильный ответ) AВА
  • сообщение об ошибке в третьей строке
  • ВА
  • АВ

Какой из перечисленных обработчиков mod_python выполняется раньше других?

  • PythonHeaderParserHandler
  • (Правильный ответ) PythonPostReadRequestHandler
  • PythonAuthenHandler
  • PythonHandler

Как называется отношение, которое имеют между собой следующие два класса:

class A(object): def __init__(self, **atts): self._atts = atts def __repr__(self): return «»:»» + str(self._atts)class B(list): def __init__(self, *params): super(B, self).__init__(params)

  • (Правильный ответ) классы не связаны между собой
  • ассоциация. Экземпляры A содержат ссылки на экземпляры B
  • агрегация. Экземпляры B содержат экземпляры A
  • ассоциация. Экземпляры B содержат ссылки на экземпляры A

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

import threading# 1def proc(*args): print «»Процесс в потоке пошел!»» while 1: pass# 2p1 = threading.Thread(target=proc(), name=»»t1″», args=[2])# 3p1.start()

  • ошибок нет
  • (Правильный ответ) 2
  • 3
  • 1

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

  • модуль MIMEMultipart, класс MIMEMultipart
  • модуль MIMEMessage, класс MIMEMessage
  • (Правильный ответ) модуль MIMEBase, класс MIMEBase
  • модуль Utils, класс MIME

В какой переменной окружения передается имя пользователя (если применяется авторизация)?

  • (Правильный ответ) REMOTE_USER
  • LOGIN
  • USER_NAME
  • USER

В каких из перечисленных ниже случаев удобнее встроить интерпретатор Python в программную систему?

  • (Правильный ответ) когда системе требуется функциональность, которую пользователю удобнее описать на языке сценария, но система изначально написана на C/C++
  • система доступна в виде бинарной библиотеки
  • когда система позволяет вызывать внешние сценарии
  • система поставляется как пакет прикладных программ

Сколько элементов будет содержать словарь D (то есть, чему будет равно len(D)) после выполнения следующего к»

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

Я так понимаю, что запись данного примера должна выглядеть как-то так:

Вывод будет соответственно

Почему именно так? Потому что сначала выведется «1» а затем, без всяких разделителей будет выведено «5», таким образом значение «склеится» и получится «15».

Это обычная итерация, т.е. увеличение значения переменной на единицу.

т.е, к примеру i=7, i=i+1 -> переменная i будет равна «8»

Во многих языках допускается сокращенная запись данной итерации, и выглядит она следующим образом:

i += 1

Либо есть еще такие конструкции:

++i либо

i++ либо

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

Студворк — интернет-сервис помощи студентам

Помогите сделать

Требовалось написать программу, при выполнении которой с клавиатуры
считывается натуральное число x, не превосходящее 1000, и выводится
количество единиц в двоичной записи этого числа. Программист торопился
и написал программу неправильно.

Pascal
1
2
3
4
5
6
7
8
9
10
11
var x,cnt: integer;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + 1;
x := x mod 2
end;
writeln(cnt)
end.

Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 6.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа
печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.
Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

  • Программа передач на сегодня ошибка резидента
  • Программа определяющая ошибки синего экрана
  • Программа обнаружила ошибку ожидания sai 2
  • Программа не предназначена для выполнения windows или содержит ошибку состояние ошибки 0xc000012f
  • Программа не предназначена для выполнения windows или содержит ошибку состояние ошибки 0xc000007b