Arnaudding001's picture
Update app.py
e98e104
import gradio as gr
def convert_to_french_letters(number):
# Define lists of French words for numbers
units = ['', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf']
tens = ['', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingt', 'quatre-vingt-dix']
# Define special cases for 70, 80, and 90
special_tens = {70: 'soixante-dix', 80: 'quatre-vingt', 90: 'quatre-vingt-dix'}
# Handle special cases
if number in special_tens:
return special_tens[number]
# Extract digits from number
billions = number // 1000000000
millions = (number // 1000000) % 1000
thousands = (number // 1000) % 1000
hundreds = (number // 100) % 10
tens_and_units = number % 100
# Convert digits to words
words = []
if billions > 0:
if billions == 1:
words.append('un milliard')
else:
words.append(convert_to_french_letters(billions) + ' milliards')
if millions > 0:
if millions == 1:
words.append('un million')
else:
words.append(convert_to_french_letters(millions) + ' millions')
if thousands > 0:
if thousands == 1:
words.append('mille')
else:
words.append(convert_to_french_letters(thousands) + ' mille')
if hundreds > 0:
if hundreds == 1:
words.append('cent')
else:
words.append(units[int(hundreds)] + ' cent')
if tens_and_units > 0:
if tens_and_units < 10:
words.append(units[int(tens_and_units)])
elif tens_and_units < 20:
words.append('dix-' + units[int(tens_and_units-10)])
else:
tens_digit = tens[int(tens_and_units / 10)]
units_digit = units[int(tens_and_units % 10)]
if tens_digit == 'vingt' and units_digit == 'un':
tens_digit = 'vingt-et-un'
units_digit = ''
words.append(tens_digit + '-' + units_digit)
# Join words and return result
return ' '.join(words)
inputs = gr.inputs.Number(label="Number to convert")
outputs = gr.outputs.Textbox(label="Result")
title = "Number to French Letters Converter"
description = "A program that converts numbers to their French letter equivalents"
examples = [[25230], [1000000000], [1234567890]]
iface = gr.Interface(fn=convert_to_french_letters, inputs=inputs, outputs=outputs, title=title, description=description, examples=examples)
iface.launch()