Вводится натуральное число N (то есть, положительное, целое). Требуется создать двумерный (вложенный) список размером N x N элементов, состоящий из всех единиц, а затем, в последний столбец записать пятерки. Вывести этот список на экран в виде таблицы чисел, как показано в примере ниже.
P.S. Будьте внимательны в конце строк пробелов быть не должно!
N = int(input()) # Ввод натурального числа с клавиатуры
a = [[1] * N for i in range(N)] # Задаём N списков с N единицами
b = a[0] # Создаём список [1, 1, 1, 1] (один список)
b[-1] = 5 # Делаем так что бы появились пятёрки
while N != 0: # ( Это что бы вывелось несколько раз, а также личное творество ученика ;) )
print(*b) # Сам вывод N раз
N -= 1 # А это что бы цикл не был бесконечным
Вводится список из URL-адресов (каждый с новой строки). Требуется в них заменить все пробелы на символ дефиса (-). Следует учесть, что может быть несколько подряд идущих пробелов. Результат преобразования вывести на экран в виде строк из URL-адресов.
P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys
# lst_in = ['django chto eto takoe poryadok ustanovki', 'model mtv marshrutizaciya funkcii predstavleniya', 'marshrutizaciya obrabotka isklyucheniy zaprosov perenapravleniya' ]
# Cчитывание списка из входного потока
lst_in = list(map(str.strip, sys.stdin.readlines()))
# здесь продолжайте программу (используйте список lst_in)
for string_word in lst_in: # Перебираю позиции в списке
while ' ' in string_word: # Прохожу циклом пока в строке встречается двойной пробел
string_word = string_word.replace(' ', ' ') # Заменяю двойные пробелы на одинарные
print(string_word.replace(' ','-')) # Вывожу результат заменяя все пробел на -
Вводится натуральное число n. Необходимо найти все простые числа, которые меньше этого числа n, то есть, в диапазоне [2; n). Результат вывести на экран в строчку через пробел.
n = int(input())
nums = list(range(n)) # создаем список из всех чисел до n
nums[1] = 0 # так как 1 не является простым числом, обнуляем ее
i = 2 # заводим переменную цикла равную 2
while i < n ** 0.5: # устанавливаем границу итерации цикла до квадратного корня из n, дальше проходить по циклу нет смысла
if nums[i] != 0: # если i != 0, то это простое число
j = i ** 2 # с помощью переменной j находим все числа, кратные i и
# обнуляем их, так как они не являются простыми
while j < n:
nums[j] = 0
j += i
i += 1
nums = [num for num in nums if num != 0] # создаем список без нулей
print(*nums)
Вводится двумерный список размерностью 5 х 5 элементов, состоящий из нулей и, в некоторых позициях, единиц (см. пример ввода ниже). Требуется проверить, не касаются ли единицы друг друга по горизонтали, вертикали и диагонали. То есть, вокруг каждой единицы должны быть нули. Если проверка проходит вывести ДА, иначе — НЕТ.
P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys
# считывание списка из входного потока
s = sys.stdin.readlines()
lst_in = [list(map(int, x.strip().split())) for x in s]
# здесь продолжайте программу (используйте список lst_in)
string_matrix = len(lst_in[0])
flag = True
lst_in = [[0]*string_matrix] + (lst_in) + [[0]*string_matrix] # Добавляем строки вверх и вниз матрицы
for i in range(len(lst_in)): # Добавляем столбцы
lst_in[i].insert(0, 0) # Первый столбец матрицы
lst_in[i].append(0) # Последний столбец матрицы
for index_str, value in enumerate(lst_in): # Прохожу по строкам и сохраняю данные в переменную value, индексы index_str
if flag == True: # Ставлю флаг в True
for index_positon, value_str in enumerate(value): # Ставлю флаг в True
if value_str == 1: # Если встречаю 1 в матрице начинаю проверять на соприкосновение с другими единицами
if (lst_in[index_str][index_positon + 1] == 1 or lst_in[index_str][index_positon - 1] == 1):# Слева или справа
flag = False
break
if 1 in lst_in[index_str - 1][index_positon - 1: index_positon +1]: # Верхний ряд
flag = False
break
if 1 in lst_in[index_str + 1][index_positon - 1: index_positon +1]: # Нижний ряд
flag = False
break
# Случае нахождения прерываю поиск, flag ставлю в False
else:
flag = True # Иначе flag = True
else:
break # Если флаг в положение False прерываю поиск.
if flag:
print("ДА")
else:
print("НЕТ")
Вводится двумерный список размерностью 5 х 5 элементов, состоящий из целых чисел (пример ввода см. ниже). Проверьте, является ли этот двумерный список симметричным относительно главной диагонали. Главная диагональ — та, которая идёт из левого верхнего угла двумерного массива в правый нижний. Выведите на экран ДА, если матрица симметрична и НЕТ — в противном случае.
P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys
# считывание списка из входного потока
s = sys.stdin.readlines()
lst_in = [list(map(int, x.strip().split())) for x in s]
# здесь продолжайте программу (используйте список lst_in)
flag = True # Создаю флаг
count = 1 # Счетчик для начала второго индекса
# for index, value in enumerate(lst_in): # Для отрисовки матрицы
# print(value)
# for index_1, value_1 in enumerate(lst_in):
for index_1 in range(0, len(lst_in)): # Получения первой части индекса (Основной список)
for index_2 in range(count, len(lst_in)): # Получения второй части индекса (Вложенный список)
# if lst_in[index_1][index_2] != lst_in[index_2][index_1]: # Сокращенный вариант проверки
number_1 = lst_in[index_1][index_2] # Сохраняю число из массива стоящее слева
number_2 = lst_in[index_2][index_1] # Сохраняю число из массива стоящее справа
if number_1 != number_2: # Проверяю их на неравенство
flag = False # Если они не равный то условия нашего задания не исполняются и можно выходить из цикла flag = False
break # Прерываю работу цикла с помощью break
else: # Если равны то устанавливаю флаг на True и продолжаю проверку
flag = True
if flag == False: # Если Флаг равен False то выхожу из внешнего цикла
break
if flag: # Если Флаг равен True то печатаю ДА
print("ДА")
else: # Если Флаг равен False то печатаю НЕТ
print("НЕТ")
Вводится список целых чисел в одну строку через пробел. Необходимо выполнить его сортировку выбором по возрастанию (неубыванию). Идея алгоритма очень проста и проиллюстрирована на рисунке ниже.
Вначале мы рассматриваем первый элемент списка и ищем второй минимальный относительно первого элемента (включая и его). На рисунке — это последний элемент со значением -1. Затем, меняем местами первый и последний элементы. Переходим ко второму элементу списка и повторяем эту же процедуру, но относительно второго элемента (то есть, первый уже не рассматриваем). На рисунке минимальный элемент — это 2, поэтому менять местами здесь ничего не нужно. Переходим к 3-му элементы со значением 6. Относительно него находим минимальный элемент — это 3. Меняем их местами.
Вот идея алгоритма сортировки выбором. Реализуйте его для вводимого списка целых чисел. Результат выведите в виде списка чисел одну строку через пробел.
number_lst = list(map(int, input().split())) # Записываю данные в список
count = 1 # Создаю счётчик для того чтобы повторно не повторять уже обработанные индексы
#print(number_lst)
for index_1 in range(0, len(number_lst)): # Беру первое число
for index_2 in range(count, len(number_lst)): # Беру второе число
number_1 = number_lst[index_1] # Сохраняю первое число
number_2 = number_lst[index_2] # Сохраняю второе число
# Сравнение можно было производить if number_lst[index_1] > [index_2]
if number_1 > number_2: # Если number_1 меньше number_2
number_mid = number_lst[index_1] # Сохраняю первое число в промежуточную переменную
number_lst[index_1] = number_lst[index_2] # Заменяю число в списке на меньшее
number_lst[index_2] = number_mid # Переставляю большее число для дальнейшей проверки
# number_lst[index_1], number_lst[index_2] = number_lst[index_2], number_lst[index_1] # Короткий способ замены значений
count += 1 # Увеличиваю счетчик на 1 при каждой итерации чтобы не проверять уже замененные значения
print(*number_lst) # Вывожу результат в консоль
Вводится список целых чисел в одну строку через пробел. Необходимо выполнить его сортировку по возрастанию (неубыванию) методом всплывающего пузырька. Идея алгоритма проста и показана на рисунке ниже.
При первом проходе перебираем все соседние пары элементов и если значение предыдущего элемента (слева) больше значения следующего (справа), то они меняются местами. (На рисунке 3 и 2 меняются местами). Следующая пара — это 3 и 6. Они уже выстроены по возрастанию, поэтому ничего не делаем и переходим к следующей паре 6 и -1. Меняем значения местами и видим, что на последнем месте находится максимальное значение 6, что нам и нужно.
При втором проходе делаем все то же самое, но доходим до предпоследнего элемента, так как последнее значение 6 уже отсортировано. На третьем проходе исключаем уже последние два элемента и так далее. То есть, в этом алгоритме достаточно сделать N-1 проходов, где N — длина списка.
Вот идея алгоритма сортировки всплывающего пузырька. Реализуйте его для вводимого списка целых чисел. Результат выведите в виде списка чисел одну строку через пробел.
number_lst = list(map(int, input().split())) # Записываю данные в список
count = 0 # Создаю счетчик чтоб проверять два рядом стоящих числа
for index in range(0, len(number_lst)): # Это цикл задает число проходов по списку
count = 0 # Каждую новую итерация я обнуляю счетчик для прохода с 0 элемента цикла
for index_2 in range(1, len(number_lst)): # Каждую новую итерация я обнуляю счетчик для прохода с 0 элемента цикла
# number_1 = number_lst[count] # Сохраняю первое число
# number_2 = number_lst[index_2] # Сохраняю второе число
# if number_1 > number_2: # Если number_1 меньше number_2
if number_lst[count] > number_lst[index_2]: # Если первое значение больше второго
number_lst[count], number_lst[index_2] = number_lst[index_2], number_lst[count] # Меняем значения местами
count += 1 # Увеличиваю счетчик на 1 при каждой итерации чтобы не проверять уже замененные значения
print(*number_lst) # Вывожу результат в консоль
В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. Вводится натуральное число n. Как наименьшим количеством таких денежных купюр можно выплатить сумму n? Вывести на экран список купюр для формирования суммы n (в одну строчку через пробел, начиная с наибольшей и заканчивая наименьшей). Предполагается, что имеется достаточно большое количество купюр всех достоинств.
n = int(input())
while n != 0:
for i in range(6, -1, -1): # идём в цикле от 2 ** 6 степени (64) до 2 ** 0 (1)
while n >= 2 ** i: # Пока n больше n ** i не переступаем в следующей цифры
n -= 2 ** i # вычитаем 2 ** i
print(2 ** i, end=' ') # печатаем 2 ** I и так по кругу. Если n не больше 2 ** i, то переходим к следующей цифре. Уже 2 ** 5
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
Понравилась статья? Поделиться с друзьями:
Подписаться
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
wpDiscuz
0
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x