Top.Mail.Ru
Ответы

Сделайте прогу на пайтоне Калькулятор дробей

Мне нужно срочно

По дате
По рейтингу
Аватар пользователя
Мудрец
9мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
 import math 
import cmath 
 
def add(x, y): return x + y 
def subtract(x, y): return x - y 
def multiply(x, y): return x * y 
def divide(x, y): 
    if y == 0: 
        return "Ошибка: Деление на ноль!" 
    return x / y 
def power(x, y): return x ** y 
def square_root(x): 
    if x < 0: 
        return "Ошибка: Негативный корень!" 
    return math.sqrt(x) 
 
def sin_function(angle): 
    """Вычисляет синус угла в градусах.""" 
    radians = math.radians(angle) 
    return math.sin(radians) 
 
def cos_function(angle): 
    """Вычисляет косинус угла в градусах.""" 
    radians = math.radians(angle) 
    return math.cos(radians) 
 
def complex_operations(): 
    real = float(input("Введите действительную часть комплексного числа: ")) 
    imag = float(input("Введите мнимую часть комплексного числа: ")) 
    z = complex(real, imag) 
     
    print(f"Комплексное число: {z}") 
    print(f"Модуль: {abs(z)}") 
    print(f"Аргумент: {cmath.phase(z)}") 
 
def trigonometric_functions(): 
    angle = float(input("Введите угол в градусах: ")) 
     
    print(f"Синус: {sin_function(angle)}") 
    print(f"Косинус: {cos_function(angle)}") 
    print(f"Тангенс: {math.tan(math.radians(angle))}") 
 
def get_number(prompt): 
    while True: 
        try: 
            return float(input(prompt)) 
        except ValueError: 
            print("Ошибка: Пожалуйста, введите корректное число.") 
 
def get_numbers(): 
    num1 = get_number("Введите первое число: ") 
    num2 = get_number("Введите второе число: ") 
    return num1, num2 
 
def format_result(result): 
    """Форматирует результат для вывода без .0 у целых чисел и с периодической дробью для деления.""" 
    if isinstance(result, str):  # Если результат - строка (например, ошибка) 
        return result 
    elif result.is_integer():  # Если число целое 
        return int(result) 
     
    # Проверяем на периодическую дробь (например, 0.3333...) 
    str_result = str(result) 
     
    if str_result.startswith('0.') and '3' in str_result[2:]: 
        count_threes = str_result[2:].count('3') 
        if count_threes > 5:  # Если больше 5 троек подряд 
            return f"{str_result[0]}.(3)" 
     
    return str_result 
 
def main(): 
    operations = { 
        '1': (add, "+"), 
        '2': (subtract, "-"), 
        '3': (multiply, "*"), 
        '4': (divide, "/"), 
        '5': (power, "^"), 
        '6': (square_root, "√"), 
        '7': (complex_operations, "Комплексные числа"), 
        '8': (trigonometric_functions, "Тригонометрические функции"), 
        '9': (sin_function, "Синус"), 
        '10': (cos_function, "Косинус"), 
        '11': (None, "Выход") 
    } 
 
    print("Добро пожаловать в калькулятор!") 
     
    while True: 
        print("\nВыберите операцию:") 
        for key in operations.keys(): 
            operation_symbol = operations[key][1] if operations[key][1] else key 
            print(f"{key}. {operation_symbol}") 
 
        choice = input("Введите номер операции (1-11): ") 
 
        if choice in operations: 
            if choice in ['1', '2', '3', '4', '5', '6']: 
                num1, num2 = get_numbers() 
                result = operations[choice][0](num1, num2) if choice != '6' else operations[choice][0](num1) 
                formatted_result = format_result(result) 
                print(f"Результат: {formatted_result}") 
            elif choice in ['9', '10']:  # Синус и косинус требуют только один аргумент 
                angle = get_number("Введите угол в градусах: ") 
                result = operations[choice][0](angle) 
                formatted_result = format_result(result) 
                 
Аватар пользователя
Просветленный
9мес

Программа: Калькулятор дробей
python
from fractions import Fraction

def print_menu():
print("Калькулятор дробей")
print("1. Сложение")
print("2. Вычитание")
print("3. Умножение")
print("4. Деление")
print("5. Выход")

def get_fraction(prompt):
while True:
try:
user_input = input(prompt)
return Fraction(user_input)
except ValueError:
print("Некорректный ввод. Пожалуйста, введите дробь в формате 'числитель/знаменатель' или целое число.")

def main():
while True:
print_menu()
choice = input("Выберите операцию (1-5): ")

if choice == '5':
print("Выход из программы.")
break

if choice in ['1', '2', '3', '4']:
frac1 = get_fraction("Введите первую дробь (например, 1/2): ")
frac2 = get_fraction("Введите вторую дробь (например, 3/4): ")

if choice == '1':
result = frac1 + frac2
operation = "Сложение"
elif choice == '2':
result = frac1 - frac2
operation = "Вычитание"
elif choice == '3':
result = frac1 * frac2
operation = "Умножение"
elif choice == '4':
result = frac1 / frac2
operation = "Деление"

print(f"{operation}: {frac1} и {frac2} = {result}")
else:
print("Некорректный выбор. Пожалуйста, выберите номер от 1 до 5.")

if __name__ == "__main__":
main()

Объяснение кода:
Импорт библиотеки: Мы используем модуль fractions для работы с дробями. Он автоматически упрощает дроби и обрабатывает арифметические операции.
Функция print_menu: Отображает меню с доступными операциями.
Функция get_fraction: Запрашивает у пользователя ввод дроби и обрабатывает возможные ошибки ввода.
Основная функция main:
Цикл позволяет пользователю выбирать операции до тех пор, пока он не решит выйти.
В зависимости от выбора выполняется соответствующая операция с введенными дробями.
Результат выводится на экран.
Как использовать:
Скопируйте код в файл с расширением .py, например, fraction_calculator.py.
Запустите программу с помощью Python: python fraction_calculator.py.
Следуйте инструкциям на экране для выполнения операций с дробями.
Этот калькулятор является базовым примером, и вы можете расширить его функциональность, добавив больше операций или улучшив интерфейс!