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-строки. Подробнее - см. лекции и рекомендации к вводу-выводу.
Ответ:
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. Элемент геометрической прогрессии
Примечания:
Прогрессия возрастающая, то есть: 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)
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