Задача 9. Пирамидка 2

Напишите программу, которая получает на вход количество уровней пирамиды и выводит их на экран.

Задача 9. Пирамидка 2

Решение:

height = int(input('Количество уровней пирамиды: '))
number = 1

for row in range(1, height + 1):
  print('\t' * (height - row), end = '')
  for col in range(row):
    print(number, end = '')
    number += 2
    print('\t' * 2, end = '')
  print()


И ещё один вариант:

height = int(input('Количество уровней пирамиды: '))
lend = len(str(height * (height + 1) // 2 - 1)) + 2
lens = 2 * height * (lend - 1) - lend

for i in range(height) :
  a = (i + 1) * i + 1
  m = range(a, a + 2 * (i + 1) , 2)
  tmp = (' ' * lend).join(list(map(str, m)))
  print('{:^{r}}'.format(tmp, r = str(lens)))


Задача 8. Пирамидка

Задача 8. Пирамидка

Напишите программу, которая выводит на экран равнобедренный треугольник (пирамидку), заполненный символами хэштега «#». Пусть высота пирамиды вводится пользователем.

Задача 8. Пирамидка


Подсказка: вспомните, как выводился колонтитул вида ——!!!!!!—— в прошлом модуле.

Решение:

height = int(input('Введите высоту пирамиды: '))
aggregate = 1

for i in range(height):
  print(' ' * (height - 1 - i), '#' * aggregate, sep = '')
  aggregate += 2


Как можно отблагодарить:

  • Оформить удобную для вас подписку на Boosty.to
  • Разово поддержать через DonationAlerts

Задача 7. Наибольшая сумма цифр

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

Решение:

seq_num = int(input('Введите количество чисел: '))
summ = 0
max_num = 0
max_sum = 0

for i in range(1, seq_num + 1):
  query = 'Введите ' + str(i) + ' число: '
  number = int(input(query))
  backup_num = number
  while number > 0:
    summ += number % 10
    number //= 10
    if summ > max_sum:
      max_sum = summ
      max_num = backup_num
  summ = 0

print('Число', max_num, 'имеет максимальную сумму цифр:', max_sum)


Задача 6. Сумма факториалов

Напишите программу, которая запрашивает у пользователя число N и находит сумму факториалов 1! + 2! + 3! +… + N!

Решение:

end = int(input('До какого числа считать факториал: '))
partial_factorial = 1
partial_sum = 0

for i in range(1, end + 1):
  partial_factorial *= i
  partial_sum += partial_factorial

print(f'Сумма факториала числа {end} равна {partial_sum}.')


Задача 5. Простые числа

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

Решение:

seq_num = int(input('Сколько чисел будет всего: '))
count = 0

for num in range(1, seq_num + 1):
  number = int(input(f'Введите {num} число: '))
  prime = True
  for i in range(2, num):
    if (num % i == 0):
      prime = False
  if prime:
    count += 1
    print('Это простое число:', number, end = '\n\n')

print()
print('Простых чисел было:', count)


Задача 4. Крест

Напишите программу, которая выводит на экран крест из символов “^”.

Задача 4. Крест


(Символы выводятся по диагоналям воображаемого квадрата.)

Решение:

size = int(input('Введите размер квадрата: '))

for row in range(size):
  for col in range(size):
    if col == row or col == -row + size - 1:
      print('^', end = '')
    else:
      print(' ', end = '')
  print()


Задача 3. Рамка

Напишите программу, которая рисует с помощью символьной графики прямоугольную рамку. Для вертикальных линий используйте символ вертикального штриха “|”, а для горизонтальных — дефис “-”. Пусть пользователь вводит ширину и высоту рамки.

Задача 3. Рамка

Решение:

width = int(input('Введите ширину: ')) - 2
height = int(input('Введите высоту: '))
line = ''
simbol = ''

for row in range(1, height + 1):
  if (row == 1 or row == height):
    simbol = '-'
  else:
    simbol = ' '
  line = '|' + (simbol * width) + '|'
  print(line)


Задача 2. Лестница

Пользователь вводит число N. Напишите программу, которая выводит такую “лесенку” из чисел:

Введите число: 5
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5

Решение:

end = int(input('Введите число: ')) + 1
line = '';

for row in range(end):
  line = str(row) + '\t'
  print(line * row)


Задача 1. Тестовое задание

Степан пришёл устраиваться на работу, где ему дали тестовое задание: проанализировать такую таблицу, понять как она строится и написать программу для вывода её на экран.

0 2 4 6  8  10
1 3 5 7  9  11
2 4 6 8  10 12
3 5 7 9  11 13
4 6 8 10 12 14
5 7 9 11 13 15

Помогите Степану реализовать такую программу. Подсказка: номера столбцов. А ещё не забудьте про литерал \t для табуляции.

Решение:

for row in range(6):
  for col in range(6):
    print(row + col * 2, end='\t')
  print()


Lightshot - отличное решение для создания скриншотов

Lightshot — отличное решение для создания скриншотов

Lightshot — программа захвата экрана для Windows и macOS, работает похожим на ножницы из Windows Vista и Windows 7 образом, предоставляя дополнительные возможности по редактированию изображения и публикации в Интернете.

Программа заменяет обработчик кнопки PrtScr по умолчанию и перехватывает её для своего запуска. Пользователь может кликнуть и выделить интересующую его область экрана.

После того как область выбрана появляется набор кнопок для совершения различных действий с картинкой. Допустимые действия включают в себя редактирование, сохранение, копирование в буфер обмена и публикацию в Интернет включая социальные сети. Опубликованные картинки будут располагаться по адресу prnt.sc. У пользователя есть возможность зарегистрироваться на сайте prntscr.com и сохранять историю своих скриншотов.

Lightshot также поддерживает набор сочетаний клавиш для всех операций. Наиболее удобными являются стандартные Ctrl+C для копирования в буфер и Ctrl+S для сохранения.

Позволяет осуществлять поиск визуально похожих картинок через сервис Google.

Существует в версиях для работы как приложение Windows, приложение macOS и плагин для Mozilla FirefoxInternet Explorer и Google Chrome.

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

Lightshot - отличное решение для создания скриншотов

Скачать программу с официального сайта.

Задача 10. Метод бутерброда

Секретное агентство «Super-Secret-no» решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала буквы слова нумеруются в таком порядке: первая буква получает номер 1, последняя буква — номер 2, вторая – номер 3, предпоследняя – номер 4, потом третья … и так для всех букв.
Затем все буквы записываются в шифр в порядке своих номеров.

Например, слово «sandwich» зашифруется в «shacnidw».
К сожалению, программист «Super-Secret-no», написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.

Пример:
Введите зашифрованное сообщение: shacnidw
Расшифрованное сообщение: sandwich

          1   3   5   7   8   6   4   2
 Слово: | s | a | n | d | w | i | c | h |
 Шифр:  | s | h | a | c | n | i | d | w |

Решение:

text = input('Введите зашифрованое слово: ')
count = 0
left_part = ''
right_part = ''

for i in text:
  count += 1
  if (count % 2 == 1):
    left_part += i
  else:
    right_part = i + right_part

print('Расшифрованное сообщение:', left_part + right_part)


Задача 9. Коровы

Для коров есть 10 стойл. В каждом стойле разные условия для животных, поэтому и молока они дают по-разному. В первом стойле производят 2 литра в день, во втором 4, # в третьем — 6, потом 8, 10, 12, 14, 16, 18, 20.
Но коровы стоят не во всех стойлах. Свободные и занятые обозначаются строкой из букв a и b, где a — свободное стойло, b — занятое.

Пользователь вводит строку из 10 символов a и b.
Необходимо определить, сколько в итоге будет произведено молока за день.

Решение:

stall = input('Введите размещение коров: ').lower()
count = 0
milk = 0

# На случай, если недопечатали или перепечатали
if len(stall) < 10:
  stall = stall.ljust(10, 'b')
elif len(stall) > 10:
  stall = stall[:10]

for i in stall:
  count += 1
  if i == 'a':
    milk = milk + count * 2
  else:
    milk = milk + count * 0

print('Всего литров молока за день:', milk)


Задача 8. Колонтитул

Нам нужно написать программу для печати важных объявлений. Сверху объявления должен располагаться вот такой колонтитул:
~~~~~~~~~~!!!!!!~~~~~~~~~~
Восклицательные знаки всегда располагаются по центру строки, причём в зависимости от важности объявления количество восклицательных знаков может быть разным.

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

Решение:

length = int(input('Введите длину колонтитула в символах: '))
mark = int(input('Введите количество восклицательных знаков: '))
tilde = (length - mark) // 2

if (length - mark) // 2 == 0:
  print('~' * tilde + '!' * mark + '~' * tilde)
else:
  print('~' * tilde + '!' * mark + '~' * (tilde + 1))


Задача 7. Великий и могучий

Паоло изучает русский язык: занимается по учебникам, читает книги, слушает музыку. Особенно Паоло понравилась книга “Преступление и наказание”. И ему стало интересно, какое можно найти самое длинное слово в этой книге, чтобы потом сравнить его с аналогом на своём языке.

Напишите программу, которая получает на вход текст и находит длину самого длинного слова в нём. Слова в тексте разделяются одним пробелом.

Пример:
Введите текст: Меня зовут Петр
Длина самого длинного слова: 5

Решение:

# Не учитываются другие слова с такой же длинной, только первое нахождение
message = input('Введите текст: ')
count = 0
count_max = 0
long_word = 0
word = ''

for i in message:
  if i != " ":
    count += 1
    word += i
  else:
    count = 0
    word = ''
  if count > count_max:
    count_max = count
    long_word = word

print('Длина самого длинного слова {0} и это слово {1}.'.format(count_max, long_word))


Задача 6. Спецшифр

Два сотрудника спецслужб переписываются необычным шифром. Каждую букву они шифруют в виде строки, внутри которой есть длинная последовательность букв “s”, а длина самой длинной — это и есть номер буквы алфавита, которую хотят отправить.

Напишите программу, которая получает на вход строку, подсчитывает в ней самую длинную последовательность подряд идущих букв “s” и выводит ответ на экран.

Пример:
Введите строку: ssbbbsssbc
Самая длинная последовательность: 3

Решение:

message = input('Введите сообщение: ').lower()
count_simbol = 0
count_max = 0

for i in message:
  if i == "s":
    count_simbol += 1
    if count_simbol > count_max:
      count_max = count_simbol
  else:
    count_simbol = 0

print(count_max)