Решение модуля 8.4 Поколение Python: для продвинутых
Модуль 8.4 (Основы работы с множествами) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Встроенные функции len() , sum() , min() , max()
- Оператор принадлежности in
- Перебор множеств
- Форматированный вывод множеств
- Сравнение множеств
Публикуем решения на урок 8.4 Основы работы с множествами
Что выведет следующий программный код?
myset = set([1, 2, 2, 3, 4, 4, 4])
print(len(myset))
Что выведет следующий программный код?
myset = set(‘ъъ эээ юююю яяяяя’)
print(len(myset))
Программист написал программу, состоящую из одной строки
print(len(set(input())))
Что выведет эта программа при вводе следующих строк:
Beegeek
карабас-барабас
Beegeek: 4 карабас-барабас: 6
ошибка во время выполнения кода
Дополните приведенный код так, чтобы он вывел сумму минимального и максимального элементов множества numbers .
Обзор новых иммиграционных программ для STEM
numbers = print(min(numbers) + max(numbers))
Дополните приведенный код, чтобы он вывел среднее арифметическое элементов множества numbers .
numbers = average = sum(numbers)/ len(numbers) print(average)
Что выведет следующий программный код?
myset1 = set([1, 2, 3, 4, 5])
myset2 = set(‘12345’)print(myset1 == myset2)
False
Дополните приведенный код, чтобы он вывел сумму квадратов элементов множества numbers .
numbers = print(sum([i**2 for i in numbers]))
Дополните приведенный код, чтобы он вывел элементы множества fruits , каждый на отдельной строке, отсортированные по убыванию (в обратном лексикографическом порядке).
Примечание. Выводите каждый элемент множества на отдельной строке.
fruits = print(*sorted(fruits, reverse=True), sep=»n»)
На вход программе подается строка текста. Напишите программу, которая определяет количество различных символов в строке.
print(len(set(input())))
На вход программе подается строка, состоящая из цифр. Необходимо определить, верно ли, что в ее записи ни одна из цифр не повторяется?
Формат входных данных
На вход программе подается строка, состоящая из цифр
Формат выходных данных
Программа должна вывести YES если ни одна из цифр в строке не повторяется и NO в противном случае.
num = input() print(‘YES’ if len(set(num)) == len(num) else ‘NO’)
На вход программе подаются две строки, состоящие из цифр. Необходимо определить, верно ли, что в записи этих двух строк используются все десять цифр?
Формат входных данных
На вход подаются две строки, состоящие из цифр.
Формат выходных данных
Программа должна вывести YES , если в записи этих двух строк используются все десять цифр, и NO в противном случае.
a,b = input(), input() new_set = set(a+b) if len(new_set) == 10: print(‘YES’) else: print(‘NO’)
На вход программе подаются две строки, состоящие из цифр. Необходимо определить, верно ли, что для записи этих строк были использованы одинаковые наборы цифр?
Формат входных данных
На вход подаются две строки, состоящие из цифр.
Формат выходных данных
Программа должна вывести YES , если для записи этих строк были использованы одинаковые наборы цифр и NO , в противном случае.
Самые странные и сложные языки программирования
print(‘YES’ if set(input())==set(input()) else ‘NO’)
На вход программе подается строка, состоящая из трех слов. Верно ли, что для записи всех трех слов был использован один и тот же набор букв?
s = input().split() print((‘NO’, ‘YES’)[set(s[0]) == set(s[1]) == set(s[2])])
Источник: zazloo.ru
Уроки 26 — 29
§18. Линейные программы
Присвоить значение переменной можно двумя способами. Вопервых, можно записать нужное значение прямо в программе:
Оператор, содержащий символы «:=», — это оператор присваивания, с его помощью присваивают новое значение переменной. Он выполняется так: вычисляется выражение справа от символов «:=», а затем результат записывается в переменную, имя которой указано слева.
Для вывода значения переменной на экран используют тот же оператор вывод (в Паскале — write), который раньше применяли для вывода текста:
Что появится на экране после выполнения программы?
вывод с write (с);
вывод ‘c’ write (‘с’);
Чем различаются эти два оператора вывода?
Что выведет на экран программма?
вывод a write (а);
вывод a write (а);
заменяет значение i на i + 1, т. е. увеличивает значение переменной i на 1.
Что получится, если рассмотреть запись i: = i + 1 как равенство — уравнение относительно переменной i?
Чему будет равно значение переменной i после выполнения оператора i: = i + l, если до этого оно было равно 17?
Чему будут равны значения переменных а и b после выполнения программмы
если вначале они имели значения а = 4 и b = 7?
Очень часто программа хранится как исполняемый файл — готовые к выполнению машинные коды. В этом случае текст программы (исходный код) нам недоступен и в нём ничего нельзя исправить. Для того чтобы пользователь смог как-то поменять исходные данные, программист может предусмотреть их ввод с клавиатуры 1) .
Можно также вводить данные из файла или принимать через компьютерную сеть, но пока мы не будем обсуждать эти довольно сложные способы.
Для ввода данных с клавиатуры используется оператор ввод (в Паскале — read). Например, ввести значение переменной а можно так:
Выполняя эту команду, компьютер ожидает, пока пользователь наберёт значение и введёт его, нажав клавишу Enter. Это значение будет присвоено переменной а, которая указана в операторе ввода.
Если в операторе ввода записаны две переменные:
ввод a, b read(a,b);
то программа ожидает ввода двух чисел (через пробел). Первое из них будет записано в первую переменную (в нашем примере — в переменную а), а второе — во вторую (b).
Приведём полную программу сложения двух чисел:
У этой программы сложения чисел есть два недостатка:
1) перед вводом данных пользователь не знает, что от него требуется (сколько чисел нужно вводить и каких);
2) результат выдается в виде числа, которое означает неизвестно что.
Хотелось бы, чтобы диалог программы с пользователем выглядел так:
Введите два числа: 2 3
С помощью какого оператора можно сделать подсказку для ввода — вывести на экран фразу «Введите два числа:»?
При выводе результата ситуация несколько усложняется, потому что нужно вывести значения трёх переменных и два символа: « + » и «=». Можно выводить их по очереди:
вывод b write (b);
но удобнее объединить все выводимые данные в один список вывода, элементы в котором разделены запятыми:
вывод a, ‘+’, b, ‘=’, с write (a, ‘+’, b, ‘=’, с);
Обратите внимание, что имена переменных записаны без апострофов, а все выводимые символы — в апострофах. Если в списке вывода указано имя переменной а, программа выведет не букву «а», а значение, которое хранится в переменной а.
Что выведет эта программа при а = 4, b = 5 и с = 9?
вывод ‘a’, ‘+b’, =, с write (‘а’, ‘+b’ , =, с);
Исправьте ошибки в операторе вывода:
вывод ‘с’, ‘-b’, =, a write (‘с’, ‘-b’ , =, а);
так чтобы при а = 4, b = 5 и с = 9 программа вывела: 9 — 5 = 4.
В результате мы получаем такую программу:
Здесь можно было бы обойтись и без переменной с, потому что элементом списка вывода может быть арифметическое выражение, которое сразу вычисляется, и на экран выводится его результат:
вывод а, ‘+’, b, ‘=’, a + b write (а, ‘+’, b, ‘=’, а + b);
Следующая страница Арифметические выражения
Cкачать материалы урока
Источник: xn—-7sbbfb7a7aej.xn--p1ai
Что выведет эта программа
Задание 2. Тип заданий 24: поиск ошибок.
- Задание: На обработку поступает положительное целое число, не превышающее 10 9 . Нужно написать программу, которая выводит на экран количество разрядов числа, имеющих четные значения. Программист написал программу неправильно. Ниже эта программа приведена на языке Pascal:
Паскаль var N, digit, sum: longint;
begin
readln(N);
sum := 1;
while N > 0 do
begin
digit := N mod 10;
if digit mod 2 = 0 then
sum := sum + digit;
N := N div 10;
end;
writeln(sum)
end.Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 128.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. - Решение: Для решения таких заданий очень важно понимать, как должна выглядеть правильно написанная программа. Давайте разберёмся. В программу вводится число N. Далее проверяется каждый разряд числа, и если он кратен 2, то значение переменной sum должно увеличиваться на 1. Выполним задания последовательно. 1. Напишите, что выведет эта программа при вводе числа 128. Переменная sum изначально равна 1. Рассмотрим каждый повтор цикла: 1 повтор цикла: digit := n mod 10 = 128 mod 10 = 8 условие digit mod 2 = 0 выполняется, к переменной sum прибавляется значение digit, то есть sum := 1 + 8 = 9 N := N div 10 = 128 div 10 = 12 2 повтор цикла: digit := n mod 10 = 12 mod 10 = 2 условие digit mod 2 = 0 выполняется, к переменной sum прибавляется значение digit, то есть sum := 9+2 = 11 N := N div 10 = 12 div 10 = 1 3 повтор цикла: digit := n mod 10 = 1 mod 10 = 1 условие digit mod 2 = 0 не выполняется N := N div 10 = 1 div 10 = 0 Цикл завершен, на экран вывелось значение sum, то есть 11. Ответ: 112. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ. Разберемся, как на самом деле работает программа. Во-первых, переменная sum изначально равна 1, во-вторых, к sum прибавляются все четные цифры числа. То есть мы должны найти такое число, количество четных разрядов которого равно сумме четных разрядов +1. Казалось бы, задача невыполнимая, но не стоит забывать, что цифра 0 четна, и мы можем её использовать в числе. Нам нужно трёхзначное число, значит максимальный результат, который может быть выведен при его вводе — 3, то есть все разряды должны быть четные. Для этого отлично подходит число 200, так как 1+2+0+0 = 3, и число 200 содержит ровно три четных разряда. Ответ: 2003. Найдите все ошибки в этой программе. Так как мы ищем количество, то переменная sum изначально должна быть равна 0, а не 1. То есть строку sum := 1; нужно заменить на sum := 0; Так как мы ищем количество, то каждый раз, когда выполняется условие, переменная должна увеличиваться на 1, а не на разряд числа. То есть строку sum := sum + digit; нужно заменить на sum := sum + 1; Ответ:
sum := 1; ===> sum := 0;sum := sum + digit;===> sum := sum + 1;
Поделиться:
Комментарии ( 2 )
Подскажите, ответом на второй вопрос может быть число 190?
Источник: infbu.ru
Что выведет на экран программа a=1 print( a ) a=5 print( a )?
Что выведет на экран программа a=1 print( a ) a=5 print( a ). Оператор i=i+1.
комментировать
в избранное up —>
Kevin us [12.5K]
более года назад
Хотелось бы еще узнать какой это язык, но впринципе нет в этом особой необходимости.
Я так понимаю, что запись данного примера должна выглядеть как-то так:
Вывод будет соответственно
Почему именно так? Потому что сначала выведется «1» а затем, без всяких разделителей будет выведено «5», таким образом значение «склеится» и получится «15».
Это обычная итерация, т.е. увеличение значения переменной на единицу.
т.е, к примеру i=7, i=i+1 -> переменная i будет равна «8»
Во многих языках допускается сокращенная запись данной итерации, и выглядит она следующим образом:
Либо есть еще такие конструкции:
отличие только в том, когда они применяются и могут отличаться по своей работе от языка к языку.
автор вопроса выбрал этот ответ лучшим
комментировать
в избранное ссылка отблагодарить
Рентг ендал ьф [37.1K]
более года назад
Приведённый пример исходного кода либо написан на экзотическом языке, либо содержит ошибки на уровне синтаксиса (что вероятнее).
То есть скорее всего компилятор откажется компилировать этот исходный код, если язык компилируемый. Или интерпретатор откажется выполнять код, если язык интерпретируемый. В любом случае мы можем надеяться на какое-то сообщение от компилятора/интерпре татора о ошибке в синтаксисе программы.
Если же эта программа на экзотическом языке, синтаксис которого допускает разделение выражений с помощью символа «пробел», то дальше всё зависит от реализации функции print(). Так как язык весьма экзотический (как и его автор :), то print() может делать даже больше, чем мы можем на фантазировать.
В общем ответ таков, что скорее всего программа закончит с сообщением об ошибке, что-то типа SyntaxError: invalid syntax.
Источник: www.bolshoyvopros.ru