Решение модуля 7.9 из курса «Поколение python: курс для начинающих»

Решение на питоне заданий из модуля 7.9 с сайта stepik.org из курса «Поколение python: курс для начинающих». Предыдущий модуль 7.8.

Численный треугольник 3
Дано натуральное число n. Напишите программу, которая печатает численный треугольник с высотой равной nn, в соответствии с примером:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести треугольник в соответствии с условием.
Примечание. Используйте вложенный цикл for.

num = int(input())             # Определение высоты массива
count = 0                      # Порядковый номер цифры = число в массиве
for y in range(1, num + 1):    # Первый цикл высоты массива
    for x in range(y):         # Второй цикл длины массива 
        count += 1             # увеличиваем счетчик
        print(count, end=' ')  # Вывод текущего числа и в конце пробел
    print()                    # Переход к новой строке 

Численный треугольник 4
Дано натуральное число n. Напишите программу, которая печатает численный треугольник с высотой равной nn, в соответствии с примером:
1
121
12321
1234321
123454321

Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести треугольник в соответствии с условием.
Примечание. Используйте вложенный питон цикл for.

num = int(input())

for i in range(1, num + 1):   # цикл отвечающий за количество рядов
    count = 0                 # счетчик для ряда, при каждом новом цикле обнуляется
    for j in range(i):        # 1й вложенный 
        count += 1            # увеличиваем цифру в ряду
        print(count, end='')  # вывод на печать без пробелов
    for k in range(i, 1, -1): # 2й вложенный 
        count -= 1            # уменьшаем цифру в ряду
        print(count, end='')  # вывод на печать без пробелов
    print()                   # переход на новую строку

Делители-1 ?️
На вход программе подается два натуральных числа a и b (a < b). Напишите программу, которая находит натуральное число из отрезка [a;b] с максимальной суммой делителей.
Формат входных данных
На вход программе подаются два числа, каждое на отдельной строке.
Формат выходных данных
Программа на python должна вывести два числа на одной строке, разделенных пробелом: число с максимальной суммой делителей и сумму его делителей.
Примечание. Если таких чисел несколько, то выведите наибольшее из них.

a , b = int(input()), int(input())
total_maximum = 0                    # сумма делителей
digit = 0                            # число с максимальной суммой делителей

for i in range(a, b + 1):             # цикл перебирающий все числа от a до b включительно
    maximum = 0                       # обнуление суммы делителей, для нового цикла
    for j in range(1, i + 1):         # проверяем все числа от 1 до числа не превышающего проверяемое
        if i % j == 0:                # проверка на деление без остатка
            maximum += j              # суммируем делители
        if maximum >= total_maximum:  # если сумма делителей больше max суммы делителей
            total_maximum = maximum   # записываем в переменную максимальную
            digit = j
print(digit, total_maximum)           # вывод 

Делители-2
На вход программе подается натуральное число n. Напишите программу, выводящую графическое изображение делимости чисел от 1 до n включительно. В каждой строке надо напечатать очередное число и столько символов «+», сколько делителей у этого числа.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести графическое изображение чисел от 1 до n, каждое на отдельной строке.

n = int(input())

for i in range(1, n+1):        # циклом перебираем все числа от 1 до n включительно
    print(i, end = '')         # вывод текущего числа
    for j in range(1, i+1):    # цикл поиска делителя 
        if i % j == 0:         # если число делится без остатка
            print('+', end='') # то печатаем + без пробела
    print()                    # переход на новую строку

Цифровой корень
На вход программе подается натуральное число n. Напишите программу, которая находит цифровой корень данного числа. Цифровой корень числа n получается следующим образом: если сложить все цифры этого числа, затем все цифры найденной суммы и повторить этот процесс, то в результате будет получено однозначное число (цифра), которое и называется цифровым корнем данного числа.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести цифровой корень введенного числа.
Примечание. Используйте вложенные циклы while.

n=int(input())      # ввод числа

while n>9:          # до тех пор, пока в числе n не останется одна цифраа           
    s = 0    
    while (n > 0):
        last_digit = n % 10  # получить последнюю цифру
        s += last_digit      # к числу прибавляем последнюю цифру 
        n = n // 10          # удалить последнюю цифру из числа
    n = s
    
print(n)

Сумма факториалов
Дано натуральное число nn. Напишите программу, которая выводит значение суммы 1!+2!+3!+…+n!.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести значение суммы 1!+2!+3!+…+n!.
Примечание 1. Факториалом натурального числа nn, называется произведение всех натуральных чисел от 1 до n, то есть n!=1⋅2⋅3⋅…⋅n
Примечание 2. Задачу можно решить без вложенного цикла. Напишите две версии программы =)

num = int(input())           # кол-во факториалов
total = 0                    # сумма факториалов
factorial = 1                # вычисляемый факториал

for i in range(1, num+1):    # перебираем факториалы
    for j in range(1, i+1):  # вычисляем каждый факториал
        factorial *= j       # вычисляем факториал
    total += factorial       # Суммируем факториалы чисел.
    factorial = 1            # "обнуляем факториал"
print(total)

Простые числа
На вход программе подается два натуральных числа a и b (a < b). Напишите программу, которая находит все простые числа от a до b включительно.
Формат входных данных
На вход программе подаются два числа, каждое на отдельной строке.
Формат выходных данных
Программа должна вывести все простые числа от aa до b включительно, каждое на отдельной строке.
Примечание. Число 1 простым не является.

a, b, = int(input()), int(input())
for i in range(a, b + 1):
    if i == 1:                # 1 не является простым числом
        continue              # пропускаем цикл
    for j in range(2, i):     # перебираем делители от 2 до i  
        if i % j == 0:        # если делится без остатка, то оно не простое
            break             # завершаем вложенный цикл
    else:
        print(i)

Ответы на модуль 7.9 выставлены для самопроверки на питоне. Найти оригинальный курс «Поколение python» можно на платформе stepik.org.

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

6 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Лилия
Лилия
3 месяцев назад

Второй вариант решения с факториалом.
from math import*
n = int(input())
x = 0
for i in range(1, n+1):
x+=factorial(i)
print(x)

A
A
6 месяцев назад

Решение задачи с треугольником (123454321) в рамках темы корректнее будет выглядеть вот так:
n=int(input())
for i in range (1, n+1):
for j in range (i):
print(j+1, end=»»)
for k in range (j,0,-1):
print(k, end = «»)
print()

Нарек
Нарек
1 год назад

У вас небольшая ошибка в задаче Делители-1
Вы не учли примечание: «Если таких чисел несколько, то выведите наибольшее из них.»
Для этого нужно поменять условие:
if maximum > total_maximum
на
if maximum >= total_maximum

Стасяо сан
Стасяо сан
1 год назад

Спасибо! ;-) :) а когда будут новые темы. 9.2, 9.3 и так далее?

6
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x