import argparse def main(): """ Main function Returns: """ args = parse_arguments() try: result = convert(args.amount, args.from_unit.upper(), args.to_unit.upper()) print(f"{args.amount} {args.from_unit.upper()} = {result:.6f} {args.to_unit.upper()}") except ValueError as e: print(e) def parse_arguments(): """ Parse the command line arguments. Returns: The parsed arguments. """ parser = argparse.ArgumentParser( description='Convert an amount between various cryptocurrencies and CHF.') parser.add_argument('amount', type=float, nargs='?', help='The amount to be converted.') parser.add_argument('from_unit', nargs='?', help='The unit of the input amount.') parser.add_argument('to_unit', nargs='?', help='The unit of the desired output.') parser.add_argument('-a', '--amount', type=float, required=False, help='The amount to be converted.') parser.add_argument('-f', '--from', dest='from_unit', default='CHF', help='The unit of the input amount. Default is "CHF".') parser.add_argument('-t', '--to', dest='to_unit', default='CHF', help='The unit of the desired output. Default is "CHF".') args = parser.parse_args() return args def convert(amount, from_unit, to_unit): """ Convert an amount between various cryptocurrencies and CHF. Args: amount: from_unit: to_unit: Returns: The converted amount. """ # Exchange rates relative to CHF exchange_rates = { 'CHF': 1.00, 'BTC': 97560.753, 'ETH': 3078.24, # Add more cryptocurrencies and their rates to CHF as needed } # Check if the units are in the exchange rates dictionary if from_unit not in exchange_rates: raise ValueError(f'Unknown currency: {from_unit}') if to_unit not in exchange_rates: raise ValueError(f'Unknown currency: {to_unit}') # Convert amount to CHF amount_in_chf = amount * exchange_rates[from_unit] # Convert CHF to target currency converted_amount = amount_in_chf / exchange_rates[to_unit] return converted_amount if __name__ == "__main__": main()