Найти в Дзене
Варечка Окаянная

Python МГУ МФК часть 4 осень 2023

python 2023 a 4 Числовые данные Всем привет! Я тут подумала хорошо будет поделиться своими решениями по питону! Пожалуйста подпишитесь на мой канал про мою жизнь в МГУ "Варечка Окаянная"))) Перевести число из двоичной системы счисления в десятичную. Формат ввода:
s — число в двоичном представлении, записанное при помощи цифр 0 и 1, длиной не более 8 символов.
Формат вывода:
Число a (0 ≤ a ≤ 255) в десятичном представлении. Ответ: s = input()
decimal_number = int(s, 2)
if 0 <= decimal_number <= 255:
print(decimal_number)
else:
print() Примечания:
В данной задаче подразумевается ввод со стандартного потока ввода (с клавиатуры) или из файла input.txt! (см. рекомендации к вводу-выводу).
Гарантируется, что ответ существует, то есть деление на 0 не происходит.
Не забывайте, что один вызов input() считывает только одну строку. По условию, входные данные вводятся не в одну строку, а по 2 числа в каждой строке. Т.е. нужно считать 3 строки.
Можно построить объект Fraction, передав в н
Оглавление

python 2023 a 4 Числовые данные

Введение.

Всем привет! Я тут подумала хорошо будет поделиться своими решениями по питону! Пожалуйста подпишитесь на мой канал про мою жизнь в МГУ "Варечка Окаянная")))

1. Перевод из двоичной системы счисления в десятичную

Перевести число из двоичной системы счисления в десятичную. Формат ввода:
s — число в двоичном представлении, записанное при помощи цифр 0 и 1, длиной не более 8 символов.
Формат вывода:
Число a (0 ≤ a ≤ 255) в десятичном представлении.

Ответ:

s = input()
decimal_number = int(s, 2)

if 0 <= decimal_number <= 255:
print(decimal_number)
else:
print()

2. Вычисление дроби

Примечания:
В данной задаче подразумевается ввод со стандартного потока ввода (с клавиатуры) или из файла input.txt! (см. рекомендации к вводу-выводу).
Гарантируется, что ответ существует, то есть деление на 0 не происходит.
Не забывайте, что один вызов input() считывает только одну строку. По условию, входные данные вводятся не в одну строку, а по 2 числа в каждой строке. Т.е. нужно считать 3 строки.
Можно построить объект Fraction, передав в него либо пару чисел (Fraction(1, 3)), либо строковое представление дроби, где числитель и знаменатель разделены '/' (Fraction('3/7')).
В данной задаче обязательно использовать модуль fractions! От этого зависит точность вычислений, соответственно, результат, выводимый в качестве ответа.
Для форматированного вывода можно использовать так называемые f-строки. Подробнее - см. лекции и рекомендации к вводу-выводу.

-2

Ответ:

from fractions import Fraction

an, ad = map(int, input().split())
bn, bd = map(int, input().split())
cn, cd = map(int, input().split())

a = Fraction(an, ad)
b = Fraction(bn, bd)
c = Fraction(cn, cd)

result = b/a + b/(a+c) - c/(c-a)

formatted_result = "{:.4f}".format(float(result))
print(formatted_result)

3. Сумма последовательности чисел

Вычислить сумму последовательности целых чисел, вводимых пользователем с клавиатуры, которая завершается нулём. Формат ввода:
Построчно вводятся целые числа. Последовательность заканчивается нулем.
Формат вывода:
Вывести 2 числа через пробел: количество чисел (не считая 0) и сумму чисел.

Примечания:
Обратите внимание на Пример 2!
Используйте цикл while.
Не забывайте, что входная последовательность может быть пустой.
Во входных данных могут быть и отрицательные числа.

Ответ:

total_sum = 0
count = 0

while True:
num = int(input())

if num == 0:
break

total_sum += num
count += 1

print(count, total_sum)

4. Элемент геометрической прогрессии

Геометрическая прогрессия

-3

Примечания:
Прогрессия возрастающая, то есть: q > 1.
b1 > 0.
В условии не сказано, что входные данные - целые числа. Значит, все числа могут быть дробными. Для преобразования таких строк в число следует использовать float() (а не int()).
Входные данные вводятся в одной строке.
В данной задаче можно обойтись без округления.
Обратите внимание, что в задаче требуется найти номер n, а не само значение bn.

Ответ:

b1, q, a = map(float, input().split())

n = 0
bn = b1

while bn <= a:
n += 1
bn = b1 * (q ** (n - 1))

print(n)

5. Банковский вклад

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

-4

Таблица CSV, состоящая из 3-х столбцов с названиями: "Месяц", "Сумма на вкладе", "Начисление"; Необходимо заполнить таблицу соответствующими величинами (см. примечание) с точностью до 2-х знаков после запятой.

Примечания:
Обратите внимание, что при записи в output.csv разделителем служит только запятая без пробелов и прочих символов. В качестве символа завершения строки используется символ '\textbackslash n'. В качестве разделителя для целой и дробной части вещественного числа используется '.'.
Процентная ставка может быть вещественной.
Обратите внимание, что период вводится в годах, в таблицу же нужно выводить начисления за каждый месяц!
Ставка также вводится за год и в процентах. Поэтому для удобства можно посчитать дробное значение ставки за месяц: rate_month = rate / 12.0 / 100.0.
В задаче можно пользоваться только теми библиотеками и средствами, которые были изучены на лекции.
Проверяющая система сравнивает файл, который получается у Вас, с эталонным файлом, который получается после работы верного решения. И сравнение это происходит посимвольно. Т.е. если хоть в каком-то символе будет различие, то решение не засчитается, к сожалению. Поэтому проверяйте корректность названий колонок!
Для округления в этой задаче не рекомендуется использовать round(). Потому что он не гарантирует вывод двух знаков после запятой (т.е. число 1.5 выведется как «1.5» - а нужно чтобы вывелось «1.50»). Тестовая система сравнивает Ваш результат с эталонным посимвольно. Поэтому, если хоть в каком-то символе будет различие - решение не засчитывается. Лучше использовать форматный вывод (f-строки). Подробнее - см. рекомендации к вводу-выводу.
Обратите внимание, что ставку нужно рассчитывать ровно на тот период, который указывается во входных данных (а не всегда на 24 месяца, как в примере).

Ответ:

import csv
amount, period, rate = map(float, input().split())
data = []
period = int(period)
monthly_rate = rate / 12.0 / 100
for month in range(1, period * 12 + 1):
interest = amount * monthly_rate
amount += interest
data.append([month, '{:.2f}'.format(amount), '{:.2f}'.format(interest)])
with open("output.csv", "w", newline="") as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(["Месяц", "Сумма на вкладе", "Начисление"])
csvwriter.writerows(data)

3. Сумма последовательности чисел

Вычислить сумму последовательности целых чисел, вводимых пользователем с клавиатуры, которая завершается нулём. Формат ввода Построчно вводятся целые числа. Последовательность заканчивается нулем. Формат вывода Вывести 2 числа через пробел: количество чисел (не считая 0) и сумму чисел. Примечания Обратите внимание на Пример 2! Используйте цикл while. Не забывайте, что входная последовательность может быть пустой. Во входных данных могут быть и отрицательные числа.

Ответ:

total_sum = 0
count = 0

while True:
num = int(input())

if num == 0:
break

total_sum += num
count += 1

print(count, total_sum)

4. Элемент геометрической прогрессии

Геометрическая прогрессия

Примечания\ Прогрессия возрастающая, то есть: q > 1.
b1 > 0.
В условии не сказано, что входные данные - целые числа. Значит, все числа могут быть дробными. Для преобразования таких строк в число следует использовать float() (а не int()).
Входные данные вводятся в одной строке.
В данной задаче можно обойтись без округления.
Обратите внимание, что в задаче требуется найти номер n, а не само значение bn.

Ответ:

b1, q, a = map(float, input().split())

n = 0
bn = b1

while bn <= a:
n += 1
bn = b1 * (q ** (n - 1))

print(n)

5. Банковский вклад

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

Таблица CSV, состоящая из 3-х столбцов с названиями: "Месяц", "Сумма на вкладе", "Начисление"; Необходимо заполнить таблицу соответствующими величинами (см. примечание) с точностью до 2-х знаков после запятой.

Примечания:
Обратите внимание, что при записи в output.csv разделителем служит только запятая без пробелов и прочих символов. В качестве символа завершения строки используется символ '\textbackslash n'. В качестве разделителя для целой и дробной части вещественного числа используется '.'.
Процентная ставка может быть вещественной.
Обратите внимание, что период вводится в годах, в таблицу же нужно выводить начисления за каждый месяц!
Ставка также вводится за год и в процентах. Поэтому для удобства можно посчитать дробное значение ставки за месяц: rate_month = rate / 12.0 / 100.0.
В задаче можно пользоваться только теми библиотеками и средствами, которые были изучены на лекции.
Проверяющая система сравнивает файл, который получается у Вас, с эталонным файлом, который получается после работы верного решения. И сравнение это происходит посимвольно. Т.е. если хоть в каком-то символе будет различие, то решение не засчитается, к сожалению. Поэтому проверяйте корректность названий колонок!
Для округления в этой задаче не рекомендуется использовать round(). Потому что он не гарантирует вывод двух знаков после запятой (т.е. число 1.5 выведется как «1.5» - а нужно чтобы вывелось «1.50»). Тестовая система сравнивает Ваш результат с эталонным посимвольно. Поэтому, если хоть в каком-то символе будет различие - решение не засчитывается. Лучше использовать форматный вывод (f-строки). Подробнее - см. рекомендации к вводу-выводу.
Обратите внимание, что ставку нужно рассчитывать ровно на тот период, который указывается во входных данных (а не всегда на 24 месяца, как в примере).

Ответ:

import csv
amount, period, rate = map(float, input().split())
data = []
period = int(period)
monthly_rate = rate / 12.0 / 100
for month in range(1, period * 12 + 1):
interest = amount * monthly_rate
amount += interest
data.append([month, '{:.2f}'.format(amount), '{:.2f}'.format(interest)])
with open("output.csv", "w", newline="") as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(["Месяц", "Сумма на вкладе", "Начисление"])
csvwriter.writerows(data)

Спасибо!

Телеграмм Свалка астронома Ai 🦄 MSU

Телеграмм Варечкин Блокнот 🌸 MSU

ВК Школа https://vk.com/mgu_gdz Физиув UwU

Дзен https://dzen.ru/varechka_uni_physics

-5